サイドバーのスクロール追従領域の表示位置

Simplicityの特徴 フォーラム テーマファイルのカスタマイズに関する質問など サイドバーのスクロール追従領域の表示位置

  • このトピックには5件の返信、2人の参加者があり、最後ににより1年、 8ヶ月前に更新されました。
5件の返信スレッドを表示中
  • 投稿者
    投稿
    • #36909
      Campout
      ゲスト

      こんばんは。いつも便利にテーマを使わせていただいております。

      Simplicity 1.9.3安定版を使用しているのですが、カスタマイズしたときの対応方法がわからないため教えてください。

      サイドバーの各ウィジェット間の余白を狭めようと、以下のように子テーマのstyle.cssに追記しました。

      /* サイドバーウィジェットの余白を調整 */
      #sidebar .widget {
      margin-bottom: 10px;
      }

      無事サイドバー内の余白を少しずつ狭めることが出来たのですが、スクロール追従領域を画面に表示させたときに表示位置が少し下にずれてしまいます

      親テーマのjavascript.jsを拝見すると、jQueryでstyleの動的な書き換えをしているようにみえました。
      子テーマのスタイルシートにカスタマイズを入れるとbottomが予想よりも少し小さく算出されてしまうようなのです。

      子テーマ側のカスタマイズでスクロール追従領域の表示位置がずれないように表示する方法があれば教えてください。

      http://sgwu1.com/camp/

    • #36910
      Hidekichi
      ゲスト

      おそらくブログ村のウィジットというかブログパーツが読み込んだ時に#sidebarのheightが変わるために起こると思われます。
      サイドバースクロールの各値の計算を読み込んだ後行うかスクロール中に再計算させることで対応できるかと思います。

      ただこれをしようとすると大幅な改変をしないといけないんですが…。

      setInterval(function (){
      wrapperHeight = jQuery(‘#sidebar-scroll’).outerHeight();
      sidebarHeight = jQuery(‘#sidebar’).outerHeight();
      wrapperTop = sidebarHeight – wrapperHeight + 240;
      }, 2000);

      ここをon(“load scroll”,function(){})として組み込んで、スクロールの度に計算させるか、あるいはブログ村の読み込み後のclassの有無を調べてから追従処理をさせるかあるいは微調整させるなどをする必要があるかと思います。
      単純に、
      var
      wrapperHeight,
      sidebarHeight,
      wrapperTop;

      jQuery(window).on(“load scroll”, function(){
      wrapperHeight = jQuery(‘#sidebar-scroll’).outerHeight();
      sidebarHeight = jQuery(‘#sidebar’).outerHeight();
      wrapperTop = sidebarHeight – wrapperHeight + 240;
      });

      と書き換えるだけで行けたら良いんですが、スコープの問題で無理かも知れません。そうなるといろいろ面倒です。まぁちょっとやってみますが、今親テーマを動かせる環境がないので、実際に正しく動かせるかは試してみないとわかりません。

    • #36911
      Campout
      ゲスト

      Hidekichiさん

      アドバイスありがとうございます。

      javascript.jsに何かしら手を入れないと調整できなさそうであれば、ちょっと強引にサイズを指定して対応しようと思います。

      if (pos === ‘fixed’) {
      side.css({
      position: pos,
      top: ”,
      bottom: winHeight – wrapperHeight + 40,
      left: sideLeft – winLeft,
      margin: 0,
      marginBottom: ‘-‘+side_top_margin+’px’
      });

      }

      これだとかなりソースがダサい感じですが、ざっと動作確認した感じ問題はなさそうなので、しばらくこれで運用してみます。

      もし子テーマ側だけのカスタマイズで何か出来そうな妙案あればご教示ください。

    • #36912
      Hidekichi
      ゲスト

      今いじくってたら、side_top_marginを20ぐらいにしたらイケることが判明。まぁ引き続きスクリプトは見てみます。

      side_top_margin = 20;

    • #36913
      Hidekichi
      ゲスト

      若干精度に問題がありますが、スクロールに追従するだけならこんな感じにも書けます。

      サンプル: サイドバー追従簡易バージョン | codepen

      #sidebarにpaddingやら背景色を入れた場合に備えて、それようの部分も加えましたが、背景色やボーダーがないなら必要ありません。

      $(“#sidebar”).css({
      “padding-bottom”: rst
      });

      ↑これ。

      あとちょいちょい不必要なものも入ってます(笑)

    • #36949
      アバター画像わいひら
      キーマスター

      これだとかなりソースがダサい感じですが、ざっと動作確認した感じ問題はなさそうなので、しばらくこれで運用してみます。

      元のソースがダメなので、そうなるのは仕方ないかもしれません。

      javascript.jsの、直接数字を指定している部分は、HTML要素から計算によって割り出したいところです。

      wrapperTop = sidebarHeight - wrapperHeight + 240;

      var side_top_margin = 60;

      ここら辺は、苦手で面倒くさいので、やる気が起きない^^;

5件の返信スレッドを表示中
  • フォーラム「テーマファイルのカスタマイズに関する質問など」には新規投稿および返信を追加できません。
スポンサーリンク
アドセンス(大)
アドセンス(大)