> 文档中心 > CSS进阶--盒子模型

CSS进阶--盒子模型


盒子模型

1、盒子模型的介绍

        1)盒子的概念:

                ① 页面中的每一个标签,都可看做是一个“盒子”,通过盒子的视角更方便的进行布局;

                ② 浏览器在渲染(显示)网页时,会将网页中的元素看做是一个个的矩形区域,我们也形象的称之为盒子。

        2)盒子模型

                CSS中规定每个盒子分别由:内容区域(content)内边距区域(padding)边框区域(border)外边距区域(margin)构成,这就是盒子模型

         3)记忆:可以联想现实中的包装盒。

                Document     div {     width: 200px;     height: 200px;     background-color: pink;     /* 边框 */     border: 1px solid black;     /* 内边距 */     padding: 20px;     /* 外边距 */     margin: 50px; }        
我是一个div1
我是一个div2

2、内容区域的宽度和高度

        >  作用:利用 width 和 height 属性默认设置是盒子内容区域的大小

        >  属性::width / height

        >  常见取值:数字 + px

3、边框(border)

        >  属性名::border

        >  属性值:单个取值的连写,取值之间以空格隔开

                ·   如:border : 1px solid red;

        >  快捷键:bd + tab

/* solid:实线 */border: 1px solid #000;/* dashed:虚线 */border: 1px dashed #000;/* dotted:点线 */border: 1px dotted #000;

        >  边框(border) -单方向设置

                ·  场景:只给盒子的某个方向单独设置边框

                ·  属性名:border -方位名词

                ·  属性值:连写的取值

border-left: 1px solid #000;border-right: 1px solid #000;border-top: 1px solid #000;border-bottom: 1px solid #000;

4、内边距(padding)

/* 添加了四个方向的内边距 */padding: 50px;/* padding 属性可以当作复合属性使用,表示单独设置某个方向的内边距 *//* padding 最多取4个值 *//* 四值: 上  右  下  左 */padding: 10px 20px 30px 40px;/* 三值: 上  左右  下 */padding: 10px 40px 80px;/* 两值:  上下  左右 */padding: 10px 50px;

注意多值写法,永远都是从上开始顺时针转一圈,如果数不够,看对面

        >  CSS3盒模型(自动内减):

                >  解决方法①:手动内减

                        ·  操作:自己计算多余大小,手动在内容中减去

                        ·  缺点:项目中计算量太大,很麻烦

                >  解决方法②:自动内减

                        ·  操作:给盒子设置属性box-sizing : border-box;即可

                        ·  优点:浏览器会自动计算多余大小,自动在内容中减去

div {    width: 100px;    height: 100px;    background-color: pink;    border: 10px solid #000;    /* 内减模式 */    /* 变成CSS3的盒子模型,好处: 加了border和padding不需要手动减法 */    box-sizing: border-box; }

5、外边距(margin):同  padding

6、清除默认内外边距

        >  场景:浏览器会默认给部分标签设置默认的 margin 和 padding ,但一般在项目开始前需要先清除这些标签默认的 margin 和 padding,后续自己设置

        >  解决方法:

* {    margin: 0;    padding: 0;}

7、版心居中( margin: 0 auto; )

                Document     div {     width: 1000px;     height: 300px;     background-color: pink;     margin: 0 auto; }                
版心

8、综合案例1 -- 新浪导航:

        >  示例图片:

        >  代码:

                Document     .box {     height: 40px;     border-top: 3px solid #ff8500;     border-bottom: 1px solid #edeef0; } .box a {     text-decoration: none;     display: inline-block;     text-align: center;     line-height: 40px;     color: #4c4c4c;     font-size: 12px;     /* width: 80px; */     padding: 0 16px; } .box a:hover {     color: #ff8400;     background-color: #edeef0; }        

9、综合案例2 -- 网页新闻列表:

        >  示例图片:

         >  代码:

                Document     * {     margin: 0;     padding: 0; } .box {     width: 500px;     height: 400px;     border: 1px solid #ccc;     box-sizing: border-box;     margin: 50px auto;     padding: 42px 30px 0; } .box h2 {     border-bottom: 1px solid #ccc;     font-size: 30px;     /* 行高是一倍,就是字号的大小 */     line-height: 1;     padding-bottom: 8px; } /* 去掉列表的符号 */ .box ul {     list-style: none; } .box li {     height: 50px;     border-bottom: 1px dashed #ccc;     padding-left: 28px;     line-height: 50px; } .box a {     text-decoration: none;     color: #666;     font-size: 17px; } .box a:hover {     color: #ff8400; }        

10、外边距折叠现象:

        1)合并现象

                >  场景:垂直布局块级元素,上下的 margin 会合并

                >  结果:最终两者距离为 margin 的最大值

                >  解决方法:避免就好

                        ·  只给其中一个盒子设置margin即可

        2)塌陷现象

                >  场景:互相嵌套块级元素,子元素的 margin-top 会作用在父元素上

                >  结果:导致父元素一起往下移动

                >  解决方法:

                        1.给父元素设置 border-top 或者 padding-top (分隔父子元素的 margin-top )

                        2.给父元素设置 overflow: hidden;

                        3.转换成行内块元素

                        4.设置浮动

11、行内元素的垂直内外边距:

        >  如果想要通过 margin 或 padding 改变行内标签的垂直位置,无法生效。

        >  行内标签的 margin-top 和 margin-bottom 不生效。

        >  行内标签的 padding-top 和 padding-bottom 不生效。

佳庆纺织毛巾批发中心