css四种定位(w3school的学习笔记)

时间:2024-04-04 07:52:58

position 属性值分别为:static relative absolute fixed

**文档流:**将浏览器窗体内部自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,即为文档流。

CSS 定位机制:

CSS 有三种基本的定位机制:普通流、浮动和绝对定位。
除非专门指定,否则所有框都在普通流中定位。也就是说,普通流中的元素的位置由元素在 (X)HTML 中的位置决定。
块级框从上到下一个接一个地排列,框之间的垂直距离是由框的垂直外边距计算出来。
行内框在一行中水平布置。可以使用水平内边距、边框和外边距调整它们的间距。但是,垂直内边距、边框和外边距不影响行内框的高度。由一行形成的水平框称为行框(Line Box),行框的高度总是足以容纳它包含的所有行内框。不过,设置行高可以增加这个框的高度。

div、h1 或 p 元素常常被称为块级元素。这意味着这些元素显示为一块内容,即“块框”。与之相反,span 和 strong
等元素称为“行内元素”,这是因为它们的内容显示在行中,即“行内框”

1、静态定位(static)
一般的标签元素不加任何定位属性都属于静态定位,对象遵循正常文档流。top、right、bottom、left等属性无效。
2,相对定位与绝对定位
relative:对象遵循正常文档流,相对于对象左上角位置(移动前)进行定位,移动后仍占据原空间,对象不可层叠。
absolute:对象脱离正常文档流,其层叠可通过css z-index属性定义

相对定位不会删除它本身在文档流中占据的空间,其他元素不可以占据该空间,而绝对定位则会删除掉该元素在文档流中的位置,使其完全从文档流中抽了出来,其他元素可以占据其空间,可以通过z-index来设置它们的堆叠顺序

举个例子

<html>
<head>
<style type="text/css">
h5.pos_right
{
position:relative;
left:20px/*样式 "left:20px" 向元素的原始左侧位置增加 20 像素*/
}
h2.pos_abs
{
position:absolute;
left:100px;
top:150px
}

</style>
</head>

<body>
<h5>这是位于正常位置的标题</h5>
<h5 class="pos_right">这个标题相对于其正常位置向右移动</h5>
<h5 class="pos_right">这个标题相对于其正常位置向右移动</h5>
<h5 class="pos_right">这个标题相对于其正常位置向右移动</h5>
<h5 class="pos_right">这个标题相对于其正常位置向右移动</h5>
<h5 class="pos_right">这个标题相对于其正常位置向右移动</h5>
<h5 class="pos_right">这个标题相对于其正常位置向右移动</h5>
<h5 class="pos_right">这个标题相对于其正常位置向右移动</h5>
<h5 class="pos_right">这个标题相对于其正常位置向右移动</h5>
<h2 class="pos_abs">这是带有绝对定位的标题</h2>

</body>

</html>

css四种定位(w3school的学习笔记)
z-index的使用:

<html>
<head>
<style type="text/css">
img.x
{
position:absolute;
left:0px;
top:0px;
z-index:1

}
img.y{
position:absolute;
left:50px;
top:0px;
z-index:500


}
</style>
</head>

<body>
<img class="x" src="/i/eg_mouse.jpg" /> 
<img class="y" src="/i/eg_smile.gif" />
</body>

</html>

css四种定位(w3school的学习笔记)
3、固定定位(fixed)
对象脱离正常文档流,使用top、right、bottom、left等属性以窗口左上角为参考点进行定位,当出现滚动条时,对象不会随着滚动,其层叠通过z-index属性定义。
固定定位的例子:http://www.lvyestudy.com/les_cj/cj_13.2.aspx

补充: 固定定位与绝对定位的区别
绝对定位,相对于最近定位的祖先元素做参照系。固定定位,相对于视口做参照系。针对固定定位的特点,可以做用户滑动页面后依然能够看到视图的效果。类似于,网站右边有个公众号二维码,不管我们怎样滑动,它依然在视口的那个位置。