Position

position 的取值有4个,分别是

position: static | relative | absolute | fixed | inherit


其中每一项代表着不同的定位方式:

static 定位

元素就正常得按照流的方式组合,block 元素会带边框,inline 元素一行包括多个元素。

relative 定位

原来的位置会占着,然后位置相对于包含块偏移。形状保持未定位前的形状。

absolute 定位

元素相对于包含块偏移,在文档流中不占据位置,不曾来过。元素定位后生成一个块级框,而不论原来它在正常流中生成何种类型的框。

fixed 定位

absolute 定位基本一致,不过包含块固定为页面视图。

一些细节:

对于偏移

如果都设置了 top/bottom/left/right,那么以 top/left 生效。

定位属性

dataintable

width:30%;

属性 | width:65%;

描述 | width:5%;

CSS
---|---|---
[/cssref/pr_pos_bottom.asp

bottom](<pre) | 设置定位元素下外边距边界与其包含块下边界之间的偏移。 | 2
[/cssref/pr_class_clear.asp

clear](<pre) | 规定元素的哪一侧不允许其他浮动元素。 | 1
[/cssref/pr_pos_clip.asp

clip](<pre) | 剪裁绝对定位元素。 | 2
[/cssref/pr_class_cursor.asp

cursor](<pre) | 规定要显示的光标的类型(形状)。 | 2
[/cssref/pr_class_display.asp

display](<pre) | 规定元素应该生成的框的类型。 | 1
[/cssref/pr_class_float.asp

float](<pre) | 规定框是否应该浮动。 | 1
[/cssref/pr_pos_left.asp

left](<pre) | 设置定位元素左外边距边界与其包含块左边界之间的偏移。 | 2
[/cssref/pr_pos_overflow.asp

overflow](<pre) | 规定当内容溢出元素框时发生的事情。 | 2
[/cssref/pr_class_position.asp

position](<pre) | 规定元素的定位类型。 | 2
[/cssref/pr_pos_right.asp

right](<pre) | 设置定位元素右外边距边界与其包含块右边界之间的偏移。 | 2
[/cssref/pr_pos_top.asp

top](<pre) | 设置定位元素的上外边距边界与其包含块上边界之间的偏移。 | 2
[/cssref/pr_pos_vertical-align.asp

vertical-align](<pre) | 设置元素的垂直对齐方式。 | 1
[/cssref/pr_class_visibility.asp

visibility](<pre) | 规定元素是否可见。 | 2
[/cssref/pr_pos_z-index.asp

z-index](<pre) | 设置元素的堆叠顺序。 | 2

Inline-block

display属性的一个值。这个名字的由来是因为,display 设置这个值的元素,兼具行内元素( inline elements)跟块级元素(block elements)的特征。

虽然设置浮动跟设置inline-block有些特征类似,但两者的区别还是非常明显的:

  1. 文档流(Document flow):浮动元素会脱离文档流,并使得周围元素环绕这个元素。而inline-block元素仍在文档流内。因此设置inline-block不需要清除浮动。当然,周围元素不会环绕这个元素,你也不可能通过清除inline-block就让一个元素跑到下面去。
  2. 水平位置(Horizontal position):很明显你不能通过给父元素设置text-align:center让浮动元素居中。事实上定位类属性设置到父元素上,均不会影响父元素内浮动的元素。但是父元素内元素如果设置了display:inline-block,则对父元素设置一些定位属性会影响到子元素。(这还是因为浮动元素脱离文档流的关系)。
  3. 垂直对齐(Vertical alignment):inline-block元素沿着默认的基线对齐。浮动元素紧贴顶部。你可以通过vertical属性设置这个默认基线,但对浮动元素这种方法就不行了。这也是我倾向于inline-block的主要原因。
  4. 空白(Whitespace):inline-block包含html空白节点。如果你的html中一系列元素每个元素之间都换行了,当你对这些元素设置inline-block时,这些元素之间就会出现空白。而浮动元素会忽略空白节点,互相紧贴
  5. IE6和IE7:Ie67对此属性部分支持。如果你要兼容这些浏览器,必须解决这个问题。这不是个大问题,但值得留意一下。

float

float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。

如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。

注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。

一个元素浮动之后,他原来的位置就空着呢,会被其他元素占领,但是,这个浮动的元素会覆盖占据位置的元素。需要调整覆盖顺序需要使用 z-index 进行调整。

用法

  1. 制作水平导航栏
  2. 创建无表格的首页 - 使用浮动来创建拥有页眉、页脚、左侧目录和主体内容的首页。

clear

clear left | right | both | none | inherit


clear 元素可以清除 float 的影响,也就是不占用 float 元素原来的位置。

overflow

visible 默认值。内容不会被修剪,会呈现在元素框之外。
hidden 内容会被修剪,并且其余内容是不可见的。
scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
inherit 规定应该从父元素继承 overflow 属性的值。

clip

clip rect(top, right, bottom, left) | auto | inherit


如果一个绝对定位元素的内容移除其内容框,而且overflow 设置为要求剪裁该内容,通过 clip 属性可以改变剪裁区域的形状。

在不同浏览器中的实现方式不一致。

rect

rect 的值是距离左上角的距离。不能为百分比;

visibility

visible| 默认值。元素是可见的。 | hidden| 元素是不可见的。但是还是会占据着位置。 | collapse| 当在表格元素中使用时,此值可删除一行或一列,但是它不会影响表格的布局。被行或列占据的空间会留给其他内容使用。如果此值被用在其他的元素上,会呈现为

hidden

。 | inherit| 规定应该从父元素继承 visibility 属性的值。