【发布时间】:2019-08-28 18:46:36
【问题描述】:
我正在尝试设计一个组件,您可以在其中通过左右移动滑块来更改两个块的宽度比例:
codpen 和演示:
.outer {
display: flex;
flex-direction: row;
}
.block {
height: 200px;
width: -webkit-calc(50% - 5px);
width: -moz-calc(50% - 5px);
width: calc(50% - 5px);
}
.block-1 {
background-color: red;
}
.block-2 {
background-color: green;
}
.slider {
line-height: 100%;
width: 10px;
background-color: #dee2e6;
border: none;
cursor: e-resize;
}
<div id="app">
<div class="outer">
<div class="block block-1">
Block 1
</div>
<div class="slider">
S<br>l<br>i<br>d<br>e<br>r
</div>
<div class="block block-2">
Block 2
</div>
</div>
</div>
我尝试使用draggable-vue-directive 并根据滑块位置更改块的宽度。
但是,它并没有很好地工作,因为draggable-vue-directive 将滑块设置为position:fixed,这反过来又搞乱了块对齐。
如何在不设置position:fixed 的情况下使.slider 块水平拖动?
当滑块移动时如何正确调整Block1 和Block2 的大小?
注意:我没有使用jQuery
【问题讨论】:
-
制作滑块的方法有很多。你想用它来完成什么?您当前的实现将简单地重排每个区域中的内容,因为它们变得更宽/更窄。这是目标吗?
-
@BryceHowitson 是的,基本上如果您将滑块
div向右滑动,那么Block 1应该更宽,Block 2应该更窄
标签: javascript css vue.js flexbox