Float && Position-Assignment

1.文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流?

文檔流(normal flow),也稱為標準文檔流、常規流、普通流等,是元素在html文檔的定位方式之一,標準流的元素的位置由該元素在html中的位置所決定。主要表現形式是元素由上到下、由左到右依次排版布局。
總的來說,css的定位機制可分為:文檔流、浮動和定位

  • 文檔流:包括塊級元素的塊級格式、行內元素的行內格式

  • 浮動:浮動將元素從文檔流中脫離出來,向左或向右浮動直至碰到另一元素的邊框或邊界才停止浮動;

  • 定位

    • 絕對定位:以父元素的左上角的頂點為參考點,進行定位,元素將脫離文檔流
    • 相對定位:元素相對于自身所處的原來位置進行定位,元素不脫離文檔流(相對定位可以說是特殊的文檔流)

綜上所述,通過浮動絕對定位機制都可使元素脫離文檔流。

2.有幾種定位方式,分別是如何實現定位的,使用場景如何?

css的定位機制包括:文檔流、浮動和定位

  • 文檔流
    文檔流是默認的定位方式,實現方式是直接在標簽內寫入內容,html會自動排版布局。
    具體演示效果如下:
  • 浮動
    css浮動屬性提供左浮或右浮兩種屬性值,元素的浮動規則是元素的邊框浮動至包含框或另一個浮動框(必須是浮動著的元素)才停止,并且浮動元素將脫離文檔流。
    浮動的基本原理如下:

出現上述的情況是:
當某個div遇到浮動元素的時候,會產生同一個div下內容和包裹它的盒子的分離,而盒子的內容則會環繞在浮動元素周圍,解決方法在后面會提及。


此時,3個方塊都是浮動元素,方塊2左浮遇到方塊1這浮動元素停止左浮,方塊3同理。


同樣是3個方塊左浮,但是如果一行的寬度不足以讓某個浮動元素容納,則它會自動左浮至下一行。


如果,方塊1過于高的話,那么它會自動擋住方塊3的左浮線路。
浮動本來是為實現文字環繞而誕生的,但是后來開發者常將它用于頁面的布局

  • 定位(position)
    定位可分為static、absolute、relative和fixed,下面主要講解absolute、relative和fixed。
    • absolute是絕對定位,參考點是以已經定位的父元素的左上頂點

上圖顯示,方塊2相對于已經定位的父元素實現絕對定位。

  • relative是相對定位,參考點是以元素所在的原來位置的左上頂點


上圖顯示,方塊2相對于自己的原來位置發生top:10px; left:10px;的移動

  • fixed,參考點是瀏覽器的頁面視窗的左上頂點


以上三個三種定位方式,fixed常用來放置開發者希望用戶一直在瀏覽器能看到的固定區塊,relative和absolute常用來精心精確布局

3.absolute, relative, fixed偏移的參考點分別是什么

  • absolute是絕對定位,參考點是以已經定位的父元素的左上頂點
  • relative是相對定位,參考點是以元素所在的原來位置的左上頂點
  • fixed,參考點是瀏覽器的頁面視窗的左上頂點

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

z-index是設置元素的堆疊順序,擁有高堆疊順序的元素總是會處于堆疊順序較低的元素的前面。
注意,這里所指的是堆疊順序而不是z-index的值的大小,并且z-index 僅能在定位元素上奏效

  • 堆疊順序
    • 不對元素設position時,文檔流后面的元素覆蓋前面的元素;
    • 將元素設置的position設置為relative ,absolute 或者 fixed,元素會覆蓋沒有設置 position 屬性或者屬性值為 static 的元素
  • 當存在3個元素
<div id="a">
 <div id="a-1" style="position:relative;">A-1</div></div>
<div id="b">B</div>

A、B均沒有設置position,但A的子元素A-1設置了,那么B會覆蓋A,A-1會覆蓋B

  • 在不存在父子關系的4個元素中,z-index最大的覆蓋其余3個,z-index為0的和沒設置position的堆疊關系遵循先后順序,z-index為負數的位于z-index:0的后面
  • 存在父子關系情況下,子元素會繼承父元素的堆疊關系


  • 若所有元素都定義了 position:relative, 并且A 元素的 z-index 和 B 元素一樣大, 但因為順序規則, B 元素覆蓋在 A 元素前面. 就算 A 的子元素z-index 值比 B 的子元素大, B 的子元素還是會覆蓋在 A 的子元素前面。

5.position:relative和負margin都可以使元素位置發生偏移?二者有什么區別

6.如何讓一個固定寬高的元素在頁面上垂直水平居中?

 .box{
  background:lightgreen;
  width:100px;
  height:100px;
  position:absolute;
  top:50%;
  left:50%;
  margin-left:-50px;
  margin-top:-50px;
}
/* 左外邊距和上外邊距分別設置成寬高的一半 */

具體效果如下:


7.浮動元素有什么特征?對其他浮動元素、普通元素、文字分別有什么影響?

浮動元素的特征:

  • 浮動元素將脫離文檔流,不占據文檔的空間
  • 添加浮動屬性且不設置寬高,內容會將撐開盒子,類似inline-block


  • 設置寬高和float后,相當于懸浮的inline-block

    浮動元素對其他元素的影響:
  • 對浮動元素的影響,詳見第2題浮動篇;
  • 對普通元素的影響,普通元素會占據浮動元素原來所在的文檔位置;
  • 對文字而言,除了自身的文字外,其他元素中的文字一律環繞浮動元素周圍;

8.清除浮動指什么? 如何清除浮動?

清除浮動是指對浮動元素所產生的影響其他元素的浮動效果予以清除,以期達到開發者期望的布局。
針對浮動產生的問題,清除浮動可以分為兩種:

  • 浮動元素使得同級的非浮動元素緊隨其后

可以在浮動元素中添加clear:left|right|both達到清除浮動,即不允許浮動元素的左側、右側或兩側出現其他浮動元素

  • 如果子元素是包裹在自適應寬高的父元素中,那么一旦該子元素浮動,父元素的高度會“塌陷”,因為父元素的高度就是子元素的高度,浮動使得子元素脫離文檔流,讓父元素認為子元素“不存在”了

方法:在父元素中添加clearfix樣式,設計思想就是在父元素前或后加入一個內容為空的盒子,并設置這個盒子具有clear屬性,從而使得前面的浮動元素“無處可逃”
具體代碼如下:

.clearfix{
  overflow:hidden;
  *zoom:1; /* for ie 6*/
}

或者

.clearfix:before, .clearfix:after
{ content: ""; display: table;}
.clearfix:after{ clear: both;}
.clearfix
{ *zoom: 1; /* for ie 6,7*/}

demo


9.代碼

代碼地址:github
寫出如下兩欄布局, 其中中間區塊寬度900px, 居中,左側邊欄寬度200px, 右側邊欄寬度700px

  • ps: 圖片左浮動,導航欄整體右浮動,導航欄里面的li元素左浮動。
  • ps: aside左浮動,main左浮動
  • 凡是有浮動的地方,其直接父元素必須清除浮動

不使用背景圖片實現如下效果


參考資料

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,345評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,494評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,283評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,953評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,714評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,186評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,255評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,410評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,940評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,776評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,976評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,518評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,210評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,642評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,878評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,654評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,958評論 2 373

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,776評論 1 92
  • 浮動定位 BFC 邊距合并 浮動元素 div的順序是HTML代碼中div的順序決定的。 浮動可以理解為讓某個div...
    nianxiaoge閱讀 727評論 0 0
  • 一、文檔流的概念指什么?有哪種方式可以讓元素脫離文檔流? 1、文檔流指的是元素在排列布局中所占用的位置,具體的說是...
    鴻鵠飛天閱讀 795評論 0 0
  • 學習CSS的最佳網站沒有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_閱讀 1,073評論 0 1
  • “我們不設計頁面,我們設計構成元素的系統。”——Stephen Hay 隨著網頁設計的持續發展,我們認識到開發設計...
    王小其閱讀 8,730評論 6 26