首页 前端知识 CSS从入门到精通——盒模型

CSS从入门到精通——盒模型

2024-05-29 10:05:20 前端知识 前端哥 440 510 我要收藏

第1关:透视盒模型:居中的的盒子页面

盒模型
盒模型(Box Model),是CSS中重要的基础之一。

浏览器在对文档进行布局时,会根据CSS盒模型将所有元素,表示为一个矩形盒子(Box)。换句话说,每个元素都是一个盒子。

盒模型描述了元素所占空间的内容。每个盒子有四个边:外边距(Margin)、边框(Border)、内边距(Padding)和内容(Content)。

图片表示盒模型,如下:
在这里插入图片描述
基础实例
在本关中,我们使用如下HTML实例,进行讲解:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Hello World</title>
    <link rel="stylesheet" href="./CSS/style.css">
</head>
<body>
    <h1>盒模型</h1>
    <div id="box1">盒子一宽度为200px,内间距为25px,外间距为20px、边框为25px。</div>
</body>
</html>

其中style.css文件初始内容为:

* {
    margin: 0;
    padding: 0;
}
#box1 {
    background-color: whitesmoke;
}

显示效果如下:
在这里插入图片描述

内容区域 (Content Area)
内容区域包含盒子的内容,显示文本和图像。一般使用width和height指定大小。

例如,指定box元素内容宽度:

#box1 {
    background-color: whitesmoke;
    width: 200px;
}

显示效果如下:
在这里插入图片描述

内边距(Padding)
内边距(Padding) 是指内容周围的区域,内边距默认是透明的。如果内容区域设置了背景、颜色或者图片,这些样式将同样延伸应用到内边距上。

可以使用padding-top, padding-right, padding-bottom, padding-left,分别指定内容区域的上边、右边、下边和左边的内边距。

例如,指定box元素内边距:

#box1 {
    background-color: whitesmoke;
    width: 200px;
    padding-top: 20px;
    padding-right: 10px;
    padding-bottom: 15px;
    padding-left: 10px;
}

显示效果如下:
在这里插入图片描述
为书写简洁,也可以使用padding简写内边距。内边距简写时指定的顺序为顺时针。如果四个边边距相同,只需要指定一个值。

例如,上面的例子可以简写为:

#box1 {
    background-color: whitesmoke;
    width: 200px;
    padding: 20px 10px 15px 10px;
}

其中 20px 10px 15px 10px 依据顺时针方向,分别对应为 上、右、下和左内边距。

边框(Border)
边框(Border)是围绕在内边距和内容外的边框。使用border属性指定样式。其指定方式与我们在上一节表格样式中讲解相同,所以在此不再赘述。

例如,指定box元素边框:

#box1 {
    background-color: whitesmoke;
    width: 200px;
    padding: 20px 10px 15px 10px;
    border: 25px dotted yellowgreen;
}

显示效果如下:
在这里插入图片描述

外边距(Margin)
外边距(Margin) 是指边框外的区域,外边距默认也是透明的。

可以使用 margin-top, margin-right, margin-bottom, margin-left分别指定外边距区域的上边、右边、下边和左边的内边距。同样的,属性顺序为顺时针。

例如,指定box元素外边距:

#box1 {
    background-color: whitesmoke;
    width: 200px;
    padding: 20px 10px 15px 10px;
    border: 25px dotted yellowgreen;
    margin-top: 20px;
    margin-right: 20px;
    margin-bottom: 20px;
    margin-left: 20px;
}

显示效果如下:
在这里插入图片描述
同样的,也可以使用简写属性 margin。同内边距一样,外边距简写时指定的顺序为顺时针。如果四个边边距相同,只需要指定一个值。

例如,上面的例子可以简写为:

#box1 {
    background-color: whitesmoke;
    width: 200px;
    padding: 20px 10px 15px 10px;
    border: 25px dotted yellowgreen;
    margin: 20px;    /*外边框四个边同时设置为20px*/
}

任务要求
学会了基本表格样式修改,现在让我们来实践一下吧。请在右侧的编辑框中修改style.css文件,完成index.html中元素样式。要求如下:

  • 设置box2元素,宽度为350px;
  • 使用简写内边距的方式设置box2的内边距为25px;
  • 设置box2元素边框为20px粗的黄绿色yellowgreen实线(注:直接使用单词指定颜色);
  • 设置box2元素的外边距的下边距为10px;
  • 使用简写内边距的方式设置body元素的内边距为20px。
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>Hello World</title>
    <link rel="stylesheet" href="step1/CSS/style.css">
</head>
<body>
    <h1>盒模型</h1>
    <div id="box2">盒子二宽度为220px,内间距为30px,外间距为10px、边框为20px。</div>
</body>

</html>

style.css文件

* {
    margin: 0;
    padding: 0;
}

body {
    /* ********** BEGIN ***********/
    padding: 20px;
    /* ********** END *************/
    border: 10px solid lightsalmon;
}

h1 {
    text-align: center;
}

#box2 {
    /* ********** BEGIN ***********/
    width: 350px;
    padding: 25px;
    border: 20px solid yellowgreen;
    margin-bottom: 10px;
    /* ********** END *************/
}

第2关:确定盒模型元素大小

确定元素大小
在 CSS 的默认盒子模型中,当我们指定一个CSS元素的高度与宽度时,只是指定了内容的宽度和高度。一个元素的大小,还包括其外边距、内边距和边框。通过box-sizing 属性可以更改计算元素宽度和高度的默认的 CSS 盒子模型。

box-sizing
box-sizing 属性值可以 设置为 content-box 或者 border-box。

/* 关键字 值 */
box-sizing: content-box;
box-sizing: border-box;
其分别含义如下:

content-box
如果设置 content-box 的 宽度为 width,高度为 height,元素实际布局占得宽度为 Width,高度为 Height。元素布局的实际大小,需要加上padding和border的大小。

所以,

元素布局所占宽度Width计算方法为:

Width = width + padding-left + padding-right + border-left + border-right
元素布局所占高度Height计算方法为:

Height = height + padding-top + padding-bottom + border-top + border-bottom
border-box

如何设置 border-box 的 宽度为 width,高度为 height,元素实际布局占得宽度为 Width,高度为 Height。元素布局的实际大小和 border-box 设置相同。

所以:

布局所占宽度 Width计算方法为:

Width = width(包含padding-left + padding-right + border-left + border-right)
布局所占高度 Height计算方法为:

Height = height(包含padding-top + padding-bottom + border-top + border-bottom)

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>盒模型——确定元素大小</title>
    <style type="text/css">
        .content-box { 
            width: 160px;
            height: 80px;
            padding: 20px;
            border: 8px solid red;
            background: yellow;
            box-sizing: content-box; 
             /* Total width: 160px + (2 * 20px) + (2 * 8px) = 216px
             Total height: 80px + (2 * 20px) + (2 * 8px) = 136px
             Content box width: 160px
             Content box height: 80px */
        }
        .border-box { 
            /***************** BEGIN *****************/
            width:216px;
            height:136px;
            /***************** END *****************/
            padding: 20px;
            border: 8px solid red;
            background: yellow;
            box-sizing: border-box;
        }
    </style>
</head>
<body>
    <div class="content-box">Content box</div>
    <br>
    <div class="border-box">Border box</div>
</body>
</html>

转载请注明出处或者链接地址:https://www.qianduange.cn//article/9892.html
标签
评论
发布的文章

JQuery中的load()、$

2024-05-10 08:05:15

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!