- ベストアンサー
webページで、ページの一部を固定する方法
- webページで、特定の要素をスクロールせずに固定する方法について知りたいです。
- JavaScriptのonScrollイベントハンドラを使用して要素を固定する方法がありますが、カクカクした動きになってしまいます。
- 参考になるサイトや方法があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
【EPSON DIRECTのオンラインショッピングのページ】は、複雑な動きをしますが、 想像するに、現在のスクロール位置を判断して固定したり動くままにしたりしているのではないでしょうか。ならばその手前の段階で参考になりそうなページを見つけてみました。 ・ IE6でもスクロールしても動かないボックス http://www.stylish-style.com/csstec/ultimate/fixbox-ie6.html ・ 「擬似フレーム(疑似フレーム)」の作り方(IE6 にも対応、スタイルシート(CSS)、JavaScript使用) http://www.kuhp.kyoto-u.ac.jp/~diag_rad/web/p_frame.html
その他の回答 (1)
- auty
- ベストアンサー率58% (284/486)
詳しくは調べていませんが、ソースコードを見ると固定されている部分は、id="box"となっています。 <div id="box" class="btoPriceContainer"> また、jsファイルには ------------------------------------------------------------------------------- http://shop.epson.jp/eshop/script/bto/bto.js ------------------------------------------------------------------------------- 次の2箇所が見受けられます。 function JsFloat(){ var e=getE("box") var te=getE("boxTop") var be=getE("boxBottom") ... ctrl.onscroll=function(){ var t=ctrl.scrollTop var l=ctrl.scrollLeft var el=left-l var et var top=te.offsetTop+te.parentNode.offsetTop if(top>t+topMargin){ et=(top-t) }else if(t<be.offsetTop-e.offsetHeight){ et=topMargin }else{ et=(be.offsetTop-t-e.offsetHeight) } e.style.top=et+"px" e.style.left=el+"px" overlap() rect(t,l,et,el) return true } ctrl.onscroll() window.onresize=ctrl.onscroll window.onscroll=ctrl.onscroll と function cat(c){ if(c>-1){ var f=document.jf var stbd=f.stbd.value.split(",") var st=stbd[c] if(st==getN("st").value){ document.location.href="#"+c if(st=="1"||st=="2"){ if(_ie==6){ getE("centerCtrl").scrollTop-=getE("box").offsetHeight }else{ scrollBy(0,-1*getE("box").offsetHeight) } } }else{ getN("st").value=st getN("cnst").value=c getN("pf").action=getN("mf").action getN("pf").submit() } } } が見られます。 やはり onscrollが使われているようです。
補足
あら、ソースが見れるのですね。 > やはり onscrollが使われているようです。 ということですね。なんか複雑そうですがじっくり見てみます。 ありがとう御座いました。
お礼
CSSでできるのですね。大変参考になりました。