当前位置: 首页 > news >正文

width:100%和width:auto有啥区别

项目中使用了with属性,突然好奇auto 和 100% 的区别,特地搜索实践总结了一下观点

  • 一、 width属性介绍
  • 二、 代码带入
  • 三、 分析比较
  • 四、 总结

一、 width属性介绍

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

二、 代码带入

<!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>

上图代码效果

三、 分析比较

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

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

child1 最终宽度为
600px - 20px(外边框)* 2 - 0px(内边距)* 2 - 10px (边框宽度)* 2 = 540px

在这里插入图片描述

而child2的宽度则是和父元素一样大最终溢出了其父元素。
child2 最终宽度为 600px
在这里插入图片描述

四、 总结

  1. width:100% : 子元素的 content 撑满父元素的content,如果子元素还有 padding、border等属性,或者是在父元素上设置了边距和填充,都有可能会造成子元素区域溢出显示;
  2. width:auto : 是子元素的 content+padding+border+margin 等撑满父元素的 content 区域。
  3. 所以,在开发中尽量还是选择 width:auto ,因为当从边距、填充或边框添加额外空间时,它将尽可能努力保持元素与其父容器的宽度相同。
    而width:100% 将使元素与父容器一样宽。额外的间距将添加到元素的大小,而不考虑父元素。这通常会导致问题。

相关文章:

  • MySQL(基础篇)——函数、约束
  • 最新开源!用C++编写的3D gaussian splatting
  • three 模型对象、材质
  • c# 异常处理
  • 音视频数字化(数字与模拟-电视)
  • LACP——链路聚合控制协议
  • Superset二次开发之Markdown嵌入图片
  • YOLO如何训练自己的模型
  • Swagger接口文档管理工具
  • 【EFK】基于K8S构建EFK+logstash+kafka日志平台
  • EAP-TLS实验之Ubuntu20.04环境搭建配置(FreeRADIUS3.0)(四)
  • ubuntu开发板问题汇总
  • Sentinel 动态规则扩展
  • 设计模式篇---观察者模式
  • 4.5.CVAT——视频标注的详细步骤
  • 【Leetcode】101. 对称二叉树
  • AngularJS指令开发(1)——参数详解
  • create-react-app做的留言板
  • docker-consul
  • JavaScript DOM 10 - 滚动
  • Java反射-动态类加载和重新加载
  • java小心机(3)| 浅析finalize()
  • Mysql优化
  • Python socket服务器端、客户端传送信息
  • Python_网络编程
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 初探 Vue 生命周期和钩子函数
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 离散点最小(凸)包围边界查找
  • 如何实现 font-size 的响应式
  • 使用API自动生成工具优化前端工作流
  • 通过npm或yarn自动生成vue组件
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #14vue3生成表单并跳转到外部地址的方式
  • #Linux(Source Insight安装及工程建立)
  • #pragma 指令
  • (5)STL算法之复制
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)fread与fwrite详解
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (八)Flask之app.route装饰器函数的参数
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (剑指Offer)面试题34:丑数
  • (四) Graphivz 颜色选择
  • (循环依赖问题)学习spring的第九天
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)菜鸟学数据库(三)——存储过程
  • (转)树状数组
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .net 4.0发布后不能正常显示图片问题
  • .net framework 4.0中如何 输出 form 的name属性。