1.定位
(1)CSS 定位和浮动
CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务。
定位的基本思想很简单,它允许你定义元素框相对于其正常位置应该出现的位置,或者相对于父元素、另一个元素甚至浏览器窗口本身的位置。
(2)一切皆为框 display
div、h1 或 p 元素常常被称为块级元素。这意味着这些元素显示为一块内容,即“块框”。
与之相反,span 和 strong 等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”。
none 此元素不会被显示。也不占用空间 *
block 此元素将显示为块级元素,此元素前后会带有换行符。 *
inline 默认。此元素会被显示为内联元素,元素前后没有换行符。 *
inline-block 行内块元素。(CSS2.1 新增的值)
list-item 此元素会作为列表显示。
run-in 此元素会根据上下文作为块级元素或内联元素显示。
table 此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
inline-table 此元素会作为内联表格来显示(类似 <table>),表格前后没有换行符。
table-row-group 此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
table-header-group 此元素会作为一个或多个行的分组来显示(类似 <thead>)。
table-footer-group 此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
table-row 此元素会作为一个表格行显示(类似 <tr>)。
table-column-group 此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
table-column 此元素会作为一个单元格列显示(类似 <col>)
table-cell 此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
table-caption 此元素会作为一个表格标题显示(类似 <caption>)
inherit 规定应该从父元素继承 display 属性的值。
(3)CSS 定位机制
CSS 有三种基本的定位机制:普通流、浮动和绝对定位。
除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。
块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。
行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为行框(Line Box),行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。
(4)CSS position 属性
通过使用 position 属性,我们可以选择 4 种不同类型的定位,这会影响元素框生成的方式。
position 属性值的含义:
static
元素框正常生成。块级元素生成一个矩形框,作为文档流的一部分,行内元素则会创建一个或多个行框,置于其父元素中。
默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
relative
元素框偏移某个距离。元素仍保持其未定位前的形状,它原本所占的空间仍保留。
相对于其正常位置进行定位,生成相对定位的元素。 因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
absolute
元素框从文档流完全删除,并相对于其包含块定位。包含块可能是文档中的另一个元素或者是初始包含块。元素原先在正常文档流中所占的空间会关闭,就好像元素原来不存在一样。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
相对于 static 定位以外的第一个父元素进行定位,生成绝对定位的元素。元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
fixed
元素框的表现类似于将 position 设置为 absolute,不过其包含块是视窗本身。
相对于浏览器窗口进行定位,生成绝对定位的元素。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
提示:相对定位实际上被看作普通流定位模型的一部分,因为元素的位置相对于它在普通流中的位置。
其他定位有用属性!
left:设置定位元素左外边距边界与其包含块左边界之间的偏移。auto 默认值/%百分比可用负值/px,cm等单位可用负值
top:设置定位元素的上外边距边界与其包含块上边界之间的偏移。
right:设置定位元素右外边距边界与其包含块右边界之间的偏移。
bottom:设置定位元素下外边距边界与其包含块下边界之间的偏移。
clip:clip 属性剪裁绝对定位元素。clip:rect(0px,60px,200px,0px);不伸拉元素
overflow:规定当内容溢出元素框时发生的事情。visible溢出(默认值)/hidden隐藏/scroll滚动条/auto滚动条
vertical-align:属性设置元素的垂直对齐方式。baseline基线上/sub对齐文本下标/super对齐文本上标/top与行中最高元素的顶端对齐/text-top与父元素字体的顶端对齐/middle父元素的中部/bottom与行中最低的元素的顶端对齐/text-bottom与父元素字体的底端对齐/%使用 "line-height" 属性的百分比值来排列此元素。允许使用负值。
z-index:设置元素的堆叠顺序。默认的 z-index 是 0。Z-index -1 拥有更低的优先级。用于将图片放到文字后做背景。
img.x {
position: absolute;
left: 0px;
top: 0px;
z-index: -1
}
2.相对定位
相对定位是一个非常容易掌握的概念。如果对一个元素进行相对定位,它将出现在它所在的位置上。
然后,可以通过设置垂直或水平位置,让这个元素“相对于”它的起点进行移动。
注意:只是原本占据的空间仍然存在,会覆盖后面的元素
#box_relative {
position: relative;
left: 30px;
top: 20px;
}
3.绝对定位
设置为绝对定位的元素框从文档流完全删除,并相对于其包含块定位,包含块可能是文档中的另一个元素或者是初始包含块。
元素原先在正常文档流中所占的空间会关闭,就好像该元素原来不存在一样。
元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。
注意:绝对定位后,原本占据的空间不存在了,原来的框属性失效了。
#box_relative {
position: absolute;
left: 30px;
top: 20px;
}
4.浮动
浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
由于浮动框不在文档的普通流中,所以文档的普通流中的块框表现得就像浮动框不存在一样。
(1)CSS 浮动 float
left 元素向左浮动。
right 元素向右浮动。
none 默认值。元素不浮动,并会显示在其在文本中出现的位置。
(2)行框和清理clear
left 在左侧不允许浮动元素。
right 在右侧不允许浮动元素。
both 在左右两侧均不允许浮动元素。
none 默认值。允许浮动元素出现在两侧。