css之定位元素

2021-09-30 13:17:02 字數 1858 閱讀 1114

元素的定位是掌握css技術的核心,只有熟練運用元素定位才能用css創造出專業水準的頁面布局。

定位元素的技術包括:

box model

float

position

所謂盒模型,就是指每乙個html元素會在頁面上生成乙個盒子,將該元素包圍其中。html元素其實是由一堆的盒子構成的。

p.test
如上**生成的盒子,width和height屬性控制內容區的大小(即有字的區域),padding屬性控制內容邊界到邊框內邊界的大小,border屬性控制邊框的大小,margin屬性控制邊框外邊界到相鄰盒子的距離。可以把盒子模型看成是乙個戒指盒,戒指本身佔據的區域是真正的內容區域,戒指和盒子之間還有很大的空間由其他材料填充,這一部分可以看成是padding的內容,盒子本身的厚度自然是border的內容了。

float是實現頁面多欄布局的關鍵技術。最初css設計float屬性的主要目的是為了實現文字繞排的效果,不過後來發現這個屬性成為了建立多欄布局的最簡單的方式。為元素新增float屬性,即可讓其脫離正常文件流。形式上相當於從block元素變成inline元素,特點是不再佔據一整行的空間。

使用float的時候會有乙個問題,那就是浮動元素脫離了文件流,其父元素就會失去對他的控制,所以不再包圍此元素,這種情況很多時候並不是我們想要的。這裡介紹三種方法讓浮動元素不脫離父元素,三種方法各有適用範圍,應結合實際情況選擇。

一:為父元素新增屬性overflow: hidden

二:同時浮動父元素

三:新增非浮動的清除元素

第三種方法有兩種實現形式,一是簡單的在html標記中新增乙個子元素,並給他應用clear屬性。由於沒有預設的樣式,不會引入多餘的空間,div元素很適合用在這裡。

i'm the footer.

然後就是為該div新增clear屬性了

.clear
接下來介紹第二種實現形式,這是乙個只用css實現清除的方法,並不需要在結構文件中新增多餘的元素。

首先為父元素新增屬性class="clearfix",然後再使用這個神奇的clearfix規則。

.clearfix:after
最後介紹position屬性,這是css布局的核心。position屬性有四個值:static, relative, absolute, fixed,預設值是static。這裡詳細介紹relative和absolute兩個屬性值。

相對定位:給元素新增relative屬性後,該元素會相對於它原來在文件流中的位置發生位移,利用top和left屬性設定相對位移的大小。位移之後,該元素可能會遮住旁邊的元素,而該元素的原始位置會空著,並不會被旁邊的元素搶占。也就是說原始的文件流並沒有被破壞,變的僅僅是該元素的位置。使用相對定位的關鍵是要考慮到元素原來的空間,合理的使用margin等屬性,避免其他元素被重新定位的元素遮住。

絕對定位:絕對定位和相對定位的區別有兩個。一是絕對定位的元素會徹底脫離文件流,也就是說絕對定位後,該元素的原始位置不會再空著了,其下方的元素會往上填充這個空出來的地方。另乙個區別是絕對定位根據頂級元素body在定位,而相對定位根據元素的原始位置定位。通過top和left設定的偏移值,決定了元素相對於body元素的位置偏移多遠。有的時候我們希望絕對定位元素不要根據body,而是根據其父元素來定位,要實現這個效果,只需要將相應的父元素的position屬性值設定為relative就可以了。

固定定位:固定定位和絕對定位非常相似,區別只有乙個。即固定元素根據視口來定位,而絕對定位根據body來定位。因此固定定位之後的元素不會隨頁面滾動而滾動,這個特性並不常用,最常見的情況是用它建立不隨頁面滾動而移動的導航元素。

CSS 浮動與定位元素

元素分為正常流和非正常流,非正常流中包含浮動與定位 先說定位,定位包含相對定位 relative 絕對定位 absolute 以及固定定位 fixed position屬性 static 預設 relative absolute fixed 無繼承性 相對定位 position relative 相...

CSS世界(五)定位元素

定位,指確定某一事物在一定環境中的位置 屬性值 fixed relative,absolute,static 非static屬性值,會使得元素表現為block預設定位,跟隨文件流 一般 從上至下,從左至右 修改過文字流方向除外 body固定定位,常用於廣告,或醒目的固定內容 作用於可視視窗 body...

定位元素之巢狀iframe

經常會有一些小白們,在編寫python自動化 的時候,遇到定位不到元素的問題。檢查了很多遍 也在網頁上反覆的核實,定位的xpath也是寫對了的,那麼,問題出在 了?這時候就需要考慮是不是有巢狀iframe的問題了。以qq空間網頁版為例,需要定位到頁面上的 賬號密碼登入 driver.find ele...