CSS3全覽 最新布局

2022-06-10 03:24:11 字數 4382 閱讀 7582

目錄

很長時間, 浮動元素是所有 web 布局方案的基礎 ( 很大程度上依賴 clear 屬性 )

浮動

清除浮動

浮動形狀

使用透明影象定義形狀, shape-image-threshold, 指定透明度為多少時允許內容流入.

為形狀新增外邊距, shape-margin 為形狀新增 "外邊距" , 它可能被margin裁剪掉, 因此shape-margin 要小於等於margin

相對元素框的常規位置定義元素的具體位置

基本概念

偏移屬性

寬度和高度

內容溢位和裁剪

元素的可見性

絕對定位

固定定位

相對定位

粘滯定位

彈性盒布局把已完艱鉅的布局任務變得極為簡單

彈性盒基礎

彈性容器

布置彈性元素

彈性容器

調整內容

對齊元素

align-self屬性

對齊方式

彈性元素

適用於彈性元素的屬性

flex屬性

flex-grow屬性

flex-shrink屬性

flex-basis屬性

flex 簡寫屬性

order屬性

布局一直是最為重要的功能, float和clear布局方法不恰當. 彈性布局只適用特定情況, 柵格布局最好

建立柵格容器

基本的柵格術語

放置柵格線

#grid

根據軌道中的內容適配, fit-content(argument), minmax(min-content, max-content)

重複柵格線, grid-template-columns: repeat(3, 2em 1fr 1fr) 2em;

柵格區域, 把柵格畫出來, grid-template-areas, 字元任意

在柵格中附加元素

行和列的簡寫屬性, grid-row, grid-column, 適用於柵格元素和絕對定位的元素, grid-row: r3 / 7; grid-column: col-b / span 2;

隱式柵格

錯誤處理

使用區域, grid-area, 直接引用柵格區域grid-area: header, 柵格線順序, 上左下右,grid-area: 1 / 1 / 2 / 2;只有三個值, 那麼缺少的 grid-column-end 假如是名字, 那麼就和 grid-column-start 的值相同, 如果開始線的值是乙個數字, 那麼結束線的值被設為auto. 如果只有兩個值或乙個值也是這樣處理, 名字和數值是不同處理方案

柵格元素重疊, 重疊時會分層

柵格流

自動增加柵格線

grid簡寫屬性

釋放柵格空間

柵格的對齊方式

縱向對齊和橫向對齊全部元素

分層和排序

通過 css 排布**的方式

**格式化

設定顯示方式的值

匿名**物件

如果 table-cell 元素的父元素不是 table -row, 在 table-cell 和其父元素之間插入乙個匿名 table-row 物件. 插入的物件將包含 table-cell 元素的全部後續同輩元素. 父元素為 table-row-group 時上述規則也成立

如果 table-row 元素的父元素不是 table, inline-table 或 table-row-group, 在 table-row 元素和其父元素之間插入乙個匿名 table 元素. 插入的物件將包含 table-row 元素的全部後續同輩元素.

如果 table-column 元素的父元素不是 table, inline-table 或 table-column-group, 在 table-column 元素和其父元素之間插入乙個匿名 table 元素.

如果 table-row-group, table-header-group, table-footer-group, table-column-group 或 table-caption 元素的父元素不是 table, 在這些元素和其父元素之間插入乙個匿名 table 物件

如果 table 或 inline-table 元素的子元素不是 table-row-group, table-header-group, table-footer-group, table-row 或 table-caption, 在 table 元素和其子元素之間插入乙個匿名 table-row 物件. 插入的匿名物件包括 table-row-group, table-header-group, table-footer-group, table-row 或 table-caption 之外的子元素的全部後續同輩元素.

如果 table-row-group, table-header-group 或 table-footer-group 的子元素不是 table-row, 在他們和其子元素之間插入乙個匿名 table-row 物件, 插入的匿名物件包含子元素的全部後續同輩元素 ( table-row 物件自身除外 )

如果 table-row 元素的子元素不是 table-cell, 在元素和其子元素之間插入乙個匿名 table-cell 物件. 插入的匿名物件包含子元素的全部後續同輩元素 (table-cell 元素自身除外)

**中的層

標題, caption-side, 取值 top, bottom

單元格的邊框

摺疊單元格的邊框

**的尺寸

計算一列中每個單元格的最小寬度(換行)和最大寬度(不換行)

計算各列的最小寬度和最大寬度

如果單元格橫跨多列, 那麼所跨的那幾列的最小寬度之和必須等於單元格的最小寬度. 同樣, 列的最大寬度之和也要等於橫跨多列的單元格的最大寬度.

計算**的寬度

如果**的寬度值不是 auto, 比較**寬度的計算值與每一列的寬度之和加上邊框和單元格間距 (使用百分數設定的寬度可能就在此時計算). 兩者之中較大的那個就是**的最終寬度. 如果**寬度的計算值比列寬度, 邊框和間距之和大, 差值除以列數後得到的值將增加到各列上.

如果**寬度的計算值是 auto, **的最終寬度等於列寬度, 邊框和間距之和, 這就意味著, **的寬度正好能放得下內容, 這與傳統的 html **是一樣的. 寬度為百分數的列將以哪個百分數為限, 但使用者**不一樣滿足這個限制.

高度, 最簡單的情況, 通過 height 屬性顯式設定**的高度. 此時, **的高度由 height 屬性的值定義. height 更像是 min-height. 如果**的 height 屬性的值為 auto, 那麼**的高度等於**中每一行的高度之和加上邊框和單元格的間距. 最好不要為**設定高度

對齊方式, 橫向對齊, 使用 text-align 屬性, 縱向對齊, vertical-align 屬性設定, 三個值, top, bottom, middle, baseline, 每種對齊效果都是通過自動增加單元格的內邊距實現的, baseline 由第一行文字的基線定義. vertical-align 的其他值, sub, super, text-top 和 text-bottom, 應用到單元格上被忽略, 視為baseline, 有時被視為 top

掌握css3布局

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

css3 布局 文字

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

CSS3 彈性布局

掌握傳統布局與css3新增彈性布局方式的實現和應用 彈性布局 彈性伸縮布局 事實上它是一種新型別的盒子模型,也有書上稱作彈性伸縮盒布局。比較新的布局方式 旨在提供乙個更加有效的方式來布置,對齊和分布在容器之間的各項內容,即使它們的大小是未知或者動態變化的。彈性布局的主要思想是讓容器有能力來改變專案的...