探究 width:100%与width:auto区别

width:100%与width:auto区别

一、 width属性介绍

width 属性用于设置元素的宽度。width 默认设置内容区域的宽度,但如果 box-sizing 属性被设置为 border-box,就转而设置边框区域的宽度。

二、 话不多说,直接上代码看效果

xml 复制代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <style>
    div {
      color: #fff;
      font-size: 2rem;
      text-align: center;
    }
    .parent {
      width: 600px;
      height: 600px;
      background-color: blue;
      border: 10px solid black;
      padding: 20px;
    }

    .child {
      background-color: red;
      border: 10px solid grey;
      margin: 20px;
      height: 100px;
    }

    .auto{
      width: auto;
    }
    
    .hundred-percent{
      width: 100%;
    }
  </style>

  <body>
    <div class="parent">
      parent
      <div class="child auto">child1:  width:auto</div>
      <div class="child hundred-percent">child2:  width:100%</div>
    </div>
  </body>
</html>

三、 分析比较

  1. 我们给parent 设置了padding:20px 内边距,给两个child 都设置了margin:10px的外边距。child1 的width 属性是auto,child2 的width 属性是100%。

  2. 很明显地看到两个child的不同表现,child1的宽度是可以适应的,不会溢出其父元素。

  3. c h i l d 1 最终的宽度值 : 540 p x = 600 p x ( 父元素宽度 ) − 20 p x ( 父元素 p a d d i n g ) − 20 p x ( c h i l d 1 m a r g i n ) − 10 p x ( 父元素 b o r d e r ) − 10 p x ( c h i l d 1 b o r d e r ) child1最终的宽度值: 540px = 600px(父元素宽度) - 20px(父元素padding) - 20px (child1 margin) - 10px(父元素border) - 10px (child1border) child1最终的宽度值:540px=600px(父元素宽度)−20px(父元素padding)−20px(child1margin)−10px(父元素border)−10px(child1border)

  1. 而child2的宽度则是和父元素一样大最终溢出了其父元素。

  2. c h i l d 2 最终的宽度值 : 600 p x = 600 p x ( 父元素宽度 ) child2最终的宽度值: 600px = 600px(父元素宽度) child2最终的宽度值:600px=600px(父元素宽度)

四、 结论

width:100% : 是子元素的 content 撑满父元素的content,如果子元素还有 padding、border等属性,或者是在父元素上设置了边距和填充,都有可能会造成子元素区域溢出显示;

width:auto : 是子元素的 content+padding+border+margin 等撑满父元素的 content 区域。

> 所以,在开发中尽量还是选择```width:auto```,因为当从边距、填充或边框添加额外空间时,它将尽可能努力保持元素与其父容器的宽度相同。而```宽度:100%```将使元素与父容器一样宽。额外的间距将添加到元素的大小,而不考虑父元素。这通常会导致问题。

相关推荐
jktantan6 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
前端·javascript·vue.js
夕除7 小时前
Redis 过期策略
redis·笔记·面试
2601_962885727 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
excel8 小时前
encodeURI 和 encodeURIComponent 有什么区别?
前端
前端精髓8 小时前
调用openrouter的免费API模型
java·前端·javascript
赛博守夜人8 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
开开心心_Every8 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
networknomad9 小时前
OpenReplay:自己搭的会话回放工具,给前端排错用的
前端·其他
缓慢更新10 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易10 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员