CSS position: absolute 絕對定位
一.絕對定位基本概念:
作者作為一個多年從業人員,前端知識的點點滴滴都是從零學起的。
由此也深知在初學階段所面臨的問題,絕對定位和相對定位曾是攔路虎之一,至今記憶深刻。
本文將通過程式碼例項詳細介紹一下position:absolute絕對定位,相對定位可以參閱CSS 相對定位一章節。
絕對定位主要會對元素產生如下幾個方面的影響:
(1).元素可以產生位移。
(2).元素會脫離文件流。
(3).將內聯元素轉換為塊級元素。
關於文件流更多內容可以參閱什麼是文件流一章節。
語法結構:
[CSS] 純文字檢視 複製程式碼position:absolute
上面程式碼可以將指定元素設定為絕對定位,通常和top、right、bottom和left具體定位屬性配合使用。
程式碼片段如下:
[CSS] 純文字檢視 複製程式碼div{ position:absolute; left:10px; top:20px; }
具體定位屬性解析:
(1).top:規定絕對定位元素距離定位參考元素頂部的距離。
(2).bottom:規定絕對定位元素距離定位參考元素底部的距離。
(3).left:規定絕對定位元素距離定位參考元素左部的距離。
(4).bottom:規定絕對定位元素距離定位參考元素底部的距離。
簡單圖示如下:
特別說明:定位元素經常與z-index屬性一起使用,具體可以參閱CSS z-index一章節。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> .ant{ width:100px; height:100px; background-color:#0094ff; position:absolute; left:50px; top:30px; } </style> </head> <body> <div class="ant"></div> </body> </html>
可能會有朋友問,同時設定top/bottom或者left/right這種方位衝突的屬性值會出現什麼情況。
位移值可以是負數,程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> .ant{ width:100px; height:100px; background-color:#0094ff; position:absolute; left:50px; top:-30px; } </style> </head> <body> <div class="ant"></div> </body> </html>
如果設定為負數,那麼元素就會向相反的方位位移。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> .ant{ width:100px; height:100px; background-color:#0094ff; position:absolute; left:50px; right:1500px; top:30px; bottom:2000px; } </style> </head> <body> <div class="ant"></div> </body> </html>
由瀏覽器渲染效果可以看出left和top的優先順序要高於right和bottom。
二.絕對定位位移參考物件:
相對定位位移是參考元素本身進行的,而絕對定位則相對複雜。
看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #relative { position: relative; width: 100px; height: 100px; background: green; } #middle { background: red; width: 50px; height: 50px; } #absolute { position: absolute; width: 20px; height: 20px; top: 10px; right: 10px; background: blue; } </style> </head> <body> <div id="relative"> <div id="middle"> <div id="absolute"></div> </div> </div> </body> </html>
絕對定位元素位移會以父輩元素中最近的定位元素(準確的說是此元素產生的包含塊)為定位參考物件;其實不光是位移,大小也會參考此包含塊,再來看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #relative { position: relative; width: 100px; height: 100px; background: green; } #middle { background: red; width: 50px; height: 50px; } #absolute { position: absolute; width: 30%; height: 30%; top: 10px; right: 10px; background: blue; } </style> </head> <body> <div id="relative"> <div id="middle"> <div id="absolute"></div> </div> </div> </body> </html>
最裡面定位的div元素的尺寸是參考父輩元素中最近的定位元素(準確的說是此元素產生的包含塊)的尺寸。
如果絕對定位元素的父輩元素中沒有采用定位的,那麼此絕對定位元素的參考物件是誰呢,有的人說是body,有的人會說是document,其實都不是,看MDN上的介紹,截圖如下:
以initial containing block為參考,它的尺寸是和視口是一致的,但不是由Viewport所產生的,而是由根元素<html>所產生的。
看如下程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style> * { margin:0px; padding:0px; } body { height:1500px; } div { width:100px; height:50px; background:green; position:absolute; bottom:0px; } </style> </head> <body> <div></div> </body> </html>
如果參考物件是body或者document的話,div元素肯定要位於頁面的最底部,這裡只是位於視口的最底部。
CSS3 transform對位移參考物件也會產生影響具體可以參閱transform變換可以改變定位元素的包含塊一章節。
特別說明:定位元素經常與z-index屬性一起使用,具體可以參閱CSS z-index一章節。
相關文章
- CSS position:absolute 絕對定位CSS
- css篇之absolute絕對定位元素居中技巧CSS
- css的position:absoluteCSS
- CSS - 定位屬性position使用詳解(static、relative、fixed、absolute)CSS
- CSS position: relative 相對定位CSS
- CSS position:relative 相對定位CSS
- SciTech-BigDataAIML-LLM-PE(Positional Encoding)位置編碼: Absolute(絕對)Position + Relative(相對)Position + Rotate(旋轉)PositionAIEncoding
- # CSS 絕對定位釋義CSS
- CSS之定位PositionCSS
- CSS的定位:positionCSS
- 前端~定位屬性position(relative、absolute、fixed)的分析前端
- position的relative和absolute分別是相對誰進行定位的?
- css絕對定位和相對定位的差別CSS
- CSS position定位(fixed、sticky)CSS
- CSS position:sticky 粘性定位CSS
- CSS position: sticky 粘性定位CSS
- position的relative和absolute定位原點是哪裡?
- CSS深入理解之absolute定位CSS
- CSS中position屬性( absolute | relative | static | fixed )詳解CSS
- position:absolute相對哪個元素定位,那個元素要滿足什麼條件
- 淺談CSS中的Position(定位)CSS
- 【前端Talkking】CSS系列——CSS深入理解之absolute定位前端CSS
- absolute定位css元素居中的兩種方法CSS
- CSS進階(13)—— position:absolute如此高深,我當真不懂(中)CSS
- position:fixed 相對父元素定位
- web前端css定位position和起浮floatWeb前端CSS
- Position定位
- 有關float、position:absolute及a元素
- 絕對漂移Absolute Drift for Mac(賽車漂移遊戲)Mac遊戲
- 關於CSS中的定位使用子絕父相(子類絕對位置和父類相對位置)CSS
- 1-相對定位、絕對定位和固定定位的區別
- position:relative相對定位不脫離文件流
- Position定位詳解
- css positionCSS
- 好程式設計師web前端教程分享web中CSS絕對定位程式設計師Web前端CSS
- 外邊距與絕對定位
- 絕對定位使用margin:0 auto居中
- CSS之positionCSS