你不知道的css——1. 外在盒子、内在盒子,宽度和高度的计算,box-sizing属性

简介: 你不知道的css——1. 外在盒子、内在盒子,宽度和高度的计算,box-sizing属性

每个元素都有两个盒子,外在盒子和内在盒子。

  • 外在盒子负责元素是可以一行显示,还是只能换行显示;
  • 内在盒子负责宽高、内容呈现

“内联盒子” ——无法定义宽高,多个内联盒子会在一行显示,

“块级盒子” ——可以定义宽高,每个块级盒子都独占一行,多个块级盒子只能换行显示,

“块级容器盒子” —— 可以定义宽高,多个块级容器盒子会在一行显示

  • display:block 的元素由外在的“块级盒子”和内在的“块级容器盒子”组成。
  • display:inline-block 的元素由外在的“内联盒子”和内在的“块级容器盒子”组成
  • display:inline 的元素内外都是“内联盒子”
  • display:inline-table 的元素由外在的“内联盒子”和内在的“table盒子”组成,得到一个可以和文字在一行显示的表格

 

内在盒子并不是一个简单的矩形,而是由content,padding,border,margin(透明)四层嵌套构成的。

“内在盒子”又被分成了4个盒子,分别是content box、padding box、border box和margin box

  • margin是透明的,无法设置背景,垂直方向的两个元素的margin还存在合并的情况(margin的塌陷)
  • width属性默认作用于content box上,所以元素最终的宽度offsetWidth = width + 2 *padding + 2 *border
  • height属性默认也作用于content box上,所以元素最终的高度offsetHeight = height+ 2 *padding + 2 *border

box-sizing 属性

box-sizing 属性可以改变width和height的作用对象,默认box-sizing 属性的值为content-box


通过设置 box-sizing: border-box; 可以让width和height作用于border box上,此时元素最终的宽度offsetWidth = width,元素最终的高度offsetHeight = height

box-sizing 属性被发明出来最大的初衷是解决替换元素宽度自适应问题(替换元素的尺寸由内部元素决定,且无论其display属性值是inline还是block,常见的替换元素有 input, textarea, img, video, object )

所以,通常我们会在全局样式中添加下方代码

input, textarea, img, video, object {
  box-sizing: border-box;
}

目录
相关文章
|
28天前
|
前端开发
了解 css中 backface-visibility 属性
了解 css中 backface-visibility 属性
29 0
|
30天前
|
前端开发
CSS常用滤镜属性讲解
本文介绍了CSS滤镜的几种常用效果,包括高斯模糊、亮度和对比度调整、灰度化、图像反转、透明度调整、饱和度调整及复古滤镜等。例如,使用`blur(10px)`可使图像产生模糊效果,包裹层设置`overflow: hidden`可避免边缘模糊;`brightness(150%)`和`contrast(150%)`分别增强图像亮度和对比度;`grayscale(1)`将图像转为灰度;`invert(1)`实现图像颜色完全反转;`opacity(0.5)`调整图像半透明;`saturate(350%)`增加饱和度;`sepia(100%)`营造复古深褐色调;`hue-rotate(180deg)`改变
25 4
CSS常用滤镜属性讲解
|
30天前
|
前端开发
了解 css中 backface-visibility 属性
`backface-visibility` 是一个CSS属性,用于3D转换时控制元素背面的可见性,以优化渲染性能。默认情况下,背面被隐藏以减少不必要的渲染。此属性有两值:`visible` 表示背面可见;`hidden`(默认值)则隐藏背面。 通过双面卡片案例演示了其用法:两个重叠盒子,一个显示图片,另一个显示文字且初始状态为背面朝外。鼠标悬停时,图片盒子翻转显示背面,文字盒子翻转显示正面,同时设置 `backface-visibility: hidden` 以确保背面不被渲染。 兼容性良好,广泛支持现代浏览器。
29 2
了解 css中 backface-visibility 属性
|
13天前
|
前端开发 算法 开发者
CSS 的了解text-rendering属性
【8月更文挑战第24天】
|
17天前
|
前端开发 搜索推荐 UED
浅谈css的cusor属性
浅谈css的cusor属性
27 1
|
19天前
|
前端开发
CSS动画变形宝典:Transform属性,打造动态视觉盛宴!
CSS动画变形宝典:Transform属性,打造动态视觉盛宴!
|
21天前
|
前端开发 UED 开发者
神秘的 CSS 属性 “position: sticky” 究竟有何魔力?带你彻底理解粘性定位的奇妙世界!
【8月更文挑战第20天】在前端开发中,CSS的粘性定位(`position: sticky`)是一种结合了相对与固定定位优点的强大工具。它使元素能在特定条件下相对定位,达到指定阈值时转为固定定位,非常适合制作“吸顶”导航栏等。例如,设置`position: sticky; top: 0;`能让导航栏滚动至顶部时固定显示。此特性不仅限于导航栏,还可应用于侧边栏等,增强布局灵活性与用户体验。尽管如此,仍需注意不同浏览器间的兼容性和可能的布局冲突。
32 0
|
26天前
|
前端开发 UED 开发者
使用 CSS 的 line-height 属性来提高可读性
使用 CSS 的 line-height 属性来提高可读性
13 0
|
28天前
|
前端开发
CSS常用滤镜属性讲解
CSS常用滤镜属性讲解
29 0
|
2月前
|
前端开发
学习css的clip-path属性
【7月更文挑战第1天】了解CSS `clip-path`属性,用于定义元素显示区域的裁剪形状,如圆形、椭圆、多边形、矩形及SVG路径。通过配合过渡和动画,可创建动态交互效果。例如,`clip-path: circle(radius at center);`用于创建圆形裁剪,`polygon`用于自定义多边形。还可以使用`path()`引用SVG路径数据。[资源推荐:bennettfeely.com/clippy/](https://bennettfeely.com/clippy/),提供交互式工具测试不同形状。
47 0
学习css的clip-path属性
下一篇
DDNS