Heim  >  Artikel  >  Web-Frontend  >  对position属性的总结_html/css_WEB-ITnose

对position属性的总结_html/css_WEB-ITnose

WBOY
WBOYOriginal
2016-06-24 11:58:321173Durchsuche

position属性规定元素的定位类型

这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。

 

值 描述
absolute
绝对定位

生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

fixed
固定定位

生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

relative
相对定位

生成相对定位的元素,相对于其正常位置进行定位。

因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。

static 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
inherit 规定应该从父元素继承 position 属性的值。

配合z-index使用可叠加图片,z-index默认为0,值由小到大,优先级递增,(即表面的元素优先级最大)

以上摘自W3C对position的定义

自己经过尝试和查找资料总结了以下几点:

1、static、inherit:嗯,就愉快的决定忽略了吧(汗!!!);

2、fixed:相对于浏览器的可视部分定位;(依赖于浏览器)

3、relative:相对于正常流定位;(依赖于元素自身正常的位置)

4、absolute:相对于第一个position属性不为static的父辈元素定位(真是绕口,这也是我一开始没掌握的一点,若父元素里都没有position属性,或position属性都为static,那将会依赖body定位)

当然,盒模型中还有content、padding、border、margin四大金刚。牢记,absolute会依据content+apdding(即已padding开始的位置)来定位

 

<html>    <head>        <style type="text/css">            .div1{                position: relative;                border: 10px solid red;                padding: 10px;                width: 100px;                height: 100px;                background-color: green;                background-clip: content-box;            }            .div2{                positon: absolute;                width: 50px;                height: 50px;                background-color: yellow;                left: 10px;//此处left会以padding开始定位            }        </style>    </head>    <body>        <div class='div1'>div1            <div class='div2'>div2</div>        </div>    </body></html>

效果图:

 

 

 

实验中发现一坑!!!!!!如果上面代码里left改为margin,效果会怎样呢?

尽管只改了一个属性, 但还是附上代码吧:

 1 <html> 2     <head> 3         <style type="text/css"> 4             .div1{ 5                 position: relative; 6                 border: 10px solid red; 7                 padding: 10px; 8                 width: 100px; 9                 height: 100px;10                 background-color: green;11                 background-clip: content-box;12             }13 14             .div2{15                 positon: absolute;16                 width: 50px;17                 height: 50px;18                 background-color: yellow;19                 margin: 10px;20             }21         </style>22     </head>23 24     <body>25         <div class='div1'>div126             <div class='div2'>div2</div>27         </div>28     </body>29 </html>

依然是效果图:

margin属性是以父元素的content为基准。

嗯嗯,下次不能再被坑了。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn