前端面试题中的“盒模型”是什么?
在进行网页布局时,我们一定离不开盒模型,接下来开始学习什么是盒模型?
什么是盒模型?
css 盒模型(Box Model),在html中任何一个元素都可以看作盒子,这里说的盒子与现实不太一样,css中盒子是二维的,盒子由内到外分四个部分:margin(外边距)、border(边框)、padding(内边距)、content(内容)。css通过margin、border、padding三个属性来控制盒子,content是html元素的内容。
属性介绍
- margin:是盒子的外边框,包含了上下左右四条边,开发者可以单独设置,也可以统一设置。
margin-top:上边距
margin-right:右边距
margin-bottom:下边距
margin-left:左边距
代码示例1: /*margin属性后只跟1个值,同时设置四条边的边距相等*/ margin:10px; /*上面的样式等同于下面的样式*/ margin-top:10px; margin-right:10px; margin-bottom:10px; margin-left:10px;
代码示例2: /*margin属性后跟2个值,第一个值设置上下边距,第二个是设置左右边距*/ margin:20px 10px;/*上面的样式等同于下面的样式*/ margin-top:20px; margin-right:10px; margin-bottom:20px; margin-left:10px;
代码示例3: /*margin属性后跟3个值,第一个值设置上边距,第二个是设置左右边距,第三个值设置下边距*/ margin:20px 50px 10px; /*上面的样式等同于下面的样式*/ margin-top:20px; margin-right:50px; margin-bottom:10px; margin-left:50px;
代码示例4: /*margin属性后跟4个值,第一个值设置上边距,第二个是设置右边距,第三个值设置下边距,第四个值设置左边距*/ margin:10px 20px 30px 40px; /*上面的样式等同于下面的样式*/ margin-top:10px; margin-right:20px; margin-bottom:30px; margin-left:40px;
- padding:表示盒子内边距,与外边距不同,padding不是只能完全透明,可以设置背景颜色和图片。padding也包含了上下左右四个方向边距,可以单独设置,也可以简写设置,与上面margin类似,可参考margin的4个代码实例。
- border:表示盒子的边框,允许设置多种样式和颜色,与margin类似,可以对四个方向边框分别设置,也可简写。
border-top:上边框
border-right:右边框
border-bottom:下边框
border-left:左边框
设置边框时,可以分别对边框的宽度、样式和颜色进行设置。分别为:
border-width : 边框宽度
border-style : 边框样式
border-color : 边框颜色
边框属性进行简写时:border:宽度 样式 颜色。如:border:5px solid red。
border实例1: border:5px solid red; /* 上边的简写相当于下面分别设置 */ border-width:5px; border-style:solid; border-color:red;
border-style属性值及意义:
- none:无边框
- hidden:与none相同,hidden用于解决边框冲突。
- solid:实线。
- dashed:虚线。
- double:双线。
- dotted:点状边框。
- groove:定义3D沟槽边框。
- ridge:3D脊边框。
- inset:3D嵌入边框。
- outset:3D突出边框。
边框实例2: /* 边框使用简写时,表示四条边框的宽度、样式及颜色完全相同 */ border:2px solid green; /* 上边的样式等同于下面的样式 */ border-top:2px solid green; border-right:2px solid green; border-bottom:2px solid green; border-left:2px solid green;
边框实例3: /* 边框使用简写时,表示四条边框的宽度、样式及颜色完全相同 */ border-top:2px solid green; /* 上边的样式等同于下面的样式 */ border-top-width:2px; border-top-style:solid; border-top-color:green;
盒子大小
盒子的大小指的是盒子的宽度和高度。默认情况下width和height属性只是设置了content部分的宽高,盒子实际的宽和高按下面公式计算:
实际宽度 = width + margin-left + padding-left + border-left + border-right + padding-right + margin-right;
实际高度 = height+ margin-top + padding-top + border-bottom + border-bottom + padding-bottom + margin-bottom;
上边说的是默认情况下的计算方法,另一种情况下,width、height设置的就是盒子的宽高。盒子的宽高是由box-sizing属性控制的,box-sizing属性值:
- content-box:默认值,width,height设置的内容宽高,不包含内外边距和边框。
- border-box:设置的width、height包含了边框和内边距,真正的元素高度需要减去边框和内边距才能得到。
- inherit:继承父级的box-sizing属性值。
属性值为content-box时,这种盒子称为标准盒子模型,为border-box时,盒子称为IE盒子模型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?