参考:纯CSS实现左右拖拽改变布局大小 使用CSS3中resize属性 水平,垂直拖动元素,改变大小、纯CSS实现可拖动布局
希望左侧目录树可以向右拖拽,使得较长的文字可以横向显示。
利用resize: horizontal;
和overflow: scroll;
实现。
DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>拖拽布局title>
<style type="text/css">
.container {
overflow: hidden;
}
.container-left {
height: 100vh; /* 页面高度拉满 */
background-color: #fff;
position: relative;
float: left;
}
.container-right {
height: 100vh;
background-color: #fff;
box-sizing: border-box;
overflow: scroll;
}
.resize-save {
position: absolute;
top: 0;
right: 2px;
bottom: 0;
left: 0;
border-width: 1px 1px 0 1px;
border-color: #f0f0f0;
border-style: solid;
}
.resize-bar {
width: 200px;
min-width: 200px;
max-width: 400px;
height: inherit;
resize: horizontal; /* 关键点 */
cursor: ew-resize;
cursor: col-resize;
opacity: 0;
overflow: scroll; /* 关键点 */
}
/* 拖拽线 */
.resize-line {
position: absolute;
right: 0;
top: 0;
bottom: 0;
border-right: 2px solid #f0f0f0;
border-left: 1px solid #f0f0f0;
pointer-events: none;
}
.resize-bar:hover ~ .resize-line,
.resize-bar:active ~ .resize-line {
border-left: 2px dashed #f0f0f0;
}
.resize-bar::-webkit-scrollbar {
width: 200px;
height: inherit;
}
style>
head>
<body>
<div class="container">
<div class="container-left">
<div class="resize-bar">div>
<div class="resize-line">div>
<div class="resize-save">
左侧的内容,左侧的内容,左侧的内容,左侧的内容
div>
div>
<div class="container-right">
右侧的内容,右侧的内容,右侧的内容,右侧的内容
div>
div>
body>
html>
引申出的其它问题:左右侧区域分开滚动,注意查看 height 和 overflow 是否被覆盖,重新为元素设置好 height 和 overflow 值。