css相关内容:盒子模型

什么是盒子模型?

在HTML学习中,我们了解到,每个标签的本质都是形成一个独立的空间,用于各种操作。各种标签形成的独立的空间就是盒子模型。简单来说,盒子模型就是各种标签的抽象化产物。我们可以针对盒子模型进行各种参数设置,达到样式优化的效果。

盒子模型的分类

针对HTML标签的各种特征,盒子模型共分为4类。

块级盒子

块级盒子的特点是独占一行且支持用样式设置宽度和高度。一般情况下,div标签、ul标签、li标签、h标签默认为块级盒子。

内联级盒子

内联级盒子的特点是不独占一行且不支持用样式设置宽度和高度。一般情况下,span标签、a标签默认为内联级盒子。

内联块级盒子

内联块级盒子的特点是不独占一行且支持用样式设置宽度和高度。一般情况下,img标签、input标签默认为内联块级盒子。

弹性盒子

弹性盒子的特点是不论父类原本能不能放下元素,子元素始终横向布局,如果父元素放不下,则会压缩子元素。没有标签默认为弹性盒子,需要在样式中进行设置。

盒子模型之间的对比和相互转化

盒子模型之间的对比

标签对应的盒子类型不是一成不变的,可以在样式中用display属性进行设置,下面先展示不同盒子类型之间的对比。

默认页面代码如下:

    <div>演示盒子模型</div>
    <div>演示盒子模型</div>
    <div>演示盒子模型</div>
    <span>演示盒子模型</span>
    <span>演示盒子模型</span>
    <span>演示盒子模型</span>
    <img src="img/宫殿.jpg" alt="这是一张宫殿图片" style="width: 200px;">
    <img src="img/宫殿.jpg" alt="这是一张宫殿图片" style="width: 200px;">
    <img src="img/宫殿.jpg" alt="这是一张宫殿图片" style="width: 200px;">

默认页面如下:

11ded43ac6a24f06a4202ccf44c3229e.png

在css中用以下代码进行样式优化:

div,
span,
img{
    background: gold;
    width: 200px;
    height: 100px;
}

页面变化如下:

1c22b31f389247a9863cf537f4dd3730.png可以看出块级盒子类别中的div标签执行了所有的样式优化代码,而内联级盒子类别中的span标签只执行了背景颜色,且不是独占一行;内联块级盒子中的img标签执行了所有代码(背景颜色图片不能显示),由此可以看出不同盒子类别之间的属性的不同。

盒子模型之间的相互转化

其他盒子转化为弹性盒子可以使用display:flex。

对整个区域转化为弹性盒子属性如下所示:

body {
    display: flex;
}

效果如下:

ece6602472bf4d619338e46a8e92164b.png

以下为其他盒子类型转化代码及效果:

转化为块级盒子:

display:block

效果如下:

3daaee8490a942d3a9fcec1f5eacca25.png

转化为内联级盒子:

display: inline;

效果如下:

080c5d874192433280795e8b087023e8.png

转化为内联块级盒子:

display: inline-block

效果如下:

3c8e6e941ac340f38764c4ab57ca030a.png

盒子模型的组成

到这里,我们介绍完了盒子模型不同类型以及之间的相互转化,现在我们介绍一下盒子模型的组成。

盒子模型组成分为四个部分,分别为内容区、填充区、边框区、外边距,它们之间的关系如下图所示:

51b7fdecc92049c5a08c227e46191521.png

盒子模型属性设置

为了更好地展示盒子模型对元素的影响,整个页面只留下一个div标签。

初始页面如下:

0134750cdc0a44729799f18b6447d0f8.png

内容区设置

内容区主要设置为宽度和高度,由width和height属性控制  
    width:200px;
    height:100px;

填充区设置padding

填充区设置规则为:从上开始,顺时针进行旋转,不够了找对称。

    padding: 50px;设置上下左右都为50px
    padding:50px 20px;上下为50px,左右为20px
    padding: 50px 20px 10px;上为50px,右为20px,下为10px,左边没设置找对称为20px
    padding: 50px 20px 10px 100px;上为50px,右为20px,下为10px,下为100px

效果如下(展示最后一个):

484f435797254e2f9d16741de16cf0a2.png

也可以对上下左右单个方向进行单独设置,但如果上面已经设置了一个方向的属性,又单独进行设置的话,会覆盖上面的单方向属性。

    padding-top: 50px;单独设置上方向属性
    padding-bottom: 10px;单独设置下方向属性
    padding-left: 100px;单独设置左方向属性
    padding-right: 30px;单独设置右方向属性

效果如下:

bffc4f4504e84728a2d7d6edc684d4b0.png

边框区设置border

边框区是一个复合属性,由三个方面组成,分别为边框样式、边框颜色、边框宽度,如果没有设置好这三个方面,则边框区不能工作。

    border-style:边框样式
    border-color:边框的颜色
    border-width:边框宽度

这三个方面可以同时设置,且不需要区分先后顺序。

 border:solid 10px blue;值不区分顺序,空格隔开

效果如下:

c8c2c36bc36e4bbf88fc13aa58697c3f.png

也可以根据不同方向进行单独的边框设置,和填充区一样,下面会覆盖上面的效果。

    border-top: solid 10px blue;针对上面边框进行设置
    border-bottom: dashed 10px pink;针对下面边框进行设置
    border-left: dotted 10px red;针对左面边框进行设置
    border-right: double 10px green;针对右面边框进行设置

效果如下:

8c149693492945c48e49b58fd719785a.png

也可以针对某个方向的某个方面进行单独设置:

border-top-color: aqua;对上方向的颜色进行单独设置

效果如下:

e11486dd01d3405194c8b2dbd3842b1c.png

外边距设置margin

外边距设置规则和填充区一样:从上开始,顺时针进行旋转,不够了找对称。

    margin: 50px;设置上下左右都为50px
    margin:50px 20px;设置上下为50px,左右为20px
    margin: 50px 20px 100px;设置上为50px,右为20px。下为100px,左没设置找对称为20px
    margin: 50px 20px 100px 0;设置上为50px,右为20px。下为100px,左为0px

效果如下(只展示最后一个):

c4accfe15d2d420daeae66f1aac190a1.png

也可以针对不同方向进行单独设置(还是会覆盖前面的设置):

    margin-top: 50px;单独对上方向进行设置
    margin-left: 100px;单独对左方向进行设置
    margin-bottom: 10px;单独对下方向进行设置
    margin-right: 30px;单独对右方向进行设置

效果如下:

7689855097a34845943fbe3579976614.png

还有一个特殊的属性,这个属性只针对块级元素,作用效果为水平居中。

margin: auto;   

效果如下:

17339dc73f6c4c849200348dfe5a56d2.png

值得提的一点是,因为是外边距,如果同一类元素在页面上紧挨着,他们之间的边距为两者边距的最大值。比如,div元素,上边距设置为10px,下边距设置为50px,两个div元素紧挨着,这两个元素的边距为50px。

内容区特殊属性box-sizing

     box-sizing:
     content-box默认宽高针对内容区设置
     border-box宽高针对整个盒子设置

以border-box为例

    background: gold;
    width: 200px;
    height: 50px;
    box-sizing:content-box;这里加了一个box-sizing
    padding: 50px 20px 10px 100px;
    padding-top: 50px;
    padding-bottom: 10px;
    padding-left: 100px;
    padding-right: 30px;
    border:solid 10px blue;
    border-top: solid 10px blue;
    border-bottom: dashed 10px pink;
    border-left: dotted 10px red;
    border-right: double 10px green;
    border-top-color: aqua;
    margin: 50px 20px 100px 0;
    margin-top: 50px;
    margin-left: 100px;
    margin-bottom: 10px;
    margin-right: 30px;
    margin: auto;    

这里整个盒子的属性不管怎么设置,盒子宽高属性就是对应上面width宽,height高的盒子(原理为对内容区进行压缩),效果如下:

7984a0ae952843f5a1bbb4bb6e8fbbe3.png

到此,盒子模型全部内容介绍完毕。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值