任务9-CSS盒模型

2016-07-20  本文已影响32人  饥人谷_任磊

1.盒模型包括哪些属性

页面上的每个元素被看做一个矩形框,这个框由元素的内容、内边距、边框、和外边距组成。如图:

盒模型

说到外边距,不得不说一下外边距合并了。

外边距合并:

简单来说,当两个垂直外边距相遇时,它们将形成一个外边距。这个外边距的高度等于两个发生合并的外边距的高度中的较大者。

例如:

元素的上外边距与前面元素的下外边距合并 元素的上外边距和父元素的上外边距发生合并.png 元素的上外边距与下外边距发生叠加 空元素中已经合并的外边距与另一个空元素的外边距发生合并

这就是一系列的段落元素占用空间非常小的原因,因为它们的所有外边距都合并到一起,形成了一个小的外边距。

外边距合并初看上去可能有点奇怪,但是实际上,它是有意义的。以由几个段落组成的典型文本页面为例。第一个段落上面的空间等于段落的上外边距。如果没有外边距合并,后续所有段落之间的外边距都将是相邻上外边距和下外边距的和。这意味着段落之间的空间是页面顶部的两倍。如果发生外边距合并,段落之间的上外边距和下外边距就合并在一起,这样各处的距离就一致了。

外边距合并使元素之间保持了一致的距离
只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。

另外关于行内元素和块级元素的区别有必要说下:

1.对于行内元素,手动设置宽高是无效的,它本身的宽高是由自身决定的。
2.行内元素可以设置margin、padding,但是只有水平方向,也就是左右方向的margin和padding是有效的,垂直方向,也就是上下方向的margin和padding是无效的。而如果上下padding如果设置边框或者背景色,会把边框和背景色撑开。但是它本身并不会挤占空间,这样的话可能会出现一个覆盖的问题。
参考W3C-CSS 外边距合并

2.text-align: center的作用是什么,作用在什么元素上?能让什么元素水平居中。

text-align: center作用于块级元素上,使块级元素内的所有内联元素水平居中。内联元素的居中是以自己的父元素容器为参考对象。
demo:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            .box{
                width: 100px;
                height: 100px;
                border: 3px solid #ccc;
                text-align: center;
            }
            .box1{
                width:50px;
                height: 50px;
                margin: 10px;
                padding: 5px;
                background-color: red;
                border: 1px solid #000000;
            }
        </style>
    </head>
    
    <body>
        <div class="box">
            <div class="box1">
            <a href="#">1111</a>
            </div>
        </div>
    </body>
</html>

使用text-align: center的居中效果

3.如果遇到一个属性想知道兼容性,在哪查看?

可以去Can I Use查询属性的兼容性。

4.IE 盒模型和W3C盒模型有什么区别?

ie6、7、8怪异模式(不添加 doctype)使用 ie 盒模型 chrome, ie9+, ie678(添加 doctype) 使用标准盒模型

5.以下代码的作用?兼容性?

*{ box-sizing: border-box;}

box-sizing是CSS3的属性,简单来说用来设置要使用哪种盒模型。
介绍如下:

描述
content-box(标准盒模型) 这是由 CSS2.1 规定的宽度高度行为。宽度和高度分别应用到元素的内容框。在宽度和高度之外绘制元素的内边距和边框。
border-box(IE盒模型) 为元素设定的宽度和高度决定了元素的边框盒。就是说,为元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制。通过从已设定的宽度和高度分别减去边框和内边距才能得到内容的宽度和高度。
inherit 规定应从父元素继承 box-sizing 属性的值。

那么```
*{ box-sizing: border-box;}

兼容性去[Can I Use](http://caniuse.com/)查询一下:

![兼容性.png](https://img.haomeiwen.com/i2419272/859924980f45213c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

-----
**本教程版权归饥人谷_任磊和饥人谷所有,转载须说明来源。**
上一篇 下一篇

猜你喜欢

热点阅读