CSS3布局模型

2022-09-13 21:30:30 字數 3153 閱讀 3237

布局模型與盒模型一樣都是 css3 最基本、 最核心的概念。 但布局模型是建立在盒模型基礎之上,又不同於我們常說的 css3 布局樣式或 css3 布局模板。如果說布局模型是本,那麼 css3 布局模板就是末了,是外在的表現形式。 

css3包含3種基本的布局模型,用英文概括為:flow、layer 和 float。

在網頁中,元素有三種布局模型:

1、流動模型(flow)

2、浮動模型 (float)

3、層模型(layer)

先來說一說流動模型,流動(flow)是預設的網頁布局模式。也就是說網頁在預設狀態下的 html 網頁元素都是根據流動模型來分布網頁內容的。

流動布局模型具有2個比較典型的特徵:

第一點,塊狀元素都會在所處的包含元素內自上而下按順序垂直延伸分布,因為在預設狀態下,塊狀元素的寬度都為100%。實際上,塊狀元素都會以行的形式佔據位置。如右側**編輯器中三個塊狀元素標籤(div,h1,p)寬度顯示為100%。

第二點,在流動模型下,內聯元素都會在所處的包含元素內從左到右水平分布顯示。(內聯元素可不像塊狀元素這麼霸道獨佔一行)

右側**編輯器中內聯元素標籤a、span、em、strong都是內聯元素。

塊狀元素這麼霸道都是獨佔一行,如果現在我們想讓兩個塊狀元素併排顯示,怎麼辦呢?不要著急,設定元素浮動就可以實現這一願望。

任何元素在預設情況下是不能浮動的,但可以用 css 定義為浮動,如 div、p、table、img 等元素都可以被定義為浮動。如下**可以實現兩個 div 元素一行顯示。

div

效果圖

當然你也可以同時設定兩個元素右浮動也可以實現一行顯示。

div
效果圖

又有小夥伴問了,設定兩個元素一左一右可以實現一行顯示嗎?當然可以:

div

#div1

#div2

效果圖

什麼是層布局模型?層布局模型就像是影象軟體photoshop中非常流行的圖層編輯功能一樣,每個圖層能夠精確定位操作,但在網頁設計領域,由於網頁大小的活動性,層布局沒能受到熱捧。但是在網頁上區域性使用層布局還是有其方便之處的。下面我們來學習一下html中的層布局。

如何讓html元素在網頁中精確定位,就像影象軟體photoshop中的圖層一樣可以對每個圖層能夠精確定位操作。css定義了一組定位(positioning)屬性來支援層布局模型。

層模型有三種形式:

1、絕對定位(position: absolute)

2、相對定位(position: relative)

3、固定定位(position: fixed)

如果想為元素設定層模型中的絕對定位,需要設定position:absolute(表示絕對定位),這條語句的作用將元素從文件流中拖出來,然後使用left、right、top、bottom屬性相對於其最接近的乙個具有定位屬性的父包含塊進行絕對定位。如果不存在這樣的包含塊,則相對於body元素,即相對於瀏覽器視窗。

如下面**可以實現div元素相對於瀏覽器視窗向右移動100px,向下移動50px。

div

效果如下:

如果想為元素設定層模型中的相對定位,需要設定position:relative(表示相對定位),它通過left、right、top、bottom屬性確定元素在正常文件流中的偏移位置。相對定位完成的過程是首先按static(float)方式生成乙個元素(並且元素像層一樣浮動了起來),然後相對於以前的位置移動,移動的方向和幅度由left、right、top、bottom屬性確定,偏移前的位置保留不動。

如下**實現相對於以前位置向下移動50px,向右移動100px;

#div1

效果圖:

什麼叫做「偏移前的位置保留不動」呢?

偏移前的位置還保留不動,覆蓋不了前面的div沒有偏移前的位置

效果圖:

從效果圖中可以明顯的看出,雖然div元素相對於以前的位置產生了偏移,但是div元素以前的位置還是保留著,所以後面的span元素是顯示在了div元素以前位置的後面。

fixed:表示固定定位,與absolute定位型別類似,但它的相對移動的座標是檢視(螢幕內的網頁視窗)本身。由於檢視本身是固定的,它不會隨瀏覽器視窗的滾動條滾動而變化,除非你在螢幕中移動瀏覽器視窗的螢幕位置,或改變瀏覽器視窗的顯示大小,因此固定定位的元素會始終位於瀏覽器視窗內檢視的某個位置,不會受文件流動影響,這與background-attachment:fixed;屬性功能相同。以下**可以實現相對於瀏覽器檢視向右移動100px,向下移動50px。並且拖動滾動條時位置固定不變。

小夥伴們學習了12-6小節的絕對定位的方法:使用position:absolute可以實現被設定元素相對於瀏覽器(body)設定定位以後,大家有沒有想過可不可以相對於其它元素進行定位呢?答案是肯定的,當然可以。使用position:relative來幫忙,但是必須遵守下面規範:

1、參照定位的元素必須是相對定位元素的前輩元素:

相對參照元素進行定位

從上面**可以看出box1是box2的父元素(父元素當然也是前輩元素了)。

2、參照定位的元素必須加入position:relative;

#box1
3、定位元素加入position:absolute,便可以使用top、bottom、left、right來進行偏移定位了。

#box2
這樣box2就可以相對于父元素box1定位了(這裡注意參照物就可以不是瀏覽器了,而可以自由設定了)。

CSS3 布局模型 (十四)

標籤 空格分隔 前端學習 參考css布局模型 在網頁中,元素有三種布局模型 流動模型 flow 預設的網頁布局模式。其有兩個特徵 浮動模型 float 任何元素在預設情況下是不可浮動的,但是可以用css定義為浮動。層模型 layer 層模型三種形式 相對定位 設定position relative,...

掌握css3布局

在傳統的浮動 定位基礎之上,css3提供了一系列新的布局方式,包括彈性盒模型 多列 查詢等,利用這些布局方式我們可以靈活地應對複雜網頁布局,本文通過屬性詳解 實戰案例的方式向您展示這些新興布局方式的強大之處。1.彈性盒模型 彈性盒布局模型 flexible box layout 是 css3 規範中...

css3 布局 文字

它主要應用在文字的多列布局方面,這種布局在報紙和雜誌上都使用了幾十年了,但要在web頁面上實現這樣的效果還是有相當大的難度,慶幸的是,css3的多列布局可以輕鬆實現 語法 columns 多列布局columns屬性引數主要就兩個屬性引數 列寬和列數。引數 引數說明 主要用來定義多列中每列的寬度 主要...