我有一个布局,其中侧边栏是可调整大小的。 我使用JavaScript实现了这一点。 但我希望它有一个最大值和最小值的调整大小。 我已经为侧边栏部分设置了max-width和min-width。 但问题是,即使侧边栏使用max-width进行了限制,主区域也会减少(当扩展时)。 我一直在根据光标指针移动(使用js)向主区域添加margin-left属性。 但没有任何属性允许我们设置最大或最小边距-左。 我怎么才能做到这一点。 有人能给出解决办法吗?
Js Fiddle-完整代码-https://jsfiddle.net/pdo4yjmg/
请尝试在fiddle结果中扩展到400px以上,您可以在那里看到问题(400px是最大宽度)
Js部分-
var element = document.getElementById('resizable');
if (element) {
var resizer = document.createElement('div');
resizer.className = 'draghandle';
resizer.style.width = '6px';
resizer.style.height = '100vh';
element.appendChild(resizer);
resizer.addEventListener('mousedown', initResize, false);
}
function initResize(e) {
window.addEventListener('mousemove', Resize, false);
window.addEventListener('mouseup', stopResize, false);
document.getElementById("mainArea").classList.add('marginLeft')
}
function Resize(e) {
element.style.width = (e.clientX - element.offsetLeft) + 'px';
document.getElementById("mainArea").style.marginLeft = (e.clientX - element.offsetLeft) + 'px';
}
function stopResize(e) {
window.removeEventListener('mousemove', Resize, false);
window.removeEventListener('mouseup', stopResize, false);
}
由于您已经成功地将侧边栏限制为min-width
为200
,max-width
为400
,我建议您对Margin-left
也这样做。 但是CSS中没有允许限制边距的属性,您将需要求助于JavaScript。 如果您设置了mainArea的Margin-left
,请确保您的新值介于200和400之间:
document.getElementById("mainArea").style.marginLeft = Math.min(Math.max(parseInt((e.clientX - element.offsetLeft)), 200), 400) + 'px';
另外,请看如何使用JavaScript限制最小值和最大值之间的数值?
完全可调整大小:
function Resize(e) {
element.style.width = (e.clientX - element.offsetLeft) + 'px';
if(parseInt(element.style.width) <- 200)
lement.style.width = '200px'
document.getElementById("mainArea").style.marginLeft = (e.clientX - element.offsetLeft) + 'px';
}