详解CSS的结构与层叠以及格式化

2020-05-03 11:30:53易采站长站整理

 

常用名词:

正常流,文本从左向右,从上向下显示。要让一个元素不在正常流中,唯一的办法是使之成为浮动或定位元素。

非替换元素,如果元素的内容包含在文档中,则称之为非替换元素。

替换元素,指用作为其他内容占位符的一个元素。替换元素的一个经典例子就是img元素。它只是指向一个图像文件,这个文件将插入到文档流中该img元素本身的位置。

块级元素,这是指段落、标题或div之类的元素。这个元素在正常流中,会在其框之前和之后生成”换行“,所以处于正常流中的块级元素会垂直摆放。通过声明display:block,可以让元素生成块级框。

行内元素,这是指strong或span之类的元素。这个元素不会在之前或之后生成”行分割符“,它们是块级元素的后代。通过声明display:inline,可以让元素生成vyige行内框。

根元素,位于文档流顶端的元素,在html文档中,这就是元素html。

 

块级元素-水平格式化

width并不是指可见元素框的宽度,如果为一个元素声明了内编剧、边框以及宽度,他们指定的宽度则是左外边界到右外边界的距离。可以通过设定box-sizing:content-box来模拟ie6的怪异现象,即使得元素的宽度为实际设置的宽度width,而不是width+padding+border。

使用auto

CSS Code复制内容到剪贴板

<div class ="container1"><p>A paragraph</p></div>   
.container1{width: 400px;border: 1px solid #000;}   
.container1 p{margin-left:auto;margin-right: 100px;width: 100px;}  

假设padding-left(padding-right)、margin-left(margin-rignt)、width,border-left-right(border-right)七个属性的和必须等与外容器的宽度,即400px,设置左边距auto,那么左边距的宽度将是200px。就是说,auto是用来”填补“所需的距离,使元素的总宽度等于其包含块的width。

CSS Code复制内容到剪贴板

.container1 p{background: #ccc;margin-right: auto;   
margin-left: auto;width: 100px; }  

效果如下:
201621115757758.png (415×63)

因此,如果设置margin-left和margin-right都为auto:
201621115814444.png (416×59)

将两个外边距设置为相等的长度是将元素居中的一个正确方法,这不同于使用text-align(text-align只应用与块级元素的内联内容,所以将元素的text-align设置为center并不能将这个元素居中)。

如果设置width和marin-left都为auto,那么margin-left将会被设置为0:

CSS Code复制内容到剪贴板