最近开发有这样一个需求,水平/垂直方向上的能够拖动。最开始采用操作dom的方式,但是卡顿现象明显,体验太差。思考问题是不是操作太频繁,导致卡顿,于是又尝试防抖与节流,效果还是不明显。突发想到,css有个resize属性可以实现这个效果。
一、水平分屏
<div class="demo">
<div class="left">
<div>000</div>
</div>
<div class="right">right</div>
</div>
css:
.demo{
display:flex;
height:200px;
}
.left{
min-width:200px;
max-width: 1000px;
background: #ccc;
resize:horizontal;
overflow:scroll;
margin-right: 10px;
height:200px;
opacity:1;
}
.left::-webkit-scrollbar {
width: 20px; // 滚动条宽度,我们就是靠拖拽滚动条来实现分屏宽度变化的
height: inherit;
}
.right{
background: #f0f;
margin-left: 10px;
flex: 1
}
上面有个问题,left里面的内容没有显示了。而且滚动条样式有问题
我们需要的是如下效果:
于是我们需要对上述代码做些许改动:
<div class="demo">
<div class="demo-left">
<div class="left"></div>
<div class="left-content">left</div>
</div>
<div class="right">right</div>
</div>
css:
.demo{
display:flex;
height:200px;
}
.demo-left{
position: relative;
}
.left{
min-width:200px;
max-width: 1000px;
background: #ccc;
resize:horizontal;
overflow:scroll;
margin-right: 10px;
height:200px;
opacity:0;
position: relative;
z-index: 1;
}
.left-content{
position: absolute;
width: 100%;
height:200px;
background:#0f0;
color:#000;
left: 0;
top:0;
}
.left::-webkit-scrollbar {
width: 20px;
height: inherit;
}
.right{
background: #f0f;
margin-left: 10px;
flex: 1
}
上述效果可在codepen上查看
二、垂直方向
原来类似,点此查看
三、resize属性
resize属性是指定一个元素是否可由用户调整大小的。
语法:
resize:none | both | horizontal | vertical
- none:用户不可一调整元素的尺寸(默认值)
- both:用户可调整元素的高度和宽度
- horizontal:用户可调整元素的宽度
- vertical:用户可调整元素的高度
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!