• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:webページで、ページの一部を固定する方法)

webページで、ページの一部を固定する方法

このQ&Aのポイント
  • webページで、特定の要素をスクロールせずに固定する方法について知りたいです。
  • JavaScriptのonScrollイベントハンドラを使用して要素を固定する方法がありますが、カクカクした動きになってしまいます。
  • 参考になるサイトや方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • auty
  • ベストアンサー率58% (284/486)
回答No.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

msx68000
質問者

お礼

CSSでできるのですね。大変参考になりました。

その他の回答 (1)

  • auty
  • ベストアンサー率58% (284/486)
回答No.1

詳しくは調べていませんが、ソースコードを見ると固定されている部分は、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が使われているようです。

msx68000
質問者

補足

あら、ソースが見れるのですね。 > やはり onscrollが使われているようです。 ということですね。なんか複雑そうですがじっくり見てみます。 ありがとう御座いました。

関連するQ&A

専門家に質問してみよう