(二) css盒子模型

记录前端学习过程,方便查漏补缺,如有错误,请评论告知~

一、网页布局的本质

网页布局过程:

 1、先准备好相关的网页元素,网页元素基本都是盒子Box

 2、利用CSS设置好盒子样式,然后摆放到相应位置

 3、往盒子里装内容

网页布局的核心本质:就是利用CSS摆盒子。

二、盒子模型


所谓盒子模型:就是把HTML页面中的布局元素看作是一个矩形的盒子,也就是一个盛装内容的容器。
CSS盒子模型本质上是一个盒子,封装周围的HTML元素,它包括:边框、外边框、内边距和实际内容
其中:
  • content:实际内容
  • padding(内边距):盒子边框与内容之间的距离
  • margin(外边距):盒子与盒子之间的距离
  • border(边框):字面意思

三、内边距(padding)

padding属性用于设置内边距,即边框与内容之间的距离

属性 作用
padding-left 左内边距
padding-right 右内边距
padding-top 上内边距
padding-bottom 下内边距

padding属性的复合写法可以有一到四个值

写法 意思
padding:10px; 上下左右内边距均为 10像素
padding:5px 10px; 上下内边距是5像素,左右内边距是10像素
padding:5px 10px 15px; 上内边距是5px,左右内边距是10px,下边距是15px
padding:5px 10px 15px 20px; 上是5px,右是10px,下是15px,左是20px   从上顺时针

也可以单独指定padding值:padding-top:10px; (其他方位同理)

注:padding可能会影响盒子的实际大小。

 

 

如上图,一个100 x 100的盒子,在设置padding为30px以后,盒子实际大小变为160 x 160

因此在使用时,应当注意padding对盒子大小的影响,以设置盒子的最终大小。

而当盒子没有设置width或height时,padding不会撑开盒子,会和父级盒子一样宽/高

四、外边距(margin)

1、margin属性用于设置外边距,即控制盒子和盒子之间的距离

属性 作用
margin-left 左外边距
margin-right 右外边距
margin-top 上外边距
margin-bottom 下外边距

margin的复合写法所代表的意义与padding一致

 margin可以让块级盒子水平居中     前提条件是必须指定了width

行内元素、行内块元素设置水平居中,只需要给其父元素添加text-align:center即可

.box { 
    width:100px;
    margin:0 auto;  
 }

以下写法均可:

  • margin:数值 auto;
  • margin:auto;
  • margin-left:auto; margin-right:auto

2、外边距合并问题

当上下相邻的两个块级元素(兄弟关系)相遇时,如果上面的元素有下外边距 margin-bottom,下面的元素有上外边距 margin-top时,则他们之间的垂直距离不是两个之和。

而是取两者中较大的值作为两个盒子之间的垂直距离

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
        }

        .one {
            margin-bottom: 100px;
        }

        .two {
            margin-top: 200px;
        }
    </style>
</head>

<body>
    <div class="one">1</div>
    <div class="two">2</div>
</body>

</html>
代码测试

解决:这种情况尽量只给一个盒子添加margin值

3、嵌套块元素垂直外边距的塌陷问题

对于两个嵌套关系(父子关系)的块元素,为子元素设置上外边距 或 父子同时拥有上外边距时,此时父元素会塌陷较大的外边距值(即:只会移动父元素,子元素不会移动,移动的距离取决于较大的那个外边距值)

通过浮动、固定、绝对定位等的盒子不会出现这种问题

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        .father {
            width: 400px;
            height: 400px;
            background-color: purple;

            /* 父元素的margin-top值大于子元素,所以会塌陷父元素的上外边框值,即:父元素距离上方200px */
            margin-top: 200px;
            /* overflow: hidden; */
        }

        .son {
            width: 200px;
            height: 200px;
            background-color: pink;

            margin-top: 100px;
        }
    </style>
</head>

<body>
    <div class="father">
        <div class="son"></div>
    </div>
</body>

</html>
测试代码

解决:

  1. 可以为父元素添加上边框,如:border-top:1px solid transparent(透明);
  2. 可以为父元素添加上内边距
  3. 可以为父元素添加:overflow:hidden(常用,因为不用改变盒子的大小)

4、清除内外边距 

网页很多元素都带有默认的内外边距,而且不同的浏览器默认的也不一致。因此在布局前,要清除下网页元素的内外边距。

/* 这也是css的第一句话~ */
* {
    padding: 0;   /*  清除内边距  */
    margin: 0;    /*  清除外边距  */
}

注:行内元素为了照顾兼容性,尽量只设置左右内外边距,不要设置内外上下边距。(可以转换成块元素或行内块元素)

       对于块元素和行内块元素则没有要求

五、边框(border)

1、border可以设置元素的边框。边框由:边框宽度(粗细)、边框样式、边框颜色三部分组成

border:boeder-width || border-style || border-color

其中 border-style可以设置如下值:

  • none:默认值,没有边框
  • solid:最常用,单实线边框
  • dashed:虚线边框
  • dotted:点线边框

 复合写法:border:5px solid red;  无顺序

 注:边框和影响盒子的大小

 合并相邻边框(表格):border-collapse:collapse;

 2、圆角边框   border-radius

此属性对于图片同样适用

border-radius:10px(半径)

圆:半径 = 盒子高度的一半   或   直接写  50%

其他写法:

  • border-top-right-radius:右上角的圆角   
  • border-bottom-left:左下角的圆角          其他同理

 

 

posted @ 2021-04-09 22:06  只猫  阅读(192)  评论(0编辑  收藏  举报