利用浏览器非overflow:auto元素设置resize可以拉伸的特性实现无JavaScript的分栏宽度控制。

webkit浏览器下滚动条可以自定义,其中resize区域大小就是scrollbar的大小,于是,我们可以将整个拉伸区域变成和容器一样高。

实现原理

CSS中有一个resize属性,如果一个元素的overflow属性值不是visible,则通过设置resize属性可以拉伸这个元素尺寸。

但是,这种拉伸却有一个问题,那就是拖拽的区域太小了,就右下角那么一丢丢地方:

那有什么办法可以把这个拖拽区域变大呢?

后来经过我的研究发现,resize属性的拖拽bar和滚动条的拖拽bar是一个体系里面的东西,只需要对滚动条进行自定义,就能间接设置resize bar的尺寸。

例如:

.resize-bar::-webkit-scrollbar {width: 200px; height: 200px;
}

此时,拉伸区域就很大了:

接下来做的事情就是把这个拖拽区域藏在某一栏布局的后面,然后透出部分宽度可以用来拖拽,如下图所示:

最后,我们的左右分栏采用自适应布局就能实现我们想要的效果。

您可以狠狠地点击这里:纯CSS实现分栏宽度拉伸demo

代码如下:

.column {overflow: hidden;
}
.column-left {height: 400px;background-color: #fff;position: relative;float: left;
}
.column-right {height: 400px;padding: 16px;background-color: #eee;box-sizing: border-box;overflow: hidden;
}
.resize-save {position: absolute;top: 0; right: 5px; bottom: 0; left: 0;padding: 16px;overflow-x: hidden;
}
.resize-bar {width: 200px; height: inherit;resize: horizontal;cursor: ew-resize; opacity: 0;overflow: scroll;
}
/* 拖拽线 */
.resize-line {position: absolute;right: 0; top: 0; bottom: 0;border-right: 2px solid #eee;border-left: 1px solid #bbb;pointer-events: none;
}
.resize-bar:hover ~ .resize-line,
.resize-bar:active ~ .resize-line {border-left: 1px dashed skyblue;
}
.resize-bar::-webkit-scrollbar {width: 200px; height: inherit;
}/* Firefox只有下面一小块区域可以拉伸 */
@supports (-moz-user-select: none) {.resize-bar:hover ~ .resize-line,.resize-bar:active ~ .resize-line {border-left: 1px solid #bbb;}.resize-bar:hover ~ .resize-line::after,.resize-bar:active ~ .resize-line::after {content: '';position: absolute;width: 16px; height: 16px;bottom: 0; right: -8px;background: url(./resize.svg);background-size: 100% 100%;}
}
<div class="column"><div class="column-left"><div class="resize-bar"></div><div class="resize-line"></div><div class="resize-save">左侧的内容,左侧的内容,左侧的内容,左侧的内容</div>                                            </div><div class="column-right">右侧的内容,右侧的内容,右侧的内容,右侧的内容</div>
</div>

利用浏览器非overflow:auto元素设置resize可以拉伸的特性实现无JavaScript的分栏宽度控制。

webkit浏览器下滚动条可以自定义,其中resize区域大小就是scrollbar的大小,于是,我们可以将整个拉伸区域变成和容器一样高。

纯CSS实现左右拖拽改变布局大小 使用CSS3中resize属性 水平,垂直拖动元素,改变大小相关推荐

  1. vue拖动改变模板_可视化拖拽 UI 布局之拖拽篇

    前言:前段时间负责公司的运营管理后台项目,通过运营后台的PC端拖拽配置布局,达到App首页模板的动态UI界面配置,生成页面.趁着周末,整理一下当时所了解到的拖拽.文章会根据大家的反馈或者自己学习经验的 ...

  2. 可视化拖拽 UI 布局之拖拽篇

    前言:前段时间负责公司的运营管理后台项目,通过运营后台的PC端拖拽配置布局,达到App首页模板的动态UI界面配置,生成页面.趁着周末,整理一下当时所了解到的拖拽.文章会根据大家的反馈或者自己学习经验的 ...

  3. 13.鼠标拖拽:案例:鼠标拖拽小方块,小方格跟着移动(桌面图标拖动)

    目录 一:案例鼠标拖拽小方块,小方格跟着移动(桌面图标拖动) 二:取消拖拽文字的行为 1.没取消前: 2.取消后: 三:鼠标拖拽案例优化: 如果有好多个小盒子要做拖拽,一个一个加上面的1,2,3步太麻 ...

  4. css纵向滚动条自适应,纯css实现完美决对居中 自动滚动条 根据内容宽度、高度自适应,垂直水平居中,自动出现滚动条。.doc...

    纯css实现完美决对居中 自动滚动条 根据内容宽度.高度自适应,垂直水平居中,自动出现滚动条..doc 还剩 3页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内 ...

  5. 浅谈CSS3中display属性的Flex布局,关于登陆页面属性框的设置

    声明:本文转发自三里屯柯南的浅谈CSS3中display属性的Flex布局http://www.cnblogs.com/xuyuntao/articles/6391728.html 基本概念 采用Fl ...

  6. html左右分隔可调整,CSS实现可拖拽分割面板

    项目中经常会用到左右分栏布局方式,一般情况左侧面板大小都是固定的,但是有时会有需求做成拖拽式的,能够自由拖拽调整面板大小.(作为当年的资深Java Swing开发人员,对于JSplitPane印象深刻 ...

  7. 鼠标拖拽---自定义布局(电影院)

    鼠标拖拽点击-电影院自定义布局 标签 鼠标拖拽.自定义布局 效果 自定义布局-电影院 目的 疫情期间,电影院都是隔空而坐,想用html.css.js.jq做个简单的自定义布局. 介绍 自定义布局中有银 ...

  8. html 实现格子效果图,纯CSS实现动态图片的九宫格布局

    起因 最近碰到这样一个需求,要实现一个"九宫格图片"展示,设计师给过来的稿子是酱的 是的,九宫格对应的是九种样式. 天不怕,地不怕,就怕设计有想法. 当一看到这样的需求,很多人的第 ...

  9. js(event、拖拽、碰撞检测、缓冲运动、多属性运动、轮播图、Object、正则、闭包、ajax)

    事件对象 概念:当时事件发生的时候,所以跟事件相关的信息(事件类型,事件目标,鼠标位置等)都会存储在事件对象event中. 获取方式: console.log(event); //ie chrome ...

最新文章

  1. 图像分割:Python的SLIC超像素分割
  2. 决策树算法之cart剪枝
  3. python画函数图-Python 绘制你想要的数学函数图形
  4. Paper:《Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields ∗》翻译并解读
  5. 存储过程传入可以为空的参数
  6. CUDA线程、线程块、线程束、流多处理器、流处理器、网格概念的深入理解
  7. 计算机网络原理html,计算机网络原理与应用html..ppt
  8. MySQL密码忘记,怎么办?
  9. idea 快速导入实现父类方法_网站seo优化方法,实现快速排名!
  10. matlab cos sinx,matlab求y=sinxcos(2x)及其包络线急!!!
  11. 怎么注册tk域名_关于注册免费TK域名不成功的几个问题解决方案
  12. IOS捷径|九宫格切图工具 分享
  13. 如何在word中输入函数
  14. 诛仙、凡人、遮天、剑来竟都不是第四届橙瓜网络文学奖第一仙侠!
  15. 小飞侠的游园方案答案
  16. 模拟器,预览,自动预览,自动真机调试有用,扫二维码真机调试报错
  17. 如何读取PSD文件(photoshop)的图层......
  18. 杭州市委常委、常务副市长马晓晖一行莅临先芯科技视察
  19. 【helloworld系列】编程语言的Hello World程序汇总
  20. vue+element 播放mp3音频(只有播放按钮)

热门文章

  1. 从程序员到技术总监的秘诀?饿了么高级总监史海峰访谈
  2. python能封装成exe文件_python文件封装成*.exe文件(单文件和多文件)
  3. Python——课堂随机点名
  4. 2022年中国科技与IT十大趋势
  5. VirtualBox 错误代码0x80004005解决办法
  6. iOS通讯录,蓝牙,内购等开发系列
  7. MSP430 F5529 单片机 温度报警器 温度显示报警 温度的测量与报警 OLED 显示
  8. 教程-使用js脚本预加载为网站提高访问速度
  9. rtl8192cu_rtl8192cu推荐驱动CentOS 7
  10. Android——查看Android Studio版本支持的Android版本问题