十一、理解不了盒子模型就用联想记忆法轻松解决(1)

盒子模型

浏览器在渲染网页时,会将网页中的元素看作是一个个的矩形区域,我们也将其称为盒子

页面中的每一个标签,都可以看做是一个盒子,通过盒子的视角更方便进行布局

CSS 中规定的盒子是由 内容区域 content内边距区域 padding边框区域 border外边距区域 margin 组成的,这就是盒子模型

联想记忆

我们可以把盒子模型联想成快递盒,快递盒子里面装的 东西 就是盒子的 内容 content ,东西与快递盒之间的缝隙就是盒子的 内边距 padding ,快递盒的 厚度 就是盒子的 边框 border 的大小,快递盒与快递盒之间的 距离 就是盒子的 外边距 margin

下面有一张比较形象的网图可以参考:

以 div 盒子为例,看一下标签的盒子模型:

盒子内容区域的宽度和高度

属性 widthheight 设置的宽高样式,默认设置的是盒子的 内容区域 的大小

盒子边框

可以给盒子的边框设置粗细(边框宽度)、样式、颜色效果:

  • 边框粗细:border-width
  • 边框样式:border-style(solid 实线、dashed 虚线、dotted 点线)
  • 边框颜色:border-color

上面的属性写法是单个样式,一般情况下,最常用的是 连写形式 ,例如:border: 1px solid red;

连写形式就是单个属性取值的连写,各取值之间以 空格 隔开,可以用 bd + 回车键 快速设置默认的盒子边框,再根据自己的需要修改。

上边设置的样式,是给矩形盒子的四条边都设置了相同的样式,有时我们只需要设置其中一条边就可以了,所以我们还可以按照 单方向设置 ,只给盒子指定的某个方向设置单独的边框样式。

比如说,我们要给 150 X 150 的盒子的上边框设置 宽 2px 的黑色虚线 边框:

加深对盒子模型的理解

有这样一个 需求:盒子尺寸 300 X 300,背景浅蓝色,边框 5px 实线 粉色,该如何实现?

问题:了解了盒子的构成,就会知道,我们设置的 width 和 height 是内容的宽高,而设置的边框会撑大盒子 ,300 X 300 是整个盒子的尺寸,那么就会有一个问题:盒子被撑大之后如何能满足现有需求呢?

解决 : 我们需要了解盒子的实际大小该如何计算,然后再手动减去多余的(手动内减),现阶段,盒子大小的初级计算公式:

  • 盒子宽度 = 左边框 + 内容的宽度 + 右边框
  • 盒子高度 = 上边框 + 内容的高度 + 下边框

代码实现

新问题 - 缩放问题

在调试过程中,我又发现了一个新问题,就是 DPI 问题(DPI 是 dots per inch 的缩写,意思是每英寸的像素数),在电脑的设置中,我发现自己电脑的缩放比是 125% ,这是 W10 系统推荐的缩放,若是不改变缩放,就会出现设置的边框与浏览器显示的数值不一样:

将缩放设置为 100% 之后,再去调试,就会发现设置的边框和显示的数值是一致的:

相关推荐
breeze jiang1 天前
CSS 三栏布局怎么写:Flex、Grid 完整方案与 BFC 区别
前端·css
何时梦醒1 天前
CSS 三栏布局与 BFC 深度解析:Float、Flex、Grid 三种方案一网打尽
前端·css·面试
烬羽1 天前
CSS 三栏布局:`margin-left: -100%` 凭什么把侧栏「拽」回上一行?彻底搞懂负 margin
css·面试·前端框架
BreezeJiang1 天前
写了 display:flex,为什么三栏布局还没完成?
前端·css
用户938515635071 天前
TypeScript 高级类型 + CSS 三列布局:从类型体操到样式工程的进阶之路
css·面试·typescript
莫问ABC2 天前
HTML、CSS、JavaScript 前端三件套
前端·css·html
fangzhanpeng1682 天前
(前端)5.盒子模型的宽高和边距
前端·javascript·css
用户059540174462 天前
把大模型记忆召回测试从 30 分钟手工核对压到 3 秒自动化,pytest + FAISS 这套组合救了我
前端·css
可视之道3 天前
CSS Container Queries 在组态大屏中的实战
css
雪碧聊技术4 天前
Vue + Element Plus 实现文本溢出显示省略号及悬浮提示
前端·javascript·css·vue.js·文本溢出省略