javascript - Resizable Sidebar : 如何设置主区域的最大宽度
问题描述
我有一个侧边栏可调整大小的布局。我已经使用 Javascript 做到了。但我希望它具有调整大小的最大值和最小值。我通过设置侧边栏的最大宽度和最小宽度来为侧边栏部分完成此操作。但问题是,即使侧边栏已使用最大宽度进行限制,主要区域也会减少(扩展时)。我一直根据光标指针的移动(使用 js )将 margin-left 属性添加到主区域。但是没有允许我们设置最大或最小边距的属性。我怎样才能做到这一点。任何人都可以提出任何解决方法吗?
Js Fiddle - 整个代码 - https://jsfiddle.net/pdo4yjmg/
请尝试在小提琴结果中扩大到 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
of200
和max-width
of 400
,我建议您对您的margin-left
. 但是 CSS 中没有这样的属性可以限制边距,您需要求助于 JavaScript。也许在你设置margin-left
mainArea 的地方,确保你的新值在 200 到 400 之间:
document.getElementById("mainArea").style.marginLeft = Math.min(Math.max(parseInt((e.clientX - element.offsetLeft)), 200), 400) + 'px';
推荐阅读
- php - 我想在具有单个主键的一列中插入数据库中的多个数据
- python - FileNotFoundError: [Errno 2] No such file or directory: 'python': 'python' while running a python script
- spring-boot - 获取“访问被拒绝(用户是匿名的);重定向到身份验证入口点”。同时从 swagger ui 页面授权
- android - 来自firebase的recyclerview加载菜单返回空白活动
- python - 32位和64位python版本的exe之间的区别
- python - Pandas 大步切行
- arrays - 传递给模型的 Numpy 数组列表不是模型预期的大小
- tensorflow - 通过源代码安装 TensorFlow 与使用 pip 有什么区别?
- google-app-engine - java.lang.NoClassDefFoundError: java.lang.reflect.Parameter 是一个受限类
- kubernetes - 有没有更好的方法来等待 Kubernetes 作业完成?