1.盒模型包括哪些属性
页面上的每个元素被看做一个矩形框,这个框由元素的内容、内边距、边框、和外边距组成。如图:
- 内容区:每个元素都会有一些内容,如文本或者图像。
- 内边距:内边距是可选的。通过使用内边距,可以在内容与盒子之间创建一些看得到的区域。内边距是透明的,没有颜色,也没有自己的装饰。如果在元素上添加背景,那么背景会应用于由内容和内边框组成的区域。
- 边框:元素周围可以有一个可选的边框。这个边框会包围内边距,另外,因为它是围绕内容的一条线,这就从视觉上使内容与同一页面上的其他元素隔开。边框可以有各种不同的宽度、颜色和样式。
- 外边距:外边距也是可选的,包围着边框。利用外边距,可以在同一个页面上的不同元素之间增加空间。类似于内边距,外边距也是透明的,本身没有颜色或装饰。
说到外边距,不得不说一下外边距合并了。
外边距合并:
简单来说,当两个垂直外边距相遇时,它们将形成一个外边距。这个外边距的高度等于两个发生合并的外边距的高度中的较大者。
例如:
- 当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并。
- 当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并。
- 尽管看上去有些奇怪,但是外边距甚至可以与自身发生合并。
假设有一个空元素,它有外边距,但是没有边框或填充。在这种情况下,上外边距与下外边距就碰到了一起,它们会发生合并:
- 如果这个外边距遇到另一个元素的外边距,它还会发生合并:
这就是一系列的段落元素占用空间非常小的原因,因为它们的所有外边距都合并到一起,形成了一个小的外边距。
外边距合并初看上去可能有点奇怪,但是实际上,它是有意义的。以由几个段落组成的典型文本页面为例。第一个段落上面的空间等于段落的上外边距。如果没有外边距合并,后续所有段落之间的外边距都将是相邻上外边距和下外边距的和。这意味着段落之间的空间是页面顶部的两倍。如果发生外边距合并,段落之间的上外边距和下外边距就合并在一起,这样各处的距离就一致了。
只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。
另外关于行内元素和块级元素的区别有必要说下:
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>
3.如果遇到一个属性想知道兼容性,在哪查看?
可以去Can I Use查询属性的兼容性。
4.IE 盒模型和W3C盒模型有什么区别?
- IE盒模型的width属性是内容区、内边距和边框的宽度总和。
- W3C盒模型的with属性是指内容区的宽度。
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](http://upload-images.jianshu.io/upload_images/2419272-859924980f45213c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
-----
**本教程版权归饥人谷_任磊和饥人谷所有,转载须说明来源。**