好的大家,有没有办法让 2 个 div 占据屏幕的 50% 并在中间有一个栏,这样你就可以拖动它,让左边 40% 和右边 60%,反之亦然。
我希望能够做到这个jquery。
我没有完整的答案,但可能值得一看的是 jQuery UI 的 Resizable 交互:http: //jqueryui.com/demos/resizable/#synchronous-resize
这在很大程度上取决于您希望最终产品如何工作。您可能可以将其设置为使一个 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>
我不建议您在您的网站上使用它,而是从中学习或改进以使其完全稳定。但希望这能让您了解如何解决这个问题。
Also there's a bug in IE where, after sliding, it does not lose focus from the slider div. So this means that when you re-slide it, it doesn't release properly. To avoid this: after initial sliding, focus something else, and then slide again. Other then that it works fine.
Hopefully this was helpful in some way :)
除了做 css 百分比,我会找到窗口的宽度,将其分成两半(减去条形宽度),并设置像素宽度。这使得在移动栏时更容易更改。
这可能有点矫枉过正,具体取决于您的应用程序 UI 还需要什么,但 ExtJS 可以很好地完成这类事情。
应该提到的另一个非常规选项:框架集。框架是 90 年代中期的宠儿,但几乎所有浏览器仍然支持它们,而且没有大惊小怪。