CSS - position屬性詳解

相信很多同學(xué)在編寫、設(shè)計(jì)網(wǎng)站的時(shí)候多多少少用過css里的position這個(gè)屬性,但是很多時(shí)候網(wǎng)頁(yè)顯示出來的和自己想象的不太一樣,這篇筆記來教你怎么使用position。

position屬性一共有5個(gè)不同的值,下表借鑒于W3Schools

描述
absolute 生成絕對(duì)定位的元素,相對(duì)于static定位以外的第一個(gè)父元素進(jìn)行定位。元素的位置通過left, right, top, bottom進(jìn)行規(guī)定
fixed 生成絕對(duì)定位的元素,相對(duì)于瀏覽器窗口進(jìn)行定位。元素的位置通過left, right, top, bottom進(jìn)行規(guī)定
relative 生成相對(duì)定位的元素,相對(duì)于其正常位置定位。元素的位置通過left, right, top, bottom進(jìn)行規(guī)定
static 默認(rèn)值,忽略 top, bottom, left, right和z-index
inherit 從父元素繼承該屬性的值

熟悉了表格里的屬性后,請(qǐng)看如下代碼示例:

<div class="outer"> <!-- 黑色 -->
  <div class="inner1"></div> <!-- 紅色 -->
  <div class="inner2"></div> <!-- 黃色 -->
  <div class="inner3"></div> <!-- 藍(lán)色 -->
</div>
.outer {
  width: 400px;
  height: 300px;
  background: black;
  margin: auto;
  position: absolute;
  z-index: -1;
}

.inner1 {
  width: 100px;
  height: 100px;
  background: red;
  position: absolute;
}

.inner2 {
  width: 100px;
  height: 100px;
  background: yellow;
  position: relative;
  left: 100px;
}

.inner3 {
  width: 100px;
  height: 100px;
  background: blue;
  position: inherit; /* absolute */
  left: 50px;
  top: 50px;
  /* z-index: -1; */
}
上方代碼執(zhí)行結(jié)果

  1. 設(shè)置了一個(gè)外部container,為三個(gè)inner的父元素,absolute絕對(duì)定位
  2. 子元素 inner1 被設(shè)為absolute,使其跳出了當(dāng)前DOM流的約束
  • 因?yàn)楦冈夭皇莝tatic,所以子元素將相對(duì)于父元素來定位。
  • 當(dāng)top, bottom, left, right四個(gè)屬性沒有被賦值時(shí),并且父元素里沒有其它元素在DOM tree里位于它前面時(shí),它將位于父元素的左上角;有其它元素在它前面時(shí),它將位于此元素下面的左上角。
  • 當(dāng)top, bottom, left, right四個(gè)屬性被賦值時(shí),它的位置將相對(duì)于父元素來定位。
  • 如果父元素為static,那么absolute元素將相對(duì)于瀏覽器絕對(duì)定位。
  1. 子元素 inner2 被設(shè)為relative,它將相對(duì)于正常位置,通過left, right, top, bottom來定位
  • 重要:inner2的left被設(shè)置為100px,但它卻緊挨著inner1元素,由此可以看出inner1元素因被設(shè)置為absolute絕對(duì)定位而脫離了DOM,不然inner2應(yīng)該距離inner1 100px的長(zhǎng)度。
  1. 子元素 inner3 用來解釋inherit和屬性z-index
  • inner3繼承了父元素outer的position屬性的值,所以為absolute。
  • z-index屬性 非常有用,用來設(shè)置z軸上元素的排列,也就是上下層疊關(guān)系,值越大元素越在上層。z-index在UI布局上發(fā)揮了很大作用,讓手機(jī)屏幕成為了一個(gè)三維空間,著名的Material UI對(duì)z-index的應(yīng)用是一個(gè)典例。
  1. fixed在例子中沒有出現(xiàn),fixed的元素將相對(duì)于viewport(視口)進(jìn)行定位,不受何上下滾動(dòng)條的約束,感興趣的同學(xué)可以去嘗試一下。
  2. 最后,給大家一個(gè)在線編輯代碼的地址,可以去自己嘗試一下,自己動(dòng)手永遠(yuǎn)記得更加深刻
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,168評(píng)論 1 92
  • 當(dāng)在這一個(gè)頁(yè)面上實(shí)現(xiàn)布局和定位有幾種不同的技術(shù)。使用哪種技術(shù),很大程序上取決于內(nèi)容和目標(biāo)頁(yè)面,因?yàn)橛泻芏嗉夹g(shù)比別人...
    lulu_c閱讀 1,223評(píng)論 0 5
  • CSS的position總是屬性很容易讓人弄混~ 為了仔細(xì)區(qū)別它們,所以今天總結(jié)一下CSS的position屬性~...
    fehysunny閱讀 3,081評(píng)論 0 7
  • 之前介紹過CSS浮動(dòng)float詳解,本篇介紹的絕對(duì)定位absolute和浮動(dòng)float有部分相似性。如果能理解浮動(dòng)...
    張歆琳閱讀 97,007評(píng)論 39 192
  • 原本是有課的 因?yàn)轳{校體檢耽誤了 室友說上課很無聊 我索性就不去了 沒有鑰匙 就坐在湖邊曬曬太陽(yáng)咯 最近一個(gè)月發(fā)生...
    林深時(shí)見鹿有閱讀 296評(píng)論 0 0

友情鏈接更多精彩內(nèi)容