CSS中相對定位和絕對定位理解

CSS布局在整個前端開發(fā)中占據(jù)了大約50-70%的工作量,在遵循web規(guī)范的前提下亿蒸,編寫合乎規(guī)范的前端代碼凑兰,實現(xiàn)結(jié)構(gòu)、樣式和行為的分離边锁,對于后期代碼的維護以及不同的開發(fā)人員之間的協(xié)作具有重要的意義姑食。

在編寫html的過程中,強調(diào)使用帶有明確語義的標(biāo)簽,Html中標(biāo)簽除了div和span之外都是有明確的語義的茅坛,這樣一方面可以增強代碼的可讀性音半,另一方面可加快瀏覽器的解析速度。

HTML中的每一個標(biāo)簽贡蓖,根據(jù)其其自身的屬性可以區(qū)分為行級元素還是塊級元素,一般情況下,應(yīng)該盡可能使用標(biāo)簽?zāi)J(rèn)的位置進行布局局蚀,當(dāng)默認(rèn)位置不能滿足展示需求的時候急但,再考慮采用css代碼來進一步控制標(biāo)簽元素的位置。 CSS定位的基礎(chǔ)是基于盒子模型晾蜘,介紹如下:

CSS的盒子模型

任何頁面元素都可以看成一個盒子

一個盒子模型由content邻眷、padding眠屎、border、margin四部分組成肆饶。

width(height)的值指content的width(height)+padding的值改衩。

border:border-top、border-bottom抖拴、border-left燎字、border-right

width: thin、medium阿宅、thick候衍、數(shù)值

style: none、hidden洒放、dotted蛉鹿、dashed、solid往湿、double妖异、groove、ridge领追、inset他膳、outset

padding:padding-top、padding-bottom绒窑、padding-left棕孙、padding-right

margin:margin-top、margin-bottom些膨、margin-left蟀俊、margin-right

對一行而言,兩個塊的margin = margin-right + margin-left

對換行而言订雾,兩個塊的margin = margin-bottom和margin-top中較大者

對父子而言肢预,子塊的margin = 子塊的margin + 父塊的padding

當(dāng)margin設(shè)為負數(shù)時,塊會向相反的方向移動洼哎,甚至覆蓋另外的塊

定位含義

定位的目的是在框元素的padding烫映、margin等自身屬性無法滿足需求時,改變元素在html文檔中的默認(rèn)位置谱净,定位到目標(biāo)區(qū)域時使用窑邦。如果要使用 top,bottom,left,right 屬性,就必須要使用relative和absolute定位屬性壕探。

在CSS中關(guān)于定位的類型有如下幾種:

position:relative | absolute | static | fixed

static(靜態(tài):沒有特別的設(shè)定冈钦,遵循基本的定位規(guī)定,保持原來的位置不變李请,不能通過z-index進行層次分級瞧筛。

relative(相對定位):對象不脫離文檔流厉熟,對象不可層疊、參考自身靜態(tài)位置通過 top,bottom,left,right 定位较幌,并且可以通過z-index進行層次分級揍瑟。也就是說盡管對象偏離了原來應(yīng)該所在的位置,但是原來的位置還是占據(jù)中乍炉,不然其他元素用绢片。

absolute(絕對定位):脫離文檔流,通過 top,bottom,left,right 定位岛琼。選取其最近一個最有定位設(shè)置的父級對象進行絕對定位底循,如果對象的父級沒有設(shè)置定位屬性,absolute元素將以body坐標(biāo)原點進行定位槐瑞,可以通過z-index進行層次分級熙涤。本來應(yīng)該在的位置被讓出來的,其他的元素填充那個位置困檩。

fixed(固定定位):這里所固定的參照對像是可視窗口而并非是body或是父級元素祠挫。可通過z-index進行層次分級悼沿。

注:

CSS中定位的層疊分級:z-index: auto | namber;

auto 遵從其父對象的定位

namber 無單位的整數(shù)值等舔。可為負數(shù)

相對定位

相對定位是相對于該元素本來在文檔中應(yīng)該出現(xiàn)的位置糟趾。

設(shè)置為相對定位的元素框會偏移某個距離软瞎。元素仍然保持其未定位前的形狀,它原本所占的空間仍保留拉讯。如果將 top 設(shè)置為 20px,那么框?qū)⒃谠恢庙敳肯旅?20 像素的地方鳖藕。如果 left 設(shè)置為 30 像素魔慷,那么會在元素左邊創(chuàng)建 30 像素的空間,也就是將元素向右移動著恩。

#box_relative {

position: relative;

left: 30px;

top: 20px;

}

絕對定位

決定定位是相對于其父元素而言院尔。

設(shè)置為絕對定位的元素框從文檔流完全刪除,并相對于其包含塊定位喉誊,包含塊可能是文檔中的另一個元素或者是初始包含塊邀摆。元素原先在正常文檔流中所占的空間會關(guān)閉,就好像該元素原來不存在一樣伍茄。元素定位后生成一個塊級框栋盹,而不論原來它在正常流中生成何種類型的框。絕對定位使元素的位置與文檔流無關(guān)敷矫,因此不占據(jù)空間例获。這一點與相對定位不同汉额,相對定位實際上被看作普通流定位模型的一部分,因為元素的位置相對于它在普通流中的位置榨汤。絕對定位的元素的位置相對于最近的已定位祖先元素蠕搜,如果元素沒有已定位的祖先元素,那么它的位置相對于最初的包含塊收壕。

普通流中其它元素的布局就像絕對定位的元素不存在一樣:

#box_relative {

position: absolute;

left: 30px;

top: 20px;

}

因為絕對定位的框與文檔流無關(guān)妓灌,所以它們可以覆蓋頁面上的其它元素∶巯埽可以通過設(shè)置 z-index 屬性來控制這些框的堆放次序虫埂。

一個例子

如果要是要使父元素包含子元素的話,應(yīng)該使父元素的寬和高包含子元素的端壳。

Div1為絕對定位:其脫離為文檔流告丢。不占據(jù)文檔流的位置,position: absolute;left: 150px;top:20px;

Div2為相對定位:注意是相對其應(yīng)該出現(xiàn)的位置损谦,position:relative ;top:20px;left:150px;

Div21為相對定位:圖所示岖免,可以理解。

#div0{

border: 2px solid #FE7633; height:220px; width:380px;

}

#div1{

border: 2px solid #C2DCFF;

height: 80px;

width: 150px;

position: absolute;

left: 150px;

top:20px;

}

#div2{position:relative ;top:20px;left:150px; border:2px solid #646464; height:120px; width:150px}

#div21{border:2px solid #A5D69C; height:120px; width:50px}

#div3{ border:2px solid #A5D69C; height:20px; width:250px;}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末照捡,一起剝皮案震驚了整個濱河市颅湘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌栗精,老刑警劉巖闯参,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悲立,居然都是意外死亡鹿寨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門薪夕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脚草,“玉大人,你說我怎么就攤上這事原献×罂” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵姑隅,是天一觀的道長写隶。 經(jīng)常有香客問我,道長讲仰,這世上最難降的妖魔是什么慕趴? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上秩贰,老公的妹妹穿的比我還像新娘霹俺。我一直安慰自己,他們只是感情好毒费,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布丙唧。 她就那樣靜靜地躺著,像睡著了一般觅玻。 火紅的嫁衣襯著肌膚如雪想际。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天溪厘,我揣著相機與錄音胡本,去河邊找鬼。 笑死畸悬,一個胖子當(dāng)著我的面吹牛侧甫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蹋宦,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼披粟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了冷冗?” 一聲冷哼從身側(cè)響起守屉,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蒿辙,沒想到半個月后拇泛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡思灌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年俺叭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泰偿。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡绪颖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出甜奄,到底是詐尸還是另有隱情,我是刑警寧澤窃款,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布课兄,位于F島的核電站,受9級特大地震影響晨继,放射性物質(zhì)發(fā)生泄漏烟阐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜒茄。 院中可真熱鬧唉擂,春花似錦、人聲如沸檀葛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽屿聋。三九已至空扎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間润讥,已是汗流浹背转锈。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留楚殿,地道東北人撮慨。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像脆粥,于是被迫代替她去往敵國和親砌溺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案冠绢? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,737評論 1 92
  • 各種純css圖標(biāo) CSS3可以實現(xiàn)很多漂亮的圖形抚吠,我收集了32種圖形,在下面列出弟胀。直接用CSS3畫出這些圖形楷力,要比...
    劍殘閱讀 9,508評論 0 8
  • 1、垂直對齊 如果你用CSS孵户,則你會有困惑:我該怎么垂直對齊容器中的元素萧朝?現(xiàn)在,利用CSS3的Transform夏哭,...
    kiddings閱讀 3,153評論 0 11
  • 我們先來看看CSS3 Api中對position屬性的相關(guān)定義: static:無特殊定位竖配,對象遵循正常文檔流何址。t...
    __越過山丘__閱讀 559評論 0 0
  • C:小J啊,你會畫圓嗎进胯? J:會坝米Α! 我:(⊙?⊙)你還會化緣P哺洹Y搜V钕巍?颇玷?笨农? A:((*???)ゞ→→ J:施主! ...
    Dwhite閱讀 239評論 1 0