程序员

1-2-2【CSS核心样式】盒模型

2020-10-26  本文已影响0人  Liyager

老铁们,本节课中有许多案例不方便通过图片展示,希望老铁们自己动手实战,印象更深刻~


文章内容输出来源:拉勾教育大前端就业集训营

1.盒模型

属性 作用
width 描述盒子书写内容区域的宽度
height 描述盒子书写内容区域的高度
padding 描述盒子内边距的厚度
border 描述盒子边框线的厚度
margin 描述盒子外边距的厚度

2.盒模型区域划分

3.盒模型属性——width宽度

属性值 效果
auto 默认值,浏览器自动计算出实际宽度
px为单位的数字 用像素值定义区域的宽度
%为单位的数字 参考父元素宽度的百分比,定义区域的宽度

说明:div等元素独占一行,则width的值会自动撑满父元素的宽度区域;span等元素不独占一行,则width的值根据其内部元素内容宽度决定的。

4.盒模型属性——height高度

属性值 效果
auto 默认值,浏览器自动计算出实际高度
px为单位的数字 用像素值定义区域的高度
%为单位的数字 参考父元素高度的百分比,定义区域的高度

说明:在div属性中,我并没有设置高度,但实际上div的高度被里面的内容“撑起来”了。

说明:d1类盒子没有设置高度,d2类盒子5个属性都设置了,但是只有外边距没有撑开d1类盒子的高度。

5.盒模型属性——padding内边距

padding: 20px;

说明:若如上述示例设置外边距,则4个方向(上下左右)的厚度是一样的。

单一属性 作用
padding-top 上方内边距宽度
padding-right 右侧内边距宽度
padding-bottom 下方内边距宽度
padding-left 左侧内边距宽度

说明:如图所示,4个方向设定不同的数值,对应不同宽度的内边距。

padding: 10px 20px 30px 40px;

说明:按照“上、右、下、左”的顺序,依次书写对应方向的内边距值。

padding: 10px 20px 40px;

说明:按照“上、右(左)、下”的顺序,依次书写对应方向的内边距值,其中,左右共享一个属性值。

padding: 10px 20px;

说明:按照“上(下)、右(左)的顺序,依次书写对应方向的内边距值,其中,上下、左右分别共享一个属性值。

padding: 10px;

说明:上下左右共享一个属性值,四个方向厚度相同。

6.盒模型属性——border边框

属性值 效果
none 定义无边框
solid 定义边框为实线
dashed 定义边框为虚线
dotted 定义点状边框
double 定义双线样式边框
groove 定义3D凹槽边框
ridge 定义3D垄状边框
inset 定义3D内容凹陷效果
outset 定义3D内容突出效果

说明:

  • 工作中常用的有:solid和dashed(图中案例);
  • 3d效果有一些兼容问题,所以基本上是不用的。
属性名 作用
border-top 上边框属性
border-right 右边框属性
border-bottom 下边框属性
border-left 左边框属性

说明:每个方向的边框属性和border属性的设置方式类似,不同点在于,单个方向只负责对应方向边框的属性。

说明:如图所示,某个方向的属性值设定与border属性值设定是类似的,只是负责的方向不同而已。

7.盒模型属性——margin外边距

margin的属性设置方式与padding一模一样,这里就不加以赘述了。

8.盒模型拓展——清除默认样式

<style>
    * {
        margin: 0;
        padding: 0;
    }
    body,div,h1,h2,h3,p{
        margin: 0;
        padding: 0;
    }
</style>

说明:大型项目不使用通配符进行默认样式清除,建议使用并集选择器清除样式。

<style>
    ol,ul {
        margin: 0;
        padding: 0;
        list-style: none;
    }
</style>

说明:list-style属性控制了列表中项的前缀样式,none则不展示任何前缀。

<style>
    a {
        color: skyblue;
        text-decoration: none;
    }
</style>

说明:工作中经常清除a标签的默认颜色和下划线属性,清除后可制作样式精美的超链接元素。

9.盒模型拓展——height的应用

说明:设定高度后,一旦内容高度超出盒子高度,就会出现显示问题,所以必须根据需求决定是否设置高度。

属性值 效果
visible 默认值,可见的,溢出部分直接显示
hidden 溢出部分直接隐藏,隐藏超出边框范围的内容
scroll 溢出部分出现滚动条,可以拖动滚动条查看隐藏内容,多出盒子的部分被隐藏,不论是否溢出,水平和垂直方向都会出现滚动条
auto 如果没有溢出就正常显示,有溢出则对应方向出现滚动条

说明:visible,也是溢出属性的默认值,默认溢出部分正常显示。

说明:hidden,溢出部分隐藏,无法查看。

说明:scroll,溢出部分隐藏,但可以通过拖动滚动条来查看。

说明:auto,溢出部分隐藏,存在溢出的方向才会出现进度条。

10.盒模型拓展——居中设置

上节课讲过,这里不再赘述了。

单行文本:让文字行高line-height等于盒子高度 height。

多行文本:让元素高度自适应或者正好等于多行文字的高度,设置父元素内边距上下值相同。

说明:auto只在水平方向有作用,水平方向的 margin 如果设置为 auto,边距会自动无限增大,直到撑满整个父元素除了子元素宽度之外剩余的区域,如果两个水平方向都是auto,两边都要无限大,只能达到一个平衡,两边距离相同,所以盒子水平居中。

11.盒模型拓展——父子盒模型

说明:

  • 这里说的宽度,是子元素的width+padding+border+margin的加和。
  • 为了避免错误的出现,计算or量取宽度时,一个像素都不能出错。

说明:如图所示,div宽度设置为350px,三个p标签盒子的宽度是360px,因为差了10px,所以第三个p盒子跑到了下一行。

说明:子盒子div并没有设置width属性,就算配置了内外边距&边框,width依然会自动缩减,保证盒子整体宽度=父盒子宽度。

12.盒模型拓展——margin塌陷现象

说明:

  • 第1个盒子下外边距为20px,第2个盒子上外边距为10px,你会发现第1、2个盒子之间的距离,实际上只有20px,这就是塌陷现象。
  • 同级元素的塌陷,只存在于上下关系中。

说明:父盒子上外边距为0px,但由于子盒子的上外边距为200px,发生了塌陷,所以父盒子跟着子盒子一起向下移动了200px。

前端文章汇总目录

https://www.jianshu.com/p/6d80dd616ff4


结束语:一花一世界,一木一浮生,诸君共勉!

上一篇 下一篇

猜你喜欢

热点阅读