- ベストアンサー
CSSで指定したwidthをマウスで変更したい
- CSSとJavaScriptを使用して、HTML要素の幅をマウスドラッグで変更する方法について質問があります。
- 具体的には、以下のHTMLの要素の幅を20%と80%として指定し、これをマウスドラッグで変更したいです。
- このような機能を実現するためのCSSとJavaScriptのコードを教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
コンテンツが多いと動きがぎこちなくなったりします。 特にIEは処理が遅いですから。 それと元々Netscape系に多い(IEでもある)マウスアップの感知タイミングの問題で、 一度クリックしないとマウスアップを感知しない状況が出てしまうケースはこの手のJavaScriptにはつきまといます。 あと、様々なケースに関しては何もテストしていませんので、コンテンツ次第でどうなるか・・・。 <html> <head> <style type="text/css"> #f1 { float:left; width:20%; overflow: auto; background-color : #ffd2ff; } #f2 { float:right; width:80%; background-color : #e0fef8; } #space { float:left; width:5px; background-color : #ffffff; cursor:E-resize; } </style> </head> <body> <script> window.onload = function(){ var Drag = 0, i = function(id){ return document.getElementById(id) }; i('space').onmousedown = function(){ Drag = 1; } document.onmouseup = function(){ Drag = 0; } document.onmousemove = function(e){ if(!Drag){ return false; } var ev = window.event || e; var W = document.body.offsetWidth || document.documentElement.offsetWidth; var L = parseInt( ev.clientX/W *100, 10); var R = 100 - L; if(L >1 && R > 1){ i('f1').style.width = L + '%'; i('f2').style.width = R + '%'; } } } </script> <div id="f1">f1</div> <div id="f2"> <div id="space"> </div> f2</div> </body> </html>
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
思いっきり面倒なことをやればできないことはないですが 苦労のわりに得るものがすくないのでお勧めできません。 とくにブラウザごとに処理がことなるのでかなり煩雑になりそうな 予感がします
お礼
素早いご回答ありがとうございます。 >それと元々Netscape系に多い(IEでもある)マウスアップの感知タイミングの問題で、 時々くっ付いちゃうんですね。(IE,FF,Operaを試したら、Operaは再現せず) ActionScript(Flash)で同じような経験があります。そのときは、rereaseOutsideってイベントでDrag = 0って感じで直りました。