關於relative和absolute的總結


對於定位這個性質我原理上來說自己是明白的,但是在實踐的過程中,總會出現各種稀奇古怪的情況,加relative或是absolute就可以解決,但是遇到這些情況總是不明白為什么!!!難道是腦容量太小的原因嗎!!!=_=!!
還是先記基礎知識好了,因為里面還是有很多坑!!
相對定位:
    內聯元素加相對定位也不支持寬高!!
relative並不會使元素脫離正常文檔流!
以上兩點說明加上相對定位不影響元素本身的特性,內聯元素和塊元素依舊保持原來本身的特性!就是說原來是內聯加上relative以后還是內聯啦!
如果不設置偏移量,相對定位本身並沒有什么卵用~

所以,相對定位要加偏移量,left/top/bottom/right是相對於該元素原來的位置設置偏移量的哦哦哦~

絕對定位:
    內聯元素變得支持寬高啦~如果沒有設置寬度,則內容撐開寬度!!(類似於float,內聯元素加上float以后也支持寬高滴!!)
    會使該元素完全脫離文檔流
如果有父級定位則是相對於父級發生偏移,沒有定位父級則是相對於body發生偏移!
    也是要搭配偏移量使用啦~

如果直接在body里添加文字和一個<div>標簽,
  1. 給<div>設置absolute定位,不設置偏移量,則<div>定位在緊接着文字的下面
  2. 給<div>設置absolute,並且設置偏移量,則<div>是按偏移量相對於body定位
  3. 給<div>設置relative,不論是否設置偏移量,都是相對於自己的原來的位置定位。
遮罩彈窗的實現:
<style>
body{ height:100%; margin:0;}
.shadow{ position:absolute; top:0; left:0; width:100%; height:100%; background:#000; opacity:0.5; filter:alpha(opacity=50);}
.filter{ width:300px; height:200px; border:2px solid #000; background:yellow; position:absolute; top:50%; left:50%; margin-left:-152px; margin-top:-102px;}
</style>


<body>
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
contentcontentcontentcontentcontentcontentcontentcontentcontentcontent<br />
    <div class="shadow"></div>
    <div class="filter"></div>
</body>

這里陰影部分是相對於body定位的!!!(body>html>文檔) 

如果這個彈窗只寫 position:absolute; top:50%; left:50%;則表示左上角那個點是居中的!!!所以這里要設置margin-top,margin-left為整個元素高、寬的一半!

而且這里要注意!!!這里的寬高不是設置的width和height值,而是padding+border+width和padding+border+height的一半!!!!

設置透明度為:opacity:0~1;filter:alpha(opacity=0~100);但是呢,半透明對IE6不兼容!打開是一片黑呀~~

這里還有一個問題,對body要設置height:100%,不然在IE6下遮罩不會占據整個屏幕的~

 

這里有個問題,為什么給shadow設position:relative;以后就看不到整個半透明的遮罩啦???!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM