@Kortschot が提供したソリューションを何度も試しましたが、最終的にこのソリューションは私の状況には理想的ではないことが判明しました。
@Kortschotが提供するソリューションを使用するときの私の問題は次のとおりです。
- フローティングバーの状態が固定か非固定かで変わると、フローティングバーの幅が維持できなくなる
- すべてのプロセスを 1 つのスクリプトで実行できるようにしたいのですが、@Kortschot が提供するソリューションは適合しません。
これは、1つのスクリプトですべての作業を実行できる私のソリューションです(1.7+ jqueryを使用):
<script>
//浮动条设置(set the floating bar)
$( function(){
//add new .fixed style to the <head>
var css = '#floating_bar.fixed{position:fixed;top:1px;z-index:9999;}',
head = document.head || document.getElementsByTagName('head')[0],
style = document.createElement('style');
style.type = 'text/css';
if (style.styleSheet){ style.styleSheet.cssText = css; }
else { style.appendChild(document.createTextNode(css)); }
head.appendChild(style);
var menuOffset = $("#floating_bar")[0].offsetTop;
var menuWidth = document.getElementById("floating_bar").offsetWidth;
$(document).on("scroll", function(){
var docScroll = $(document).scrollTop();
if(docScroll >= menuOffset) {
$("#floating_bar").addClass("fixed");
//dynamically change the width of floating bar according to it's width of previous state
$("#floating_bar.fixed").width(menuWidth);
}else {
$("#floating_bar").removeClass("fixed");
}
});
});
</script>