编程技术文章分享与教程

网站首页 > 技术文章 正文

使用CSS的resize属性实现div拉伸

hmc789 2024-11-24 16:46:00 技术文章 2 ℃

效果图:



核心点:

  • div宽度自适应
宽度自适应 width
默认情况下, 块级元素不设置宽度, 默认为整个屏幕宽度或者和父级同宽
如果元素脱离了文档流(浮动或者定位), 那么元素的宽度由元素的内容决定
  • css resize属性
相关介绍: MDN
resize 生效的条件: 不支持内联元素; 块级元素,需要overflow属性的计算值不是visible。

整体布局

<div class="container">
  <!-- resizable 用于拉伸的工具 -->
  <div class="resizable"></div>
  <!-- content 要展示的内容区域 -->
  <div class="content">content</div>
</div>
  • container 父容器, 用于控制脱离文档流, 然其宽度随着拉伸大小而决定
  • resizable 可以拉伸的容器, 从而可以控制父容器的宽度
  • content 真正展示的容器, 其宽度随着父级而定

基础知识, 拉伸区域的实现, 右下角出现可拉伸图标

.content {
  width: 200px;
  height: 200px;
  resize: horizontal;
  cursor: ew-resize;
  overflow: hidden; // 必须要配合overflow来使用resize, 否则拉伸图标无法显示
  border: 1px solid red;
}
<div class="content">content</div>


限制拉伸尺寸

通过设置min-width、min-height、max-width和max-height可以限制拉伸尺寸。

所有代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .container {
        position: relative;
        /* 脱离文档流 */
        float: left; 
      }

      .resizable {
        width: 200px;
        height: 200px;
        overflow: scroll;
        resize: horizontal;
        cursor: ew-resize;
        opacity: 0;
        min-width: 200px; // 盒子宽度最小为200px
      }
        /* 更改拖拽图标的大小和父容器一样大 */
      .resizable::-webkit-scrollbar {
        width: 20px;
        height: 200px;
      }

      /* 使用定位, 将容器定位到父容器的正中间, 跟着父容器的大小改变而改变 */
      .content {
        margin: 0;
        height: 200px;
        position: absolute;
        top: 0;
        /* 留出5px为了鼠标放上去可以显示拖拽 */
        right: 5px;
        bottom: 0;
        left: 0;
        border: 1px solid;
      }
    </style>
  </head>

  <body>
    <div class="container">
      <!-- resizable 用于拖拽的工具 -->
      <div class="resizable"></div>
      <!-- content 要展示的内容区域 -->
      <div class="content">content</div>
    </div>
  </body>
</html>

层级图

Tags:

标签列表
最新留言