CSS使用小技巧---跟隨項目及時更新中

position的幾個屬性:

1、static(靜態(tài)定位):默認值。沒有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)。

2、relative(相對定位):生成相對定位的元素,通過top,bottom,left,right的設(shè)置相對于其正常(原先本身)位置進行定位??赏ㄟ^z-index進行層次分級。

3、absolute(絕對定位):生成絕對定位的元素,相對于?static 定位以外的第一個父元素進行定位。元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進行規(guī)定??赏ㄟ^z-index進行層次分級。

4、fixed(固定定位):生成絕對定位的元素,相對于瀏覽器窗口進行定位。元素的位置通過 "left", "top", "right" 以及 "bottom" 屬性進行規(guī)定。




absolute和relative的使用:

場景:設(shè)計師同學(xué)設(shè)計的樣式和組件的不同,剛開始的時候,想著盡量不要去改組件,畢竟很多人用,后來就用到了relative和absolute這兩個css樣式(最后發(fā)現(xiàn)這種在不同情況下改動位置不同,判斷起來比較麻煩,還是使用添加slot的方法來解決)。

做了如下實驗,設(shè)置了三個div

情況1:


正常排列,沒有添加樣式,這個時候改變div2,設(shè)置其position:absolute, 為了明顯設(shè)置一個top:50px,left:50px,height:100px,運行結(jié)果如下圖所示:
寬度由文本而定,沒有父元素,位置相對于根元素即html元素來定位,是脫離文檔流的,會影響原有div3的位置
.div2 { height:100px; background-color: yellow; position: relative; top: 50px; left: 50px;}把上面情況中的absolute換成relative,結(jié)果如上圖所示,relative不會影響其他div的位置,而且top和left是相對于它自身的位置來定位的。

情況2:給第二個div添加父div

<div class="container2">

? ? ? 這是第二個div的父div

? ? ? <div class="div2">這是第二個div</div>

? ? </div>

.container2{

? position: absolute;

? height: 200px;

? background-color: greenyellow;

}

.div2 {

? height:100px;

? background-color: yellow;

? position: absolute;

? top: 50px;

? left: 50px;

}

則結(jié)果如下圖所示container2的寬度由子控件來撐開,div2相對于父div來定位,如果么有”這是第二個div“則如下圖



container沒有寬度的情況

若將第二個absolute改為relative


注意:上面兩個圖的div與父div的上邊距是不同的,第一個absolute是相對于父div的。第二個是相對于自身位置的。在沒有設(shè)置寬度的情況下,第一個設(shè)置為absolute寬度為文本的寬度,第二個為relative寬度與俯視圖的寬度相同

情況3:保持情況2的兩種情況,都講第二個div的寬度設(shè)置為500px得到效果如下



子div為absolute的情況下
子div為relative的情況

由上圖可以知道,absolute定位的子元素不會影響父元素的寬度,而relative定位的子元素會撐大父元素。

總結(jié):absolution:元素會脫離文檔流,定位是相對于離它最近的且不是static定位的父元素而言,若該元素沒有設(shè)置寬度,則寬度由元素里面的內(nèi)容決定,而寬度不會影響父元素定位為absolute之后,原本的位置相當于空的,下面的元素會來占據(jù)。

relative:元素仍然處于文檔流中,定位是相對于原本自身的位置,若沒有設(shè)置寬度,則寬度為父元素的寬度,該元素的大小會影響父元素的大小



技巧2:相對父元素居中有如下設(shè)計稿

button:first-child::after {

? ? ? ? ? ? content: "*首付比例:35%-50%";

? ? ? ? ? ? position: absolute;

? ? ? ? ? ? font-size: 11px;

? ? ? ? ? ? font-weight: regular;

? ? ? ? ? ? top: 43px;

? ? ? ? ? ? color: #9898a4;

? ? ? ? ? ? height: 20px;

? ? ? ? ? ? width: 140px;

? ? ? ? ? ? left: 50%;

? ? ? ? ? ? transform: translate(-50%);

? ? ? ? }

讓下面的小字依據(jù)上面的按鈕的寬度,居中顯示可以采用?

?left: 50%;? ? ?transform: translate(-50%);

含義:transform: translate(-50%);?把元素沿著橫向(x軸)移動自身寬度的50%,一般是從左側(cè)為開始點也就是0點。而數(shù)值是-50%,所以是從左側(cè)0點向左移動自身寬度的50%。


參考:https://blog.csdn.net/weixin_42067967/article/details/80152403

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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