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

一文大白话讲清楚CSS盒子和盒子模型

一文大白话讲清楚CSS盒子和盒子模型

1.啥是个CSS盒子

  • 鞋盒你家总有吧,方方正正,有长度有高度。
  • css盒子跟这个八九不离十
  • 当我们编写html页面时,写了很多的元素,比如"div","img"等,浏览器的渲染引擎会根据一定的标准(CSS基础框盒模型,CSS Basic box model),讲所有元素表示为一个个的盒子,然后按照你的css样式表去摆放这些盒子。
  • 一个盒子有四个基本部分:
  1. content,盒子的主体,理解为家里鞋盒里的鞋;对应就是实际内容,比如说文字或者图片等
  2. padding,盒子的内边距,理解为鞋距离鞋盒内侧有多远
  3. border,盒子的边框,理解为鞋盒的面厚度
  4. margin,盒子的外边距,理解为鞋盒距离旁边的鞋盒有多远
  • 来张图解释一下
    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 上代码

<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style>.box{width: 200px;height: 100px;padding: 50px;margin: 40px;border: 30px solid red;}</style>
<div class="box">我是一个box1我是一个box1我是一个box1我是一个box1我是一个box1我是一个box
</div>
<div class="box">我是一个box2我是一个box2我是一个box2我是一个box2我是一个box2我是一个box2
</div>

在这里插入图片描述

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 发现问题没有,我们设置的width是200,height设置是100,可在浏览器面width和height变成了360x260
  • 360怎么来的,200+50x2+30x2,也就是200+50+50+30+30,也就是width + padding-left + padding-right + border-let + border-right
  • 当然这只是数字显示360,我们可以看到,当鼠标移动到box1上时,实际上最大圈的黄色也被选中了,也就说margin也被算在盒子的长宽里面了。
  • 所以,盒子的实际宽度是440=360+40+40=360 + margin-left + margin-right
  • 也就是说,盒子的真正宽度=width + padding-left + padding-right + border-let + border-right + margin-left + margin-right=440
  • 这就是W3C标准盒子模型
  • 问题来了,这咋就是标准盒子模型了呢,为啥叫模型呢,我们接着往下说

2. 啥是盒子模型

  • 上面我们讲了,本来width是200,后面成了440了,原因是加了border,padding,那是不是所有的情况下都这么加呢,还真不是。
  • 所以我们怎么加,按照什么规则加就是盒子模型
  • 说白了,盒子模型就是怎么以什么样的方式计算盒子的真实长宽。加哪个,哪个不加
  • 好吗,接下来说具体怎么个划分法

3. 常见的盒子模型

3.1 W3C标准盒子模型

  • 既然说了,盒子模型就是怎么计算盒子的真实长宽,那直接上规则
  • 宽=width(内容宽度) + padding-left + padding-right + border-left + border-right + margin-left + margin-right
  • 高=height(内容高度)+ padding-top + padding-bottom + border-top + border-bottom + margin-top + margin-bottom
  • 也就是说,width只是内容的高度。
  • 而且浏览器默认的盒子模型就是W3C标准盒子模型

3.2 IE怪异盒子模型

  • IE净出幺蛾子,没办法,人家是祖先,那他怪异在哪呢

  • 她怪异在

  • 宽=width(内容宽度+padding+border)+margin

  • 高=height(内容高度+padding+border)+margin

  • 啥意思,就是我们css写了width=200,这个width就包含内容的宽,border和padding的值

  • 对比,W3C盒子模型,我们设置了width=200,这个宽就只是内容的宽,border和padding不在里面。

  • 而IE怪异模型,内容的宽+border+padding=width;也就是内容的宽+100+60=200,所以内容的宽其实只有40

  • 我们可以把1.0的代码切换成IE怪异盒子模型

  • 上图
    在这里插入图片描述

  • 看到了吧,内容就被挤得剩一点点了

4.怎么切换盒子模型呢

  • 问得好,通过box-sizing:—
  • box-sizing:content-box;内容盒子,意思内容就是原盒子,没错了,这就是W3C标准盒子模型了
  • box-sizing:border-box;边框盒子,意思边框以内的东西才是原盒子,没错了,这是IE怪异模型了
  • box-sizing:inherit;继承父元素的盒子模型,这个好理解吧,我爹啥模型我就啥模型
  • 上代码
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style>.box{width: 200px;height: 100px;padding: 50px;margin: 40px;border: 30px solid red;box-sizing: content-box;//就在这里切换}</style>
<div class="box">我是一个box1我是一个box1我是一个box1我是一个box1我是一个box1我是一个box
</div>
<div class="box">我是一个box2我是一个box2我是一个box2我是一个box2我是一个box2我是一个box2
</div>

OK了,盒子模型讲完了,下一篇文章讲BFC吧


http://www.mrgr.cn/news/81913.html

相关文章:

  • 处理 .gitignore 未忽略文件夹问题
  • 3.3 Go函数可变参数
  • 离线docker安装数据库(无法访问互联网),那么直接使用 docker pull mysql:latest
  • 业务幂等性技术架构体系之消息幂等深入剖析
  • vue.js辅助函数-mapMutations
  • lerna使用指南
  • 鸿蒙TCPSocket通信模拟智能家居模拟案例
  • python初学练习之基于文件操作的停车管理系统
  • 19.springcloud_openfeign之案例
  • Snowflake基础知识
  • WPF 绘制过顶点的圆滑曲线 (样条,贝塞尔)
  • Qt之QtConcurrent
  • 【服务器项目部署】⭐️将本地项目部署到服务器!
  • 数仓建模:如何进行实体建模?
  • 大模型在自动驾驶领域的应用和存在的问题
  • MySQL数据库的备份与恢复你会了吗?
  • ubuntu2204 gpu 没接显示器,如何连接vnc
  • 3.2、SDH帧结构
  • Rust : tokio中select!
  • 【机器学习】【朴素贝叶斯分类器】从理论到实践:朴素贝叶斯分类器在垃圾短信过滤中的应用
  • Elasticsearch名词解释
  • C++ 设计模式:中介者模式(Mediator Pattern)
  • gesp(二级)(16)洛谷:B4037:[GESP202409 二级] 小杨的 N 字矩阵
  • 自定义 Element Plus 树状表格图标
  • ArcGIS Pro地形图四至角图经纬度标注与格网标注
  • html+css+js网页设计 美食 家美食1个页面