<div id="content"> <div id="left">left</div> <div id="right">right</div> </div>
html, body { height: 100%; margin: 0; padding: 0; } #content { position: relative; height: 100%; } #left, #right { float: left; width: 50%; height: 100%; overflow: auto; } #left { background: #fee; } #right { background: #efe; } #divider { position: absolute; width: 2px; margin-left: -2px; top: 0; bottom: 0; background: #bbb; border: 1px outset #bbb; border-top: 0; border-bottom: 0; cursor: col-resize; } html.dragging * { cursor: col-resize !important; }
var content = document.getElementById('content'); var left = document.getElementById('left'); var right = document.getElementById('right'); var divider = document.createElement('div'); divider.id = 'divider'; content.appendChild(divider); var leftPercent = 50; function updateDivision() { divider.style.left = leftPercent + '%'; left.style.width = leftPercent + '%'; right.style.width = (100 - leftPercent) + '%'; } updateDivision(); divider.addEventListener('mousedown', function(e) { e.preventDefault(); var lastX = e.pageX; document.documentElement.className += ' dragging'; document.documentElement.addEventListener('mousemove', moveHandler, true); document.documentElement.addEventListener('mouseup', upHandler, true); function moveHandler(e) { e.preventDefault(); e.stopPropagation(); var deltaX = e.pageX - lastX; lastX = e.pageX; leftPercent += deltaX / parseFloat(document.defaultView.getComputedStyle(content).width) * 100; updateDivision(); } function upHandler(e) { e.preventDefault(); e.stopPropagation(); document.documentElement.className = document.documentElement.className.replace(/\bdragging\b/, ''); document.documentElement.removeEventListener('mousemove', moveHandler, true); document.documentElement.removeEventListener('mouseup', upHandler, true); } }, false);