0

私のHTMLは基本的に次のようになります。

<div id="#container">
  <div id="left_col">
    left stuff
  </div>
  <div id="middle_col">
    middle stuff
  </div>
  <div id="right_col">
     <div id="anchor"></div>
     <div id="floater>
       The problem div
     </div>
  </div>
</div>

一番右の列をセンタリングの一部として使用したくないため、コンテナー div は左に 82px プッシュされます (上に、left_col と middle_col のサイズのヘッダー ナビゲーション バーがあります)。

#container {
    width: 1124px;
    margin-left: auto;
    margin-right: auto;
    text-align: left;
    color: #656f79;
    position: relative;
    left: 82px;
}

#left_col {
    float:left;
    width: 410px;
    background-color: #fff;
    padding-bottom: 10px;
}

#middle_col {
    width: 545px;
    float: left;
}

#right_col {
    float: left;
    width: 154px;
    margin-left: 5px;
    position:relative;
}

#floater {
    width: 154px;
}

ページを下にスクロールするときに #floater div を所定の位置に保つために、次の JavaScript を使用しています。

var a = function() {
    var b = $(window).scrollTop();
    var d = $("#anchor").offset().top;
    var c = $("#floater");
    if (b > d) {
        c.css({position:"fixed",top:"10px"});
    } else {
        c.css({position:"absolute",top:""});
    }
};
$(window).scroll(a);
a();

私が抱えている問題は、WebKit ベースのブラウザーで、jQuery がフローター div の位置を修正すると、上から 10 ピクセルにとどまると、#container からの「左: 82px」がウィンドウから出て、#floater が 82 ピクセルジャンプすることです。左の方です。これは FF や IE では発生しません。誰もこれに対する解決策を知っていますか?

更新: 解決済み

この問題は、固定配置ではなく絶対配置を使用して解決しました。div#anchor の上部オフセットが $(window).scrollTop() より大きい場合、値 $(window).scrollTop() に基づいて div#floater の上部 CSS プロパティを設定するように JavaScript を変更しました。ものすごく単純。

したがって、a() 関数は次のようになります。

var a = function() {
    var b = $(window).scrollTop();
    var d = $("#anchor").offset().top;
    var c = $("#floater");
    if (b > d) {
        var t = b-200; //200px is the height of the header, I subtract to make it float near the top
        c.css({top:t+"px"});
    } else {
        c.css({top:""});
    }
};
4

0 に答える 0