Blogger Information
Blog 5
fans 0
comment 0
visits 3546
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
CSS盒模型的原理、属性、及注意事项+PHP九期线上班191031
done
Original
776 people have browsed it

CSS盒模型的原理、属性、及注意事项

一、默写盒模型的全部属性,并准确说出他们的应用场景

实例


body {
    border: 1px solid gray;
}

.box {
    /* 默认情况下,盒子的宽高指的是内容区,添加边框和内边距时会撑开盒子改变大小 */
    /* 设置box-sizing属性,可以固定边框大小,向内挤压内容区,不会影响整体布局 */
    box-sizing: border-box;

    /* 盒子阴影,参数:h-shadow,v-shadow,blur(模糊),color */
    box-shadow: 5px 5px 2px gray;

    /* 盒子宽 */
    width: 200px;

    /* 盒子高 */
    height: 300px;

    /* 外边距,参数:从top开始顺时针设置,控制盒子与盒子之间的边框的距离*/
    margin: 10px 20px 30px 40px;

    /* 边框,参数:width,style,color */
    border: 10px dotted red;

    /* 内边距,参数:从top开始顺时针设置,控制盒子内部内容区到边框的距离 */
    padding: 10px 20px 30px 40px;

    /* 背景色 */
    background-color: lightblue;

    /* 背景裁切,控制背景色或背景图片作用到的范围,边框/内边距/内容区 */
    background-clip: content-box;

    /* 两种渐变不能同时存在,后面设置覆盖前面设置 */
    /* 发现:使用背景色渐变后,需要重新裁切 */
    /* 背景色线性渐变 */
    /* background: linear-gradient(red,orange,yellow,green,blue,lightblue, purple); */

    /* 背景色径向渐变 */
    /* background: radial-gradient(white,coral,yellow); */

    /* 背景图片 */
    background-image: url("../static/images/dog.jpg");

    /* 背景图片是否重复,一般设置no-repeat */
    background-repeat: no-repeat;

    /* 背景图片位置 */
    background-position: center;

    /* 背景图片大小 */
    /* 撑满内容区,图片可能会发生裁剪 */
    /* background-size: cover; */
    /* 最大限度放入图片,内容区可能会有留白 */
    background-size: contain;

    /* 设置背景图片是否随滚动条滚动 */
    background-attachment: scroll;
}



运行实例 »

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

1.png1.png

二、box-sizing: 解决了什么问题, 不用它应该如何处理

不考虑盒子与盒子之间的外边距影响,盒子本身的宽度默认等于边框宽度(border)加上内边距宽度(padding)加上内容区宽度(content),高度同理。

5.jpeg

也就是说,默认情况下,给盒子设置border,padding都会影响盒子整体的尺寸,同时会对页面整体布局造成影响。

设置box-sizing属性,可以固定边框大小,向内挤压内容区,不会影响整体布局。

如果不使用box-sizing属性的话,每一次设置盒子的border或padding,都要重新设置一次盒子的宽和高,让它们之后等于最初的期望值。

三、盒子外边距之的合并是怎么回事,并实例演示

竖直方向上两个同级盒子,当它们的外边距直接相接时,会发生合并(塌陷)现象

实例

.box1{
    width: 100px;
    height: 100px;
    background-color: lightgreen;
    margin-bottom: 30px;
}

.box2{
    width: 200px;
    height: 200px;
    background-color: lightblue;
    margin-top: 100px;
}

运行实例 »

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

2.png

box1和box2此时竖直方向上的实际距离为100px,可以理解为两个直接接触的margin取最大值

四、嵌套盒子之间内边距与外边距的表现有何不同, 如何处理

父子嵌套的两个盒子,如果父盒子没有设置边框(border)或内边距(padding),那子盒子的margin-top会传递给父盒子的margin-top

无标题.png

解决办法:

  1. 给父盒子设定透明边框

  2. 用给父盒子设置padding-top来代替子盒子的margin-top

实例

.box1 {
    width: 200px;
    height: 200px;
    background-color: lightblue;
    box-sizing: border-box;
    /* border: solid 1px #ffffff; */
    /* padding-top: 10px; */
}

.box2 {
    width: 100px;
    height: 100px;
    background-color: lightgreen;
    margin:40px auto;
}

运行实例 »

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

3.png

五、实例演示: 背景颜色的线性渐变

实例

.box {
    width: 200px;
    height: 200px;
    border: 1px solid gray;
    background: linear-gradient(green, white);
}

运行实例 »

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

4.png

六、实例演示: 背景图片的大小与位置的设定

实例

.box {
    width: 200px;
    height: 300px;
    border: 1px solid gray;
    background-image: url("../static/images/dog.jpg");
    background-repeat: no-repeat;
    background-size: contain;
    background-position:  center;
}

运行实例 »

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

5.png


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