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

一般在web应用中的实现方式是封装成组件,通过JavaScript添加事件监听来实现。

今天给大家介绍的是一种新的实现方式,不通过JavaScript,只借助借助CSS的resize属性,

就可以实现交互式的可拖拽分割面板。

请参考以下代码部分,具体实现和技术细节,代码中已经做了注释。

LESS代码如下(如果想要CSS格式,请查看本页面源代码)

@divider_color: #ccc; //分隔条颜色

@divider_hover_color: #17a2b8;//hover时分隔条颜色

@horizontal_left_size: 200px;//左右布局时,左侧面板宽度

@vertical_top_size: 100px;//上下布局是,上册面板宽度

.split {

overflow: hidden;

border: 1px solid #ccc;

width: 100%;

height: 100%;

.split {

border: none;

}

.resize {

overflow: scroll;

opacity: 0; //通过透明度将resize设置为不可见,但是仍然可以交互

&::-webkit-scrollbar { //设置resize的大小,只有webkit的浏览器支持

width: 100%;

height: 100%;

}

}

.divider {

position: absolute;

pointer-events: none; //禁止divider影响鼠标事件

}

.content {

position: absolute;

left: 0;

right: 0;

top: 0;

bottom: 0;

}

&.horizontal {//横向布局

> div:first-child { //左侧面板

overflow: hidden;

float: left;

position: relative;

height: 100%;

.resize {

width: @horizontal_left_size; //★左侧面板的预置宽度

height: 100%;

resize: horizontal;

&:hover ~ .divider, &:active ~ .divider {

border-left-color: @divider_hover_color;

border-left-style: dashed;

}

}

.divider {

right: 0;

top: 0;

bottom: 0;

border-left: 1px solid @divider_color;

border-right: 2px solid transparent;

}

.content {

right: 4px; //content不能充满左侧面板,否则会覆盖resize面板

}

}

> div:last-child { //右侧面板

position: relative;

overflow: hidden;

height: 100%;

box-sizing: border-box;

}

}

&.vertical {//纵向布局

> div:first-child { //上侧面板

overflow: hidden;

position: relative;

.resize {

height: @vertical_top_size; //★上册面板的预置高度

width: 100%;

resize: vertical;

&:hover ~ .divider, &:active ~ .divider {

border-top-color: @divider_hover_color;

border-top-style: dashed;

}

}

.divider {

left: 0;

right: 0;

bottom: 0;

border-top: 1px solid @divider_color;

border-bottom: 2px solid transparent;

}

.content {

bottom: 4px;

}

}

> div:last-child { //下侧面板

position: relative;

overflow: hidden;

width: 100%;

box-sizing: border-box;

}

}

}

//针对Firefox浏览器

@-moz-document url-prefix() {

.resize {

overflow: auto !important;

opacity: 1 !important;

}

}

测试代码和呈现效果如下:

left

right-top

right-top

left

right-top

right-top

请注意,resize有浏览器的兼容性问题,本实现只针对支持resize属性的浏览器。

html左右分隔可调整,CSS实现可拖拽分割面板相关推荐

  1. canvas读取图片,输入文字,调整文字属性,拖拽文字位置,并保存图片

    不是专门做前端的,代码写的不太好,权当抛砖引玉. 整体思路: 共有5层,除了背景颜色的div没什么用之外,canvas1用来读取图片作为背景,canvas2把文字展示出来,并记录拖拽文字的位置,can ...

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

    利用浏览器非overflow:auto元素设置resize可以拉伸的特性实现无JavaScript的分栏宽度控制. webkit浏览器下滚动条可以自定义,其中resize区域大小就是scrollbar ...

  3. Unity 窗口制作 调整窗口大小 动态调整UI大小 窗口拖拽 UI拖拽

    Unity 简易窗口: 首先咱们看一下是不是自己想要的效果 组件可调整参数: 下面是同比例缩放的调整效果,如果只是缩放这个窗口里面的内容,这个是个不错的选择 资源链接: 下载地址.

  4. 【css】禁止拖拽选择图片

    img{user-select: none;-webkit-user-drag: none; }

  5. CSS # 禁止图片拖拽、文字选中

    -webkit-user-select: none; cursor: default; pointer-events: none;

  6. html水平分隔线样式,CSS生成漂亮的水平分隔线(horizontal rule)设计效果

    HTML代码中,我们常常使用 标签来生成水平分隔线,下面分享几款不同样式的水平分隔线 相关CSS代码 /* 渐变 color1 - color2 - color1 */ hr.style-one { ...

  7. css拖拽调整高度,两种为wangEditor添加拖拽调整高度的方式:CSS3和jQuery UI

    wangEditor是一款优秀的Web富文本编辑器,但如果能像KindEditor那样支持拖拽调整高度就更好了.有两种方式可以为wangEditor添加这一功能,这里使用的wangEditor版本为2 ...

  8. web前端入门学习 css(7)css高级技巧 (精灵图、字体图标、css三角、鼠标样式、表单轮廓线、文本框拖拽、垂直对齐、图底空白缝隙、margin负值、溢出文字省略号、文字环绕、css初始化)

    文章目录 精灵图 为什么需要精灵图? 精灵图的使用 精灵图课堂案例 用精灵图拼出自己的名字 字体图标 字体图标的下载 字体图标的引入 字体图标的追加 css三角(用边框border制作) 案例:京东三 ...

  9. css元素可拖动,使用css-transform实现更好的拖拽功能

    拖拽功能是目前网页上一种非常常见的功能,例如"登录弹窗"的拖拽.本文将使用transform来实现这一功能. 一.拖拽的用户行为分析与原理解析 二.代码实现 三.总结 本文所涉及的 ...

最新文章

  1. iOS音频——AudioToolbox
  2. 一个智能机器人的语录
  3. 【SpringCloud】高可用Eureka
  4. 剖析ifstream打开含中文路径名文件失败的原因(转)
  5. java 之在校期间最后一次实训记录
  6. 从性能方面谈系统设计
  7. C++实现有序表折半查找
  8. Spring 通过@Import实现Bean的注册
  9. 微信小程序想通过场景化缩短路径
  10. 冲动是魔鬼!国庆换机如何不花冤枉钱?
  11. 紧急!Log4j2 再再爆雷:刚升级,又连爆 “核弹级” 远程数据泄露 ! v2.17.0 横空出世。。。...
  12. HTML5 FileAPI读取实例---(一)
  13. [BZOJ 3052] [wc2013] 糖果公园 【树上莫队】
  14. httphandler防图片盗链
  15. OSChina 周四乱弹 —— 懦夫!你就不能找富婆吗
  16. Windows server2012R2 企业内部搭建虚拟专用网络服务
  17. matlab实现A律13折线的编码和译码以及量化误差的计算
  18. NVIDIA GeForce Experience无法登录
  19. vsCode使vue中的代码高亮
  20. CAD画图 ——基础和直线

热门文章

  1. 年货节页面PSD分层模板,拿稳了!应急!
  2. 可提高效率的网页设计PS插件
  3. 类似色/同色系电商海报模板,PSD分层模板
  4. 设计师所需图标素材网站,不用到处找了,都在这!
  5. 后台UI专辑模板有这些就够了!
  6. UI帮手|小样机大作用
  7. 计算机考研854都有哪些学校,哈尔滨工业大学计算机考研854计算机基础参考书汇总...
  8. linux php imagick 扩展安装,linux下为php5.3安装Imagick扩展
  9. 爬虫项目之爬取页面并按界面样式导入excel表格
  10. 基于HTML5的贪吃蛇游戏的设计与实现