Blogger Information
Blog 34
fans 0
comment 1
visits 22440
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
CSS基础之盒模型-PHP培训九期线上班
丝丝心动的博客
Original
545 people have browsed it

    

       页面中, 由块级框和行内框围起来封闭区域,在用户看来就像是一个个盒子,所以页面中的元素我们也可以用一个个不同类型的盒子来表示。对应不同的框类型, 盒子也可以行为块级盒子和行内盒子,研究盒模型主要是用来布局, 而行内盒子无法设置大小,所以只研究块级盒子。

       盒模型的基本属性:width: 宽度   height: 高度   background: 背景    padding: 内边距    border: 边框    margin: 外边距  ,这些属性中部分作用在盒子的不同位置又有不同的效果,下面用一张图来直观的描述:

1572604947897290.jpeg

            由上图可知,padding,border,margin具有方向性,方向遵循: 上、右、下、 左的顺序,即顺时针旋转,每个方向上有对应的盒模型属性,以padding举例:  padding-top: 上内边距   padding-right: 右内边距   padding-bottom: 下内边距    padding-left: 左内边距

            注意:padding和margin,即内外边距默认是透明的,所以只需要设置宽度即可,而border即边框不透明,除可以设置宽度外还可以设置样式与前景色,即每个方向上都可以设置width,style,color三个特征

           下面介绍盒子重要的几个点:

            1、盒子 ' box-sizing '  解决了什么问题, 不用它应该如何处理 ?

             box-sizing: border-box;设置盒子宽高定位到边框级别,即大小包括了边框与内边距,可以清除内边距(padding)和 边框(border)对盒子大小的影响。不用它 可以设置 盒子的宽高 = 原盒子宽高 - padding宽高 - border宽高,来保持盒子宽高和原来一样大小。更形象直观感知如下图:

1572606595601523.jpeg

            2、 盒子外边距之的合并以及 嵌套盒子之间内边距与外边距的表现

               a  同级盒子之间:添加外边距后出现了外边距的合并, 也叫外边距的塌陷 ,二个盒子之间的间距, 最终由以较大值确定

               b  嵌套盒子之间:子盒子外边距会传递到父盒子,通过给父盒子添加内边距或边框来解决,外边距在水平方向取值auto时, 可以实现子盒子的水平居中显示效果

             具体案例如下:

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>外边距对盒子位置的影响</title>
    <link rel="stylesheet" href="static/css/style2.css">
</head>
<body>
<!--页面中多个个盒子之间的关系有同级和嵌套二种-->
<!--同级关系: 外边距合并-->
<div class="box1"></div>
<div class="box2"></div>
<hr>
<!--嵌套关系: -->
<!--1. 外边距由内向外传递-->
<div class="box3">
    <div class="box4"></div>
</div>
<hr>
<!--2. 子盒子在父盒子中的居中显示-->
<div class="box5">
    <div class="box6"></div>
</div>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

/*外边距对盒子位置的影响*/

/*清除内边距与边框对盒大小的影响*/
div {
    box-sizing: border-box;
}
.box1 {
    width: 100px;
    height: 100px;
    background-color: lightblue;
}
.box2 {
    width: 100px;
    height: 100px;
    background-color: lightgreen;
}
/*上面盒子下外边距20px*/
.box1 {
    margin-bottom: 20px;
}
/*下面盒子上外边距30px*/
.box2 {
    margin-top: 30px;
}
.box3 {
    width: 200px;
    height: 200px;
    background-color: lightblue;
}
.box4 {
    width: 150px;
    height: 150px;
    background-color: lightgreen;
}
/*子盒子设置外边距*/
.box4 {
    margin-top: 30px;
}
/*其实,给子盒子添加外边距,对于父盒子来说就是添加内边距*/
/*解决方案1: 父盒子添加内边距*/
.box3 {
    /*padding-top: 30px;*/
}
/*边框具有封闭盒子空间, 拦截内边距padding扩展的作用*/
/*解决方案2: 父盒子添加边框*/
.box3 {
    border: 1px solid rgba(0,0,0,0);
}
.box5 {
    border: 2px solid gray;
}
.box6 {
    width: 300px;
    height: 150px;
    background-color: lightgreen;
}
/*左右挤压的结果, 就会使子盒子水平居中显示在父盒子中, 可以简写为:*/
.box6 {
    margin: auto;
}
/*第一个参数是设置上下margin*/
.box6 {
    margin: 10px auto;
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果如下:

盒子.png

手写代码:

1572761581441220.jpg

1572761618267481.jpg

          3、盒子的背景颜色的线性渐变和背景图片大小与位置关系

           a .背景色的控制,主要有裁切和渐变二类

               background-color: 设置背景色,支持单词,16进制,rgb()/rgba()

               background-clip: 设置背景色应用范围(裁切),支持内容,内边距和边框三级

               background: linear-gradient(): 线性渐变

               background: radial-gradient(): 径向渐变

           b .背景图片设置涉及图片的位置,大小, 是否重复等

               background-image: url(): 设置背景图片

               background-position: 设置背景图片显示位置

               background-size: 设置背景图片显示大小

               background-repeat: 设置背景图片是否重复

               background-attachment: 设置背景图片是否随滚动条滚动

具体案例如下:

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>背景控制</title>
    <link rel="stylesheet" href="static/css/style3.css">
</head>
<body>
<div class="box1"></div>
<div class="box2"></div>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

.box1,.box2 {
    width: 450px;
    height: 500px;
    box-sizing: border-box;
    border: 2px solid blueviolet;
    box-shadow: 5px 5px 2px #888;
    float: left;
}
.box2{
    margin-left: 30px;
}

/*1. 背景色*/
.box1 {
    background-color: lightblue;
}
/*通过边框间隙,可以看到背景色会自动延伸到内边距, 边框*/

/*背景裁切: 设置背景的覆盖范围, 也适用于背景图片*/
.box1 {
    /*内容区*/
    background-clip: content-box;
}

/*背景色渐变*/
/*线性渐变*/
.box1 {
    /*可连续设置多种颜色的渐变效果*/
    background: linear-gradient(red, green, blue, white);
}

/*径向渐变*/
.box1 {
    /*向左上径向渐变, ,模拟日照效果, 注意方向词是"at", 不是"to"*/
    background: radial-gradient(at left top, white, coral, yellow);
}

/*2. 背景图片 */

.box2 {
    /*设置背景图片*/
    background-image: url("../images/gril.jpg");

    /*设置背景重复: repeat, no-repeat, repeat-x, repeat-y*/
    background-repeat: no-repeat;

    /*设置背景图片的位置: 水平, 垂直*/
    /*支持关键字设置*/
    /*background-position: center center;*/
    /*支持数值或百分比*/
    background-position: 50% 50%;

    /*设置背景图片的大小*/
    /*图片拉伸等比例填充,完全覆盖盒子,比例不同可能会有部分图片内容被隐藏*/
    background-size: cover;
    /*图片完全填充, 比例不同,盒子可能会出现空白区域*/
    /*background-size: contain;*/
}

/*以上设置可以使用组合设置来简化:*/
/*.box2 {*/
/*    background: lightblue url("../images/gril.jpg") no-repeat 50% 50%;*/
/*    background-size: cover;*/
/*}*/

运行实例 »

点击 "运行实例" 按钮查看在线实例

运行效果展示:

1572621569352295.jpg

手写代码:

1572761653209094.jpg



Correction status:qualified

Teacher's comments:作业完成的很棒, 一会记得把手写版本发上来, 先过了
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post