Simplicityの特徴 › フォーラム › テーマファイルのカスタマイズに関する質問など › サイドバーのスクロール追従領域の表示位置
- このトピックには5件の返信、2人の参加者があり、最後に
により1年、 8ヶ月前に更新されました。
-
投稿者投稿
-
-
2016年2月26日 10:31 PM #36909
Campout
ゲストこんばんは。いつも便利にテーマを使わせていただいております。
Simplicity 1.9.3安定版を使用しているのですが、カスタマイズしたときの対応方法がわからないため教えてください。
サイドバーの各ウィジェット間の余白を狭めようと、以下のように子テーマのstyle.cssに追記しました。
/* サイドバーウィジェットの余白を調整 */
#sidebar .widget {
margin-bottom: 10px;
}無事サイドバー内の余白を少しずつ狭めることが出来たのですが、スクロール追従領域を画面に表示させたときに表示位置が少し下にずれてしまいます。
親テーマのjavascript.jsを拝見すると、jQueryでstyleの動的な書き換えをしているようにみえました。
子テーマのスタイルシートにカスタマイズを入れるとbottomが予想よりも少し小さく算出されてしまうようなのです。子テーマ側のカスタマイズでスクロール追従領域の表示位置がずれないように表示する方法があれば教えてください。
-
2016年2月26日 11:02 PM #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;
});と書き換えるだけで行けたら良いんですが、スコープの問題で無理かも知れません。そうなるといろいろ面倒です。まぁちょっとやってみますが、今親テーマを動かせる環境がないので、実際に正しく動かせるかは試してみないとわかりません。
-
2016年2月26日 11:42 PM #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’
});}
これだとかなりソースがダサい感じですが、ざっと動作確認した感じ問題はなさそうなので、しばらくこれで運用してみます。
もし子テーマ側だけのカスタマイズで何か出来そうな妙案あればご教示ください。
-
2016年2月26日 11:51 PM #36912
Hidekichi
ゲスト今いじくってたら、side_top_marginを20ぐらいにしたらイケることが判明。まぁ引き続きスクリプトは見てみます。
side_top_margin = 20;
-
2016年2月27日 1:27 AM #36913
Hidekichi
ゲスト若干精度に問題がありますが、スクロールに追従するだけならこんな感じにも書けます。
サンプル: サイドバー追従簡易バージョン | codepen
#sidebarにpaddingやら背景色を入れた場合に備えて、それようの部分も加えましたが、背景色やボーダーがないなら必要ありません。
$(“#sidebar”).css({
“padding-bottom”: rst
});↑これ。
あとちょいちょい不必要なものも入ってます(笑)
-
2016年2月27日 7:01 PM #36949
わいひら
キーマスターこれだとかなりソースがダサい感じですが、ざっと動作確認した感じ問題はなさそうなので、しばらくこれで運用してみます。
元のソースがダメなので、そうなるのは仕方ないかもしれません。
javascript.jsの、直接数字を指定している部分は、HTML要素から計算によって割り出したいところです。
wrapperTop = sidebarHeight - wrapperHeight + 240;
var side_top_margin = 60;
ここら辺は、苦手で面倒くさいので、やる気が起きない^^;
-
-
投稿者投稿
- フォーラム「テーマファイルのカスタマイズに関する質問など」には新規投稿および返信を追加できません。