了解しました。2つのdivが画面の50%を占め、中央にバーがあるので、ドラッグして左を40%、右を60%にしたり、その逆を行ったりする方法はありますか。
私はこのjqueryを実行できることを望んでいます。
完全な答えはありませんが、一見の価値があるかもしれない1つのことは、jQueryのUIからのサイズ変更可能なインタラクションです:http://jqueryui.com/demos/resizable/#synchronous-resize
それは、最終製品をどのように機能させるかによって大きく異なります。おそらく、1つのDIVのサイズを変更でき、隣接するDIVがギャップを埋めるように設定できます。
ここに私がすぐに書いたメソッドがありますが、これは jQuery を使用しません。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example Slider</title>
<style type="text/css">
#bar1 {
position: absolute;
background: red;
height: 250px;
width: 400px;
z-index: 1;
}
#bar2 {
position: absolute;
background: green;
height: 250px;
width: 800px;
}
#slider {
position: relative;
background: blue;
height: 100%;
width: 10px;
float: right;
}
</style>
<script type="text/javascript">
var down = false;
var mouse_x;
var interval;
var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = get_mouse_x;
function get_mouse_x(e) {
if (IE)
mouse_x = event.clientX;
else
mouse_x = e.pageX;
}
function drag() {
interval = setInterval("update()", 1);
}
function release() {
clearInterval(interval);
}
function update() {
if ((mouse_x - document.getElementById('bar1').offsetLeft) >= document.getElementById('bar2').offsetWidth) {
release();
document.getElementById('bar1').style.width = document.getElementById('bar2').offsetWidth + "px";
} else if (mouse_x <= document.getElementById('bar1').offsetLeft) {
release();
document.getElementById('bar1').style.width = document.getElementById('bar1').offsetLeft + "px";
} else {
document.getElementById('bar1').style.width = (mouse_x - document.getElementById('bar1').offsetLeft) + "px";
}
}
</script>
</head>
<body onmouseup="javascript:release();">
<div id="bar1">
<div id="slider" onmousedown="javascript:drag();"> </div>
</div>
<div id="bar2"></div>
</body>
</html>
ウェブサイトでそれを使用することはお勧めしません。代わりに、それから学ぶか、完全に安定するように改善してください。しかし、うまくいけば、この問題に取り組む方法についてのアイデアが得られます.
また、IE にはバグがあり、スライドした後、スライダー div からフォーカスが失われません。これは、スライドし直すと、正しくリリースされないことを意味します。これを回避するには、最初にスライドした後、別の何かに焦点を合わせてから、もう一度スライドします。それ以外は正常に動作します。
うまくいけば、これは何らかの形で役に立ちました:)
あなたが説明しているものは、一般にスプリッターと呼ばれます。demoから判断すると、このjQuery プラグインはまさにあなたが望むことをしているように見えます。
CSS パーセンテージを実行する代わりに、ウィンドウの幅を見つけて半分に分割し (マイナス バーの幅)、ピクセル幅を設定します。これにより、バーが移動したときに簡単に変更できます。
アプリケーション UI のニーズによっては、これはやり過ぎかもしれませんが、ExtJS はこの種のことを非常にうまく実行します。
言及すべきもう 1 つの型にはまらないオプション、フレームセットです。フレームは 90 年代半ばの寵児でしたが、大騒ぎすることなく、ほぼすべてのブラウザーで今でもサポートされています。