利用CSS如何实现左右拉伸拖动?

6 min read

可以使用CSS的flex布局和伪元素::before::after来实现左右拉伸拖动的效果。

首先,包裹需要被拉伸的内容的容器应该设为display:flex;,并且将主轴方向设置为row。同时,需要设置容器的position属性为relative,以便之后绝对定位的伪元素的参考系。

接着,为容器加上两个伪元素::before::after,宽度分别设为10px,高度设为100%topbottom属性设为0,设置position属性为absolute,分别向左和向右定位。

最后,为这两个伪元素添加鼠标事件,如mouseovermouseout,设置cursor属性为col-resize,这样鼠标经过时会出现拉伸的光标,具体的样式:

.container {
  display: flex;
  flex-direction: row;
  position: relative;
}

.container::before,
.container::after {
  content: '';
  width: 10px;
  height: 100%;
  position: absolute;
  top: 0;
  bottom: 0;
  cursor: col-resize; /*设置鼠标光标*/
}

.container::before {
  left: 0;
}

.container::after {
  right: 0;
}

.container::before:hover,
.container::after:hover {
  background-color: #ddd; /*鼠标经过时,背景变成灰色*/
}

这样就实现了左右拉伸拖动的效果。但需要注意的是,这种方式只是改变了伪元素的宽度,没有真正意义上的拉伸操作。如果需要真正的拉伸效果,还需要使用JavaScript来实现。