JSによるWebフローティングウィンドウのスクロール(カスタマーサービスウィンドウに類似)
ここ数日ウェブページをして、1つのJS問題に出会って、トップページで1つの小さいウィンドウを実現して、フォームに従ってスクロールすることができて、しかも動態的です.私はJSにあまり精通していないので、苦労して研究して、今自分の心のままの所得を書いて、各位の博友と分かち合います:
まず思い浮かぶのはJSで実現することです.
1、IEブラウザでのサポートはあまりよくありません.特にIE 6では、
2、ダイナミック効果はありません.
したがって、JSを使用して、scrollの高さに基づいてdivのtop属性を動的に変更することしかできません.
1,まず上のcssのposition値をabsoluteに変更し,
2、次のコードを追加します.
ブラウザの違いでfm.style.top = hy+'px';後ろの+'px'は必ず持っていきますが、持っていなければIEで認識できますが、他の閲覧では具体的な高さは認識できません.次に、30ミリ秒おきに判定を実行するタイミング関数を設定します.しかしこのようにページの中で1つのタイミングの関数を设定して、いつも安心していないで、感じがよくなくて、(なぜか分からないで、また高い人に指导してもらいます..)次はJqueryを付けた書き方です.
本文はkevin's blogから出て、転載して出典を明記してください:http://blog.csdn.net/lzkkevin/article/details/6710335
まず思い浮かぶのはJSで実現することです.
.gmn_cart {
width: 130px;
z-index: 1;
right: 5px;
visibility: visible;
position:fixed;
top: 120px;
border: 1px solid #7CBB12;
}
positionの値をfixedに設定すると、FireFoxとchromeで絶対的な位置決めが実現され、フォームがスクロールするにつれて常に1つの位置にいるという欠点があります.1、IEブラウザでのサポートはあまりよくありません.特にIE 6では、
2、ダイナミック効果はありません.
したがって、JSを使用して、scrollの高さに基づいてdivのtop属性を動的に変更することしかできません.
1,まず上のcssのposition値をabsoluteに変更し,
2、次のコードを追加します.
var fm=document.getElementById("gmn_cart");
function moveCart(){
var hy = (document.documentElement.scrollTop || document.body.scrollTop)+120;
fm.style.top = hy+'px';
}
setInterval(moveCart(),30);
まずscrollTop、前documentを取得する.documentElement.scrollTopはIEブラウザでscroll方式を取得し、後者はdocument.body.scrollTopは他のブラウザで使われています.そしてfmを利用する.style.topはtopの値を変更します.ここで述べる必要がありますブラウザの違いでfm.style.top = hy+'px';後ろの+'px'は必ず持っていきますが、持っていなければIEで認識できますが、他の閲覧では具体的な高さは認識できません.次に、30ミリ秒おきに判定を実行するタイミング関数を設定します.しかしこのようにページの中で1つのタイミングの関数を设定して、いつも安心していないで、感じがよくなくて、(なぜか分からないで、また高い人に指导してもらいます..)次はJqueryを付けた書き方です.
var fm=document.getElementById("gmn_cart");
$(document).ready(function() {
$(window).scroll(function(){
$(".gmn_cart").stop();
$(".gmn_cart").animate({top:(document.documentElement.scrollTop || document.body.scrollTop)+120},100);
});
});
このようにすべてOKで、しかもスライド効果も...最初は入れなかった$(".gmn_cart").stop();
により、IEブラウザでのスライドが非常に遅くなります.のもともと、フォームのスクロールは何度もトリガーされたので、何度もanimate関数をトリガーしました.複数のスレッドが同時に同じリソースを占有すると、スレッドがブロックされるに違いありません.このように、前にstopを追加すると、動いているかどうかにかかわらず、先に停止してから、1つのスレッドだけが実行されることを保証します.このように见ると、JSは确かに多くの知识を含んでいる...膜拝中.本文はkevin's blogから出て、転載して出典を明記してください:http://blog.csdn.net/lzkkevin/article/details/6710335