浮動(dòng)與定位

圖片發(fā)自簡(jiǎn)書App


1 . 浮動(dòng)的特征逛腿,影響#####

浮動(dòng)模型也是一種可視化格式模型单默,浮動(dòng)的框可以左右移動(dòng)(根據(jù)float屬性值而定),直到它的外邊緣碰到包含框或者另一個(gè)浮動(dòng)元素的框的邊緣引颈。浮動(dòng)元素不在文檔的普通流中蝙场,文檔的普通流中的元素表現(xiàn)的就像浮動(dòng)元素不存在一樣.

如果包含塊兒太窄無法容納水平排列的三個(gè)浮動(dòng)元素,那么其它浮動(dòng)塊兒向下移動(dòng),直到有足夠的空間,如果浮動(dòng)元素的高度不同,那么向下移動(dòng)的時(shí)候可能被卡住

浮動(dòng)會(huì)讓元素脫離普通流, 如果浮動(dòng)的元素后面有一個(gè)文檔流中元素,那么這個(gè)元素的框會(huì)表現(xiàn)的像浮動(dòng)元素不存在,但是框的文本內(nèi)容會(huì)受到浮動(dòng)元素的影響,會(huì)移動(dòng)以留出空間.用術(shù)語說就是浮動(dòng)元素旁邊的行框被縮短,從而給浮動(dòng)元素流出空間,因而行框圍繞浮動(dòng)框售滤,形成文字環(huán)繞的視覺效果逼泣。

對(duì)父元素的影響 子元素都浮動(dòng)時(shí)舟舒,父元素高度為0秃励,高度塌陷吉捶。

對(duì)其他浮動(dòng)元素的影響 同一個(gè)方向的浮動(dòng)元素:當(dāng)一個(gè)浮動(dòng)元素在浮動(dòng)過程中碰到同一個(gè)方向的浮動(dòng)元素時(shí)呐舔,它會(huì)緊跟在它們后面;反方向的浮動(dòng)元素:互不影響食呻,位于同一條水平線上仅胞,當(dāng)空間不夠時(shí)會(huì)被擠下

對(duì)普通元素的影響 對(duì)于兄弟節(jié)點(diǎn)為塊元素來說位于浮動(dòng)元素后面的元素可能會(huì)被浮動(dòng)元素覆蓋

對(duì)文字的影響 文字會(huì)被擠出去剑辫,形成文字環(huán)繞浮動(dòng)元素的效果。

對(duì)子元素的影響 當(dāng)一個(gè)元素浮動(dòng)時(shí)椎眯,在沒有清除浮動(dòng)的情況下编整,它無法撐開其父元素旦万,但它可以讓自己的浮動(dòng)子元素?fù)伍_它自身,并且在沒有定義具體寬度情況下,使自身的寬度從100%變?yōu)樽赃m應(yīng)(浮動(dòng)元素display:block)淆两。其高度和寬度均為浮動(dòng)元素高度和非浮動(dòng)元素高度之間的最大值拂酣。

2 . 清除浮動(dòng)是指#####

清除浮動(dòng)指清除掉元素float屬性,解決浮動(dòng)父容器高度塌陷問題剑勾,及 對(duì)其他元素造成的副作用。

清除浮動(dòng)的方法

(1)如果我們想讓父元素在視覺上包圍浮動(dòng)元素可以像下面這樣處理,在最后添加一個(gè)空div暂刘,對(duì)它清理谣拣。缺點(diǎn)是增加了一個(gè)無意義的標(biāo)簽

(2)BFC清理浮動(dòng)

兩種方案

雖然我們得出了一種瀏覽器兼容的靠譜解決方案族展,但這并不代表我們一定得用這種方式,很多時(shí)候我們的父容器本身需要position:absolute等形成了BFC的時(shí)候我們可以直接利用這些屬性了贵涵,大家要掌握原理独悴,活學(xué)活用锣尉。總而言之清理浮動(dòng)兩種方式

利用 clear屬性坟奥,清除浮動(dòng)

? .clearfix{

? ? ? *zoom:1;

? }

? .clearfix:after{

? ? ? content:"";

? ? ? display:block;

? ? ? clear:left;

? }

使父容器形成BFC

3 . 有幾種定位方式爱谁,分別是如何實(shí)現(xiàn)定位的孝偎,參考點(diǎn)是什么,使用場(chǎng)景是什么寺旺?#####

有一下幾種定位方式势决。

值 屬性 使用場(chǎng)景

inherit 規(guī)定應(yīng)該從父元素繼承 position 屬性的值

static 默認(rèn)值,沒有定位,元素出現(xiàn)在正常的流中(忽略 top, bottom, left, right 或者 z-index 聲明)

relative 生成相對(duì)定位的元素陈莽,相對(duì)于元素本身正常位置進(jìn)行定位,因此走搁,left:20px 會(huì)向元素的 left 位置添加20px

absolute 生成絕對(duì)定位的元素,相對(duì)于static定位以外的第一個(gè)祖先元素(offset parent)進(jìn)行定位,元素的位置通過 left, top, right 以及 bottom 屬性進(jìn)行規(guī)定

定位機(jī)制

CSS有三種基本的定位機(jī)制:普通流忌栅,浮動(dòng)狂秘,絕對(duì)定位(absolute,fixed)

普通流是默認(rèn)定位方式躯肌,在普通流中元素框的位置由元素在html中的位置決定,這也是我們最常見的方式钱烟,其中position: static與position:relative屬于普通流的定位方式

浮動(dòng)定位定位機(jī)制

絕對(duì)定位包括 absolute和 fixed

absolute 和 fixed

相對(duì)定位可以看作特殊的普通流定位拴袭,元素位置是相對(duì)于它在普通流中位置發(fā)生變化曙博,而絕對(duì)定位使元素的位置與文檔流無關(guān),也不占據(jù)文檔流空間般哼,普通流中的元素布局就像絕對(duì)定位元素不存在一樣

絕對(duì)定位的元素的位置是相對(duì)于距離最近的非static祖先元素位置決定的蒸眠。如果元素沒有已定位的祖先元素杆融,那么他的位置就相對(duì)于初始包含塊html來定位demo。

因?yàn)榻^對(duì)定位與文檔流無關(guān)蒋腮,所以絕對(duì)定位的元素可以覆蓋頁面上的其他元素徽惋,可以通過z-index屬性控制疊放順序座韵,z-index越高誉碴,元素位置越靠上。

fixed固定定位代咸,固定定位是絕對(duì)定位的一種呐芥,固定定位的元素也不包含在普通文檔流中奋岁,差異是固定元素的包含塊兒是視口(viewport)。

絕對(duì)定位寬度

絕對(duì)定位寬度是收縮的滨攻,如果想撐滿父容器光绕,可以設(shè)置 width: 100%畜份。

絕對(duì)定位和 BFC

絕對(duì)定位能形成 BFC 可用來清除浮動(dòng) 可用來阻止外邊距合并

絕對(duì)定位垂直水平居中

4 . z-index 有什么作用? 如何使用?#####

定義和用法

z-index 屬性設(shè)置元素的堆疊順序。擁有更高堆疊順序的元素總是會(huì)處于堆疊順序較低的元素的前面停蕉。

注釋:元素可擁有負(fù)的 z-index 屬性值谷徙。

注釋:Z-index 僅能在定位元素上奏效(例如 position:absolute;)驯绎!

說明

該屬性設(shè)置一個(gè)定位元素沿 z 軸的位置,z 軸定義為垂直延伸到顯示區(qū)的軸屈尼。如果為正數(shù)脾歧,則離用戶更近演熟,為負(fù)數(shù)則表示離用戶更遠(yuǎn)司顿。

5 . position:relative和負(fù)margin都可以使元素位置發(fā)生偏移?二者有什么區(qū)別#####

position:relative和負(fù)margin都能是元素位置發(fā)生偏移大溜,但兩者的原理是完全不同的钦奋。

margin是外間距疙赠,position是定位,兩者毫無相似之處

position:relvation是相對(duì)于自身原來的位置偏移厌衔,但其他元素認(rèn)為它還在原來的位置限佩。

margin的兼容性更好祟同。負(fù)margin的偏移會(huì)對(duì)其他元素產(chǎn)生影響,如果一個(gè)元素用負(fù)margin的方式偏移泞坦,可能會(huì)使相鄰元素的布局發(fā)生改變砖顷。

6 . BFC 是什么?如何生成 BFC豌熄?BFC 有什么作用锣险?舉例說明#####

BFC的全稱是 Block Format Content览闰。

① BFC會(huì)阻止垂直外邊距(margin-top、margin-bottom)折疊崖咨。

按照BFC的定義击蹲,只有同屬于一個(gè)BFC時(shí),兩個(gè)元素才有可能發(fā)生垂直Margin的重疊际邻,這個(gè)包括相鄰元素芍阎,嵌套元素谴咸,只要他們之間沒有阻擋(例如邊框,非空內(nèi)容血巍,padding等)就會(huì)發(fā)生margin重疊珊随。

因此要解決margin重疊問題,只要讓它們不在同一個(gè)BFC就行了鲫凶,但是對(duì)于兩個(gè)相鄰元素來說螟炫,意義不大艺晴,沒有必要給它們加個(gè)外殼,但是對(duì)于嵌套元素來說就很有必要了然评,只要把父元素設(shè)為BFC就可以了狈究。這樣子元素的margin就不會(huì)和父元素的margin發(fā)生重疊

②BFC不會(huì)重疊浮動(dòng)元素

③BFC可以包含浮動(dòng)

我們可以利用BFC的第三條特性來“清浮動(dòng)”,這里其實(shí)說清浮動(dòng)已經(jīng)不再合適贯莺,應(yīng)該說包含浮動(dòng)缕探。也就是說只要父容器形成BFC就可以还蹲,簡(jiǎn)單看看如何形成BFC

? float為 left|right

? overflow為 hidden|auto|scroll

? display為 table-cell|table-caption|inline-block

? position為 absolute|fixed

我們可以對(duì)父容器添加這些屬性來形成BFC達(dá)到“清浮動(dòng)”效果

<div style="border: solid 5px #0e0; width:300px;overflow:hidden;">

<div style="height: 100px; width: 100px; background-color: Red;? float:left;">? ? ? </div>

<div style="height: 100px; width: 100px; background-color: Green;? float:left;"> </div>

<div style="height: 100px; width: 100px; background-color: Yellow;? float:left;"> </div>

</div>

BFC清理浮動(dòng)局限性

使用BFC使用float的時(shí)候會(huì)使父容器長(zhǎng)度縮短耙考,而且還有個(gè)重要缺陷——父容器float解決了其塌陷問題倦始,那么父容器的父容器怎么辦山卦?overflow屬性會(huì)影響滾動(dòng)條和絕對(duì)定位的元素;position會(huì)改變?cè)氐亩ㄎ环绞矫锻耄@是我們不希望的铸本,display這幾種方式依然沒有解決低版本IE問題箱玷。

7 . 在什么場(chǎng)景下會(huì)出現(xiàn)外邊距合并?如何合并锡足?如何不讓相鄰元素外邊距合并?給個(gè)父子外邊距合并的范例#####

定義:外邊距合并指的是呀舔,當(dāng)兩個(gè)垂直外邊距相遇時(shí)媚赖,它們將形成一個(gè)外邊距珠插。

合并后的外邊距的高度等于兩個(gè)發(fā)生合并的外邊距的高度中的較大者。

產(chǎn)生條件:外邊距和并一般發(fā)生在父元素與子元素為同種BFC磨隘,且父元素沒有border顾患,

當(dāng)一個(gè)元素出現(xiàn)在另一個(gè)元素上面時(shí)江解,第一個(gè)元素的下外邊距與第二個(gè)元素的上外邊距會(huì)發(fā)生合并。請(qǐng)看下圖:


圖片發(fā)自簡(jiǎn)書App


當(dāng)一個(gè)元素包含在另一個(gè)元素中時(shí)(假設(shè)沒有內(nèi)邊距或邊框把外邊距分隔開)鳖枕,它們的上和/或下外邊距也會(huì)發(fā)生合并。請(qǐng)看下圖:


圖片發(fā)自簡(jiǎn)書App

阻止元素出現(xiàn)外邊距合并的方式

場(chǎng)景 方法

父子元素 給父元素設(shè)置一個(gè)padding值或者加上邊框逢艘,或者將父元素形成BFC蝠检。

相鄰元素 ① 給相鄰元素設(shè)置float或inline-block屬性。②給相鄰元素分別包裹一層父元素则奥,將這個(gè)父元素形成BFC。

只有普通文檔流中塊框的垂直外邊距才會(huì)發(fā)生外邊距合并。行內(nèi)框罚舱、浮動(dòng)框或絕對(duì)定位之間的外邊距不會(huì)合并绎谦。

代碼##

實(shí)現(xiàn)如下alert效果:http://js.jirengu.com/todufujiwu/1/edit?html,css,output

實(shí)現(xiàn)如下表單效果:http://js.jirengu.com/labacusedi/1/edit?html,css,output

實(shí)現(xiàn)如下模態(tài)框效果:http://js.jirengu.com/sobizoqowa/1/edit?html,css,output

實(shí)現(xiàn)如下導(dǎo)航欄效果:http://js.jirengu.com/keyudilagi/1/edit?html,css,output對(duì)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末包个,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碧囊,更是在濱河造成了極大的恐慌纤怒,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件熄驼,死亡現(xiàn)場(chǎng)離奇詭異瓜贾,居然都是意外死亡携悯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門实束,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人咸灿,你說我怎么就攤上這事〉狂” “怎么了审胸?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵砂沛,是天一觀的道長(zhǎng)碍庵。 經(jīng)常有香客問我,道長(zhǎng)静浴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任双絮,我火速辦了婚禮得问,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抚岗。我一直安慰自己宣蔚,他們只是感情好认境,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布叉信。 她就那樣靜靜地躺著,像睡著了一般硅急。 火紅的嫁衣襯著肌膚如雪营袜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天凤壁,我揣著相機(jī)與錄音拧抖,去河邊找鬼。 笑死唧席,一個(gè)胖子當(dāng)著我的面吹牛袱吆,可吹牛的內(nèi)容都是我干的距淫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼喻杈!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起缴啡,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤业栅,失蹤者是張志新(化名)和其女友劉穎谬晕,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帮孔,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡文兢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年姆坚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烹俗。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幢妄,死狀恐怖蕉鸳,靈堂內(nèi)的尸體忽然破棺而出忍法,到底是詐尸還是另有隱情,我是刑警寧澤勉失,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站原探,受9級(jí)特大地震影響乱凿,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜咽弦,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一徒蟆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧型型,春花似錦段审、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嫂用,卻和暖如春型凳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甘畅。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留喉童,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓咽白,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親授段。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侵贵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

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

  • 主要內(nèi)容: 浮動(dòng)的介紹、清除浮動(dòng)牺汤、各種定位、BFC以及外邊距合并的介紹追迟。 浮動(dòng) 什么是浮動(dòng)元素 浮動(dòng)元素是floa...
    苦瓜_6閱讀 537評(píng)論 0 0
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,728評(píng)論 1 92
  • 一厢绝、浮動(dòng)元素有什么特征?對(duì)父容器靶病、其他浮動(dòng)元素、普通元素苹威、文字分別有什么影響? 特征:1掷酗、浮動(dòng)模型是一種可視化格式...
    青鳴閱讀 955評(píng)論 0 0
  • 問答## 1 . 浮動(dòng)的特征,影響##### 浮動(dòng)模型也是一種可視化格式模型,浮動(dòng)的框可以左右移動(dòng)(根據(jù)float...
    mhy_web閱讀 367評(píng)論 0 0
  • 浮動(dòng)元素的特征 浮動(dòng)元素的框可以左右移動(dòng)(根據(jù)float屬性的值而定)泳挥,直到它的外邊框碰到包含框或者另一個(gè)浮動(dòng)元素...
    傾國(guó)傾城的小餅干閱讀 427評(píng)論 0 0