CSS 中定位的使用
position
relative 设置区块基准点为左上角(相对定位 以区块的左上角为基准点 仍然会暂居原来的位置)
a、不影响元素本身的特性;
b、不使元素脱离文档流;
c、如果没有定位偏移量,对元素本身没有任何影响;
定位元素位置控制
top/right/bottom/left 定位元素偏移量。
absolute 设置网页的为基准点左上角(绝对定位 以网页的左上角为基准点 不会暂居原来的位置)
a、使元素完全脱离文档流;
b、使内嵌元素支持宽高;
c、块属性标签内容撑开宽度(在没有设置宽的情况下);
static 无设置
如果有定位父级相对于定位父级发生偏移,没有定位父级相对于整个文档发生偏移;
相对定位一般都是配合绝对定位元素使用;
<title>无标题文档</title> <style> div{font-size:20px;} body{border:1px solid black;} .box1{width:300px;height:300px; background:red; position:relative;} .box2{width:200px;height:200px;background:blue; /* position:relative;*/}/*同级的也可以相对定位,你懂的*/ .box3{width:100px;height:100px;background:green; position:absolute;right:0;bottom:0;} </style> </head> <body> <div class="box1"> <div class="box2"> <div class="box3"></div> </div> </div> </body>
left auto 以基准点定位在左边 像素/百分比 定位在左边
top auto 以基准点定位在上边 像素/百分比 定位在上边
right auto 以基准点定位在右边 像素/百分比 定位在右边
bottom auto 以基准点定位在下边 像素/百分比 定位在下边
z-index auto 自动调整高度 数字 数字越大越往上层(定位元素 默认后者层级高于前者)
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title>CSS 中定位的使用</title> 6 <style type="text/css"> 7 div{ 8 font-size:36px; 9 font-family:Arial, Helvetica, sans-serif; 10 } 11 .div1{ 12 color:#F00; 13 position:absolute; 14 top:20px; 15 left:20px; 16 z-index:3; 17 } 18 .div2{ 19 color:#0F0; 20 position:absolute; 21 top:22px; 22 left:22px; 23 z-index:2; 24 } 25 .div3{ 26 color:#00F; 27 position:absolute; 28 top:24px; 29 left:24px; 30 z-index:1; 31 } 32 </style> 33 </head> 34 <body> 35 <div class="div1">名人名言,你得先是名人了那才是名言,别人的屁都是名屁!你能比吗?</div> 36 <div class="div2">名人名言,你得先是名人了那才是名言,别人的屁都是名屁!你能比吗?</div> 37 <div class="div3">名人名言,你得先是名人了那才是名言,别人的屁都是名屁!你能比吗?</div> 38 39 </body> 40 </html>
<style> .parent{ border:2px solid red; padding:10px; width:300px; height:300px; margin:90px auto; position:relative;} .parent a{width:100px; height:100px; line-height:100px; text-align:center; background:red; position:absolute;color:#fff; font-weight:bold; text-decoration:none;} .link1{top:10px;left:10px;} .link2{top:10px;right:10px;} a.link3{top:110px;right:110px; background:blue;color:yellow;}/*这个选择符表示,拥有link3这个类的a标签,这样可以使这个标签覆盖掉上面被设置的有重复的样式*/ .link4{left:10px;bottom:10px;} .link5{right:10px;bottom:10px;} </style> </head> <body> <div class="parent"> <a href="#" class="link1">链接1</a> <a href="#" class="link2">链接2</a> <a href="#" class="link3">链接3</a> <a href="#" class="link4">链接4</a> <a href="#" class="link5">链接5</a> </div> </body>
position:fixed; 固定定位
与绝对定位的特性基本一致,差别是始终相对整个文档进行定位;对其他元素没有任何的影响
问题:IE6不支持固定定位;
<style> body{height:1500px;} .box1{width:500px;height:100px; background:red; position:absolute;right:0;bottom:0;} .box2{width:300px;height:300px;background:blue;position:fixed;right:0;bottom:0;}/*给内联元素加上定位后可以支持设置宽高*/ </style> </head> <body> <div class="box1">position:absolute;绝对定位</div> <div style="width:200px; height:200px;border:5px solid black; position:relative; left:50px; top:80px;"> <span class="box2">position:fixed; 固定定位</span><!--即使是div的子元素,给他加了固定定位后,完全脱离文档流,对其他元素无任何影响--> </div> </body>
定位问题
<style> #box1{width:500px; height:300px; background:blue; overflow:hidden;}/*当子元素的高度高于父元素的时候,没加overflow,子元素会溢出,*/ #box2{width:300px; height:500px; background:yellow; position:relative;} /* ie6 下父级的overflow:hidden;是包不住子级的相对定位的 */ </style> </head> <body> <div id="box1"> <div id="box2"></div> </div> </body>
<style> #box1{width:303px; height:303px;border:1px solid black; position:relative;} #box2{ width:50px; height:50px; background:#7c1; position:absolute;right:-1px;bottom:-1px;} /* 在 IE6 下定位元素的父级宽高都为奇数那么在 IE6 下定位元素的 right 和 bottom 都有1像素的偏差。 */ </style> </head> <body> <div id="box1"> <div id="box2"></div> </div> </body>