CSS定位描述

CSS 定位機(jī)制

CSS 有三種基本的定位機(jī)制:普通流软免、浮動(dòng)和絕對(duì)定位贰军。

一、普通流
  除非專門指定份帐,否則所有框都在普通流中定位璃吧。普通流中元素框的位置由元素在(X)HTML中的位置決定。塊級(jí)元素從上到下依次排列废境,框之間的垂直距離由框的垂直margin計(jì)算得到畜挨。行內(nèi)元素在一行中水平布置爷辙。

二、定位

‰佟1膝晾、相對(duì)定位
  被看作普通流定位模型的一部分,定位元素的位置相對(duì)于它在普通流中的位置進(jìn)行移動(dòng)务冕。使用相對(duì)定位的元素不管它是否進(jìn)行移動(dòng)血当,元素仍要占據(jù)它原來的位置。移動(dòng)元素會(huì)導(dǎo)致它覆蓋其他的框禀忆。

<html>
<head>
<style type="text/css"> .box1{ background-color: red; width:100px; height:100px;
    } .box2{ background-color: yellow; width:100px; height:100px; position: relative; left: 20px;
    } .box3{ background-color: blue; width:100px; height:100px; position: relative; right: 20px;
    }
</style>
</head>

<body>
<div class="box1">box1</div>
<div class="box2">box2</div>
<div class="box3">box3</div>
</body>

</html>

效果如下圖所示:

‰瘛2、絕對(duì)定位
  相對(duì)于已定位的最近的祖先元素箩退,如果沒有已定位的最近的祖先元素离熏,那么它的位置就相對(duì)于最初的包含塊(如body)。絕對(duì)定位的框可以從它的包含塊向上戴涝、右滋戳、下、左移動(dòng)啥刻。
  絕對(duì)定位的框脫離普通流奸鸯,所以它可以覆蓋頁(yè)面上的其他元素,可以通過設(shè)置Z-Iindex屬性來控制這些框的堆放次序可帽。

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style> 
*{
margin: 0;
padding: 0;
} 
#div1 { 
width: 200px; 
height: 200px; 
background: yellow;
} 
#div2 { 
width: 50%; 
height: 50%; 
background: red; 
top: 100px; 
left: 100px; 
position: absolute;
}
</style>
</head>
<body>
<div id="div1">
    <div id="div2"></div>
</div>
</body>
</html>

效果如下圖所示:

備注:相對(duì)于已相對(duì)定位的祖先元素對(duì)框進(jìn)行絕對(duì)定位娄涩,在大多數(shù)現(xiàn)代瀏覽器中都可以實(shí)現(xiàn)的很好。

∮掣3蓄拣、固定定位
  相對(duì)于瀏覽器窗口,其余的特點(diǎn)類似于絕對(duì)定位努隙。

三球恤、浮動(dòng)
  浮動(dòng)的框可以在左右移動(dòng),直到它的外邊框邊緣碰到包含框或另一個(gè)浮動(dòng)框的邊緣剃法。浮動(dòng)的框脫離普通流碎捺。
  如果包含塊太窄,無法容納水平排列的浮動(dòng)元素贷洲,那么其他浮動(dòng)塊向下移動(dòng)收厨,直到有足夠多的空間。如果浮動(dòng)元素的高度不同优构,那么當(dāng)它們向下移動(dòng)時(shí)可能會(huì)被其他浮動(dòng)元素卡住诵叁。
  行內(nèi)元素會(huì)圍繞著浮動(dòng)框排列。

請(qǐng)看下圖钦椭,當(dāng)把框 1 向右浮動(dòng)時(shí)拧额,它脫離文檔流并且向右移動(dòng)碑诉,直到它的右邊緣碰到包含框的右邊緣:

再請(qǐng)看下圖,當(dāng)框 1 向左浮動(dòng)時(shí)侥锦,它脫離文檔流并且向左移動(dòng)进栽,直到它的左邊緣碰到包含框的左邊緣。因?yàn)樗辉偬幱谖臋n流中恭垦,所以它不占據(jù)空間快毛,實(shí)際上覆蓋住了框 2,使框 2 從視圖中消失番挺。

如果把所有三個(gè)框都向左移動(dòng)唠帝,那么框 1 向左浮動(dòng)直到碰到包含框,另外兩個(gè)框向左浮動(dòng)直到碰到前一個(gè)浮動(dòng)框玄柏。

如下圖所示襟衰,如果包含框太窄,無法容納水平排列的三個(gè)浮動(dòng)元素粪摘,那么其它浮動(dòng)塊向下移動(dòng)瀑晒,直到有足夠的空間。如果浮動(dòng)元素的高度不同赶熟,那么當(dāng)它們向下移動(dòng)時(shí)可能被其它浮動(dòng)元素“卡住”:

清除浮動(dòng)

簡(jiǎn)單介紹下清除浮動(dòng)的2中方法瑰妄。

方法一:結(jié)合:after選擇器清除浮動(dòng)陷嘴。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style> .box1 { border: 1px solid red; background-color: yellow;
    } .clear:after { content: "." ; display: block; height: 0; visibility: hidden; clear: both;
    } .box2 { width: 50px; height: 50px; float: left; background-color: orange;
    } p { float: right;
    }
    </style>
</head>

<body>
    <div class="box1 clear">
        <div class="box2"> box2 </div>
        <p> lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦 </p>
    </div>
</body>

</html>

方法二映砖,在容器最后添加一個(gè)空元素并且清理它。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style> .box1 { border: 1px solid red; background-color: yellow;
    } .empty{ clear: both;
    } .box2 { width: 50px; height: 50px; float: left; background-color: orange;
    } p { float: right;
    }
    </style>
</head>

<body>
    <div class="box1 clear">
        <div class="box2"> box2 </div>

        <p> lallalalalalal啦啦啦
 lallalalalalal啦啦啦
 lallalalalalal啦啦啦
lallalalalalal啦啦啦
 lallalalalalal啦啦啦 
lallalalalalal啦啦啦 
lallalalalalal啦啦啦
 lallalalalalal啦啦啦 
lallalalalalal啦啦啦
 lallalalalalal啦啦啦
 lallalalalalal啦啦啦
 lallalalalalal啦啦啦 </p>
        <br class="empty" />
    </div>
</body>

</html>

效果均如下所示:

附錄:

CSS position 屬性總結(jié):

所有主流瀏覽器都支持 position 屬性灾挨。position屬性規(guī)定元素的定位類型邑退,影響元素框生成的方式。

可能的值

absolute

生成絕對(duì)定位的元素劳澄,相對(duì)于 static 定位以外的第一個(gè)父元素進(jìn)行定位地技,如果不存在這樣的父元素,則依據(jù)最初的包含快秒拔。根據(jù)用戶代理的不同莫矗,最初的包含塊可能是畫布或 HTML 元素。

元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定砂缩,也可以通過z-index進(jìn)行層次分級(jí)作谚。

(元素框從文檔流完全刪除,并相對(duì)于其包含塊定位庵芭。包含塊可能是文檔中的另一個(gè)元素或者是初始包含塊妹懒。元素原先在正常文檔流中所占的空間會(huì)關(guān)閉,就好像元素原來不存在一樣双吆。元素定位后生成一個(gè)塊級(jí)框眨唬,而不論原來它在正常流中生成何種類型的框会前。)

fixed

生成固定/絕對(duì)定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位匾竿。

元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進(jìn)行規(guī)定瓦宜。

(元素框的表現(xiàn)類似于將 position 設(shè)置為 absolute,不過其包含塊是視窗本身岭妖。)

relative

生成相對(duì)定位的元素歉提,相對(duì)于其正常位置進(jìn)行定位。

因此区转,"left:20" 會(huì)向元素的 LEFT 位置添加 20 像素苔巨。

(相對(duì)定位實(shí)際上被看作普通流定位模型的一部分,因?yàn)樵氐奈恢孟鄬?duì)于它在普通流中的位置废离。元素框偏移某個(gè)距離侄泽。元素仍保持其未定位前的形狀,仍保留原本所占的空間蜻韭。 )

static

默認(rèn)值悼尾。沒有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明肖方,即上述聲明無效)闺魏。

(元素框正常生成。塊級(jí)元素生成一個(gè)矩形框俯画,作為文檔流的一部分析桥,行內(nèi)元素則會(huì)創(chuàng)建一個(gè)或多個(gè)行框,置于其父元素中艰垂。)

inherit :規(guī)定應(yīng)該從父元素繼承 position 屬性的值泡仗。

CSS 定位屬性

CSS 定位屬性允許你對(duì)元素進(jìn)行定位。

屬性 描述
position 把元素放置到一個(gè)靜態(tài)的猜憎、相對(duì)的娩怎、絕對(duì)的、或固定的位置中胰柑。
top 定義了一個(gè)定位元素的上外邊距邊界與其包含塊上邊界之間的偏移截亦。
right 定義了定位元素右外邊距邊界與其包含塊右邊界之間的偏移。
bottom 定義了定位元素下外邊距邊界與其包含塊下邊界之間的偏移柬讨。
left 定義了定位元素左外邊距邊界與其包含塊左邊界之間的偏移崩瓤。
overflow 設(shè)置當(dāng)元素的內(nèi)容溢出其區(qū)域時(shí)發(fā)生的事情。
clip 設(shè)置元素的形狀姐浮。元素被剪入這個(gè)形狀之中谷遂,然后顯示出來。
vertical-align 設(shè)置元素的垂直對(duì)齊方式卖鲤。
z-index 設(shè)置元素的堆疊順序肾扰。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末畴嘶,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子集晚,更是在濱河造成了極大的恐慌窗悯,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偷拔,死亡現(xiàn)場(chǎng)離奇詭異蒋院,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)莲绰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門欺旧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛤签,你說我怎么就攤上這事辞友。” “怎么了震肮?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵称龙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我戳晌,道長(zhǎng)鲫尊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任沦偎,我火速辦了婚禮疫向,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扛施。我一直安慰自己鸿捧,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布疙渣。 她就那樣靜靜地躺著,像睡著了一般堆巧。 火紅的嫁衣襯著肌膚如雪妄荔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天谍肤,我揣著相機(jī)與錄音啦租,去河邊找鬼。 笑死荒揣,一個(gè)胖子當(dāng)著我的面吹牛篷角,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播系任,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼恳蹲,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼虐块!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嘉蕾,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤贺奠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后错忱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體儡率,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年以清,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了儿普。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡掷倔,死狀恐怖箕肃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情今魔,我是刑警寧澤勺像,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站错森,受9級(jí)特大地震影響吟宦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涩维,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一殃姓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瓦阐,春花似錦蜗侈、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至戳杀,卻和暖如春该面,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背信卡。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工隔缀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人傍菇。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓猾瘸,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子牵触,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1 簡(jiǎn)要描述CSS 中的定位機(jī)制 CSS中荒吏,除了默認(rèn)的流定位方式以外敛惊,還有如下幾種定位機(jī)制:浮動(dòng)定位、相對(duì)定位绰更、絕...
    駭客與畫家閱讀 634評(píng)論 0 0
  • CSS 定位 (Positioning) 屬性允許你對(duì)元素進(jìn)行定位瞧挤。 CSS 定位和浮動(dòng) CSS 為定位和浮動(dòng)提供...
    LorenSLJ閱讀 1,001評(píng)論 0 1
  • 一,浮動(dòng)元素有什么特征儡湾?對(duì)父容器特恬、其他浮動(dòng)元素、普通元素徐钠、文字分別有什么影響? 浮動(dòng)模型是一種可視化格式模型癌刽,浮動(dòng)...
    DeeJay_Y閱讀 856評(píng)論 0 4
  • 1.浮動(dòng)元素有什么特征爹袁?對(duì)父容器远荠、其他浮動(dòng)元素、普通元素失息、文字分別有什么影響? 何謂浮動(dòng)元素譬淳?有什么特征?所謂浮動(dòng)...
    草鞋弟閱讀 808評(píng)論 0 1
  • CSS 定位 CSS有三種基本的定位機(jī)制:普通流,浮動(dòng)绎秒,絕對(duì)定位(absolute, fixed):普通流是默認(rèn)定...
    _空空閱讀 5,719評(píng)論 0 15