你的位置:首页 > 网页设计

[网页设计]css_position的相关用法


简介

position用于固定位置,是尤为重要的一个属性

其值可以为:

  • static: 默认值,忽略top, bottom, left, right 或者 z-index 声明
  • relative: 相对于该父级区域以及上一个子集区域的定位,用top, bottom, left, right来设定,可以使用Z-index
  • absobute: 相对于该父级区域的位置【左上角】的定位,用top, bottom, left, right来设定,可以使用z-index
  • fixed: 相对于浏览器的定位,忽略父级位置等的其他位置,可以使用Z-index
  • inherit: 继承父级position的属性

具体

 1 <style type="text/css"> 2 div 3 { 4 position:100px 100px; 5 width:100px; 6 height:100px; 7 border:5px solid black; 8 } 9 div.pos_left10 {11 position:relative;12 left:-20px;13 border:5px solid green;14 }15 div.pos_right16 {17 position:relative;18 left:20px;19 border:5px solid green;20 }21 div.pos_ab22 {23 position:absolute;24 left:30px;25 top:50px;26 border:5px solid blue;27 }28 div.main29 {30 position:absolute;31 left:100px;32 top:50px;33 width:200px;34 height:300px;35 border:5px solid red;36 }37 div.pos_fix38 {39 position:fixed;40 left:10px;41 top:0px;42 clip:rect(0px 50px 200px 0px);43 }44 </style>45 </head>46 47 <body>48 <div class="main">49   <div>1.normal</div>50   <div class="pos_left">2.re-left:-20px</div>51   <div class="pos_right">3.re-left:20px</div>52   <div class="pos_ab">4.ab-(left:30px,top:50px)</div>53   <div class="pos_right">5.re-left:20px</div>54   <div class="pos_fix">6.fix-(left:30px,top:50px)</div>55 </div>


其中:

  • 【2】,【3】,【5】 为relative
当设定position: relative 
则参照父级中上一个子元素的内容区的左上角为原始点结合TRBL属性进行定位。无父级则以BODY的左上角为原始点
 
——必须注意的是,相对与上个子元素的左上角,并非图片上2对3显示的左上角而言,而是,若【2】为static,不进行TRBL变换位置时候的左上角。
——即,relative的元素其即使进行TRBL变换,但是占有的区间还是原本的区间,因此会对其他元素覆盖。
较明显的显示:
将图中【2】:
position:relative;
left:-20px;
top:-50px;
 
则:

 
图中包含【2】与【3】上下空白区域的一个区域为【2】真正占有的空间
 
  • 【4】为absolute

当设定position: relative

则参照父级中左上角为原始点结合TRBL属性进行定位。无父级则以浏览器的左上角为原始点

同时我们由relative属性的【5】看出 —— 【5】是相对【3】的空间而言的

                                               —— absolute相当于直接覆盖而不占有真正的空间

 

  • 【4】为absolute

当设定position: relative —— 则以浏览器的左上角为原始点

此外

  • 只有当设定TRBL属性(TOP、RIGHT、BOTTOM、LEFT)时,relative,absolute,fixed才有效,不然将遵从正常的HTML布局规则,在前一个对象之后立即被呈递。 
  • 页面居中显示时一般不用absolute,因为放缩时,absolute会以浏览器的左上角为顶点,当然也可将其固定在一个父级区域中,固定宽度来解决
  • 【6】中所用到的 clip:rect(0px 50px 200px 0px); 可以对区域进行裁剪
  • z-index,可设置层数,高数值的元素总是会处于低数值元素的上面【只有position属性值为absolute、relative或fixed时才有效】