家好,我是三木。
這篇文章,替大家匯總了css的布局方式,在每個布局的結尾附上了我認為比較好的文章鏈接,不僅僅可以當作學習資料,也可以當作方法的查詢手冊,以后開發的時候忘記了某個屬性就來查查。
看完推薦的文章保準解決你 99% 的css布局問題
每篇文章不僅僅包含介紹,還有代碼案例,以及如w3c網站的在線代碼編輯,可以自己修改屬性嘗試。
使用方法——display: block/inline/inline-block
根據CSS規范的規定,每一個網頁元素都有一個display屬性,用于確定該元素的類型,每一個元素都有默認的display屬性值,比如div元素,它的默認display屬性值為“block”,成為“塊級”元素(block-level);而span元素的默認display屬性值為“inline”,稱為“行內”元素。
w3c:https://www.w3schools.com/cssref/playdemo.asp?filename=playcss_display
w3c:https://www.w3school.com.cn/css/css_inline-block.asp
用法:https://zhuanlan.zhihu.com/p/65353887
使用方法:float:left/right
指定一個元素應沿其容器的左側或右側放置,允許文本和內聯元素環繞它。
float屬性用于定位和格式化內容,例如讓圖像向左浮動到容器中的文本。
float的值有:
w3c:https://www.w3schools.com/css/css_float.asp
MDN:https://developer.mozilla.org/zh-CN/docs/Web/CSS/float
CSS深入理解之float浮動:https://segmentfault.com/a/1190000014554601
使用方法——display:flex/inline-flex
Flexible Box 模型,通常被稱為 flexbox,是一種一維的布局模型。它給 flexbox 的子元素之間提供了強大的空間分布和對齊能力。
容器默認存在兩根軸:水平的主軸(main axis)和垂直的交叉軸(cross axis)。主軸的開始位置(與邊框的交叉點)叫做main start,結束位置叫做main end;交叉軸的開始位置叫做cross start,結束位置叫做cross end。
項目默認沿主軸排列。單個項目占據的主軸空間叫做main size,占據的交叉軸空間叫做cross size。
容器有以下屬性:
w3c:https://www.w3schools.com/css/css3_flexbox_container.asp
Flex 布局教程:語法篇:https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
深度解析 CSS Flexbox 布局:https://juejin.cn/post/6844904116141948936
48張小圖帶你領略flex布局之美:https://juejin.cn/post/6866914148387651592
使用方法——position:absolute/relative...
給元素設置postion屬性后,就可以定義該元素的top,bottom,left,right四個屬性。當然postion的值不同,對應的top,bottom,left,right這四個屬性的值代表的含義也不相同
position屬性用來指定一個元素在網頁上的位置,一共有5種定位方式:
w3c: https://www.w3schools.com/css/css_positioning.asp
MDN:https://developer.mozilla.org/zh-CN/docs/Web/CSS/position
CSS 定位詳解:https://www.ruanyifeng.com/blog/2019/11/css-position.html
使用方法——display:table/table-row/table-cell....
有兩種方式使用表格布局 -HTML Table(<table>標簽)和CSS Table(display:table 等相關屬性)。
HTML Table是指使用原生的<table>標簽,而CSS Table是指用CSS屬性模仿HTML 表格的模型。
table布局的display總共包含如下值
display:table的幾個用法:https://blog.51cto.com/u_4048786/3205160
css table布局大法:https://segmentfault.com/a/1190000007007885
display:table的用法:https://www.jianshu.com/p/037a706ba9e9
使用方法 ——display:grid
網格布局將網頁劃分成一個個網格,可以任意組合不同的網格,做出各種各樣的布局。
w3c:https://www.w3schools.com/css/css_grid.asp
CSS Grid 網格布局教程:https://www.ruanyifeng.com/blog/2019/03/grid-layout-tutorial.html
Grid 布局:https://juejin.cn/post/6854573220306255880
A Complete Guide to Grid:https://css-tricks.com/snippets/css/complete-guide-grid/
使用方法——column-count
column-count: length | auto
column-width:interger | auto
淺談CSS3多列布局:https://juejin.cn/post/6844903450623524872
CSS columns分欄布局教程:https://www.zhangxinxu.com/wordpress/2019/01/css-css3-columns-layout/
TML中的表格是由<table>標簽進行定義的,表格在HTML中的表現形式與使用方法與word中的表格非常類似。多數情況使用Dreamweaver的可視化視圖只做表格更為簡單、方便。本文主要講述如何使用代碼來編寫表格,讓大家掌握表格的代碼書寫格式與其對應的屬性。
表格的標簽組成
HTML中的表格是由<table>為主體標簽,瀏覽器會將該標簽解釋為一個表格。表格中的行使用<tr>標簽進行定義。<tr>標簽為<table>標簽的子類,設置若干個<tr>標簽可以將表格分割為若干個行。<td>標簽用于定義表格的列,<td>標簽為又是<tr>標簽的子類,因此每個行都需要設置相應數量的<td>標簽來分割列,形成一個完整的表格。
表格的標簽組合關系為:
<table>
<tr>
<td>我是單元格1</td>
<td>我是單元格2</td>
</tr>
</table>
表格中可以插入文本、圖片、列表、段落、表單、水平線等任何html標簽,甚至可以用來做頁面布局。但是table布局存在代碼冗余過長、不符合HTML規范、搜索引擎不友好等問題。因此建議大家盡量不要使用table進行頁面布局,除非頁面中確實需要一張表格。
剩下的<th>、<thead>、<tbody> 和 <tfoot>很少被用到,這是由于瀏覽器對它們的支持不太好。
表格和邊框屬性
表格自身可以定義border屬性來決定表格邊框的寬度,該屬性的值默認是以數字單位進行顯示,例如border=”1″該值的單位為px。注意,不要在border的數值后面加上任何單位,否該值無法正確識別。
表格的表頭
在<table>中可以通過<th>標簽設置表頭,表頭的<th>標簽與<tr>標簽屬于平級,并且表頭一般出現在<tr>標簽的前面。對于一個表格來說,表頭并不是必須的,可以根據需要插入表頭。<th>標簽內的文字會被自動加粗。
單元格的合并
單元格的合并分為垂直合并與水平合并,在合并時需要確定其他行與列中是否有對應數量的單元格。
水平合并單元格使用colspan屬性,其值是用數字的形式確定需要合并的單元格數量,例如colspan=”2″即代表向右合并兩個單元格。
垂直合并單元格使用rowspan屬性,與水平合并的屬性相同,同樣也是以數字形式確定需要合并的單元格數量,例如rowspan=”2″代表向下合并兩個單元格。
實例演示代碼:
<table border=“1”>
<tr>
<th>姓名</th>
<th colspan=“2”>電話</th>
</tr>
<tr>
<td>Bill Gates</td>
<td>555 77 854</td>
<td>555 77 855</td>
</tr>
</table><h4>橫跨兩行的單元格:</h4>
<table border=“1”>
<tr>
<th>姓名</th>
<td>Bill Gates</td>
</tr>
<tr>
<th rowspan=“2”>電話</th>
<td>555 77 854</td>
</tr>
<tr>
<td>555 77 855</td>
</tr>
</table>
單元格邊距
表格具有與padding樣式類似的內邊距功能。通過在<table>標簽內定義cellpadding屬性,來為其標簽下的所有<td>元素設置內邊距。cellpadding屬性的參數是值是以數字的形式來確定邊距的大小,例如cellpadding=”10″ 則表示table中的所有<tr>標簽內邊距為10px
單元格間距
單元格的間距是設置<tr>標簽的外邊距,這個也與css樣式中的margin類似,通過在<table>標簽內定義cellspacing屬性,來為其標簽下的所有td元素設置外邊距。該屬性也是以數字的形式來確定外邊距的大小,例如cellspacing=”10″則表示這個table中的所有<tr>標簽的外邊距為10px
為表格設置背景
表格可以通過background屬性為表格或單元格設置任意圖片作為背景,其使用方法非常像css中的background。為background設置對應的圖片路徑,即可使單元格顯示相應的圖片。例如background=”table_bg.gif”
表格內容的對齊排列
表格的對齊分為水平對齊和垂直對齊。它們分別是align屬性與valign屬性,將這兩個屬性插入到對應的<td>標簽中即可完成單元格內文本或圖像的對齊。
水平對齊align分別有三個值:left左對齊、center水平居中、right右對齊
垂直對齊valign也有三個值:top頂端對齊、middle垂直居中、bottom底部對齊、baseline為基線對齊。
其中基線對齊可能無法從字面上理解,其實基線對齊也就是文本出現在表格的中上部而不是正中央。如果文字不大的話,效果和middle差不多,比middle稍微靠上一點。
私信發送【前端】有驚喜!
<table>標簽:
<table>指的是表格,用表格來搭建界面布局,即用表格的嵌套,來搭建界面布局。
<table>布局優勢:
table優勢:開發時間短(使用DW開發速度快);純table各瀏覽器不會有兼容問題;內容可自適應;在搜索引擎排名能靠前;
但是 table如果布局變更,需要重新開發;如果table里有div ul 等,可能會出現瀏覽器兼容問題;加載速度慢;table嵌套的太多,運維是非常困難的。
<div>塊級(block-level)標簽:
DIV是層疊樣式表中的定位技術,全稱DIVision,即為劃分。有時可以稱其為圖層。
<div>布局優勢:
一.精簡代碼,減少重構難度。
網站使用DIV+CSS布局使代碼很是精簡,css文件可以在網站的任意一個頁面進行調用,而若是使用table表格修改部分頁面卻是顯得很麻煩。要是一個門戶網站的話,需手動改很多頁面,而且看著那些表格也會感覺很亂也很浪費時間,但是使用css+div布局只需修改css文件中的一個代碼即可。
二.網頁訪問速度
使用了DIV+CSS布局的網頁與Table布局比較,精簡了許多頁面代碼,那么其瀏覽訪問速度自然得以提升,也從而提升了網站的用戶體驗度。
三.SEO優化
采用div-css布局的網站對于搜索引擎很是友好,因此其避免了Table嵌套層次過多而無法被搜索引擎抓取的問題,而且簡潔、結構化的代碼更加有利于突出重點和適合搜索引擎抓取。
四.瀏覽器兼容性
若使用table布局網頁,在使用不同瀏覽器情況下會發生錯位,而div+css則不會,無論什么瀏覽器,網頁都不會出現變形情況。
1.流動式布局:是HTML網頁默認的布局方式
特點:
1.塊級元素都會在所處的包含元素內自上而下按順序處置延伸分布,且默認狀態下,塊級元素占整個文檔流,默認寬度為100%。
2.內聯元素都會在所處的包含元素內從左到右水平分布顯示,不占整個文檔流。
常見的塊級(block)元素有:<h1-h5> 、<table>、 <ul>、<li> 、<p> 、<form>、 ol
常見的內內聯(行內)元素有:<a>、<span>、<img>、<input>、<select>、<textarea>
2.浮動布局(float)
特點:
浮動布局依靠【 浮動屬性 float:left/right/... 】來使標簽脫離文檔流,達到兩個塊級元素并排顯示的效果。
float:left ; 浮動脫離當前文檔流浮動。
同時可以依靠【展示屬性display:inline/block/inline-block】來進行行內元素和塊級元素的效果切換。從而達到靈活運用塊級元素和行內元素布局的效果。
3.層模型布局又叫定位布局
特點:
當我們應擁div布局是,在第一層塊界面上來做第二層塊界面的開發時,就要用到我們所說的定位布局。
通過運用【定位屬性position:absolute/relative/fixed】 來進行第二層界面的定位布局。
網頁是靜態的,網頁上的定位
position:absolute ;絕對定位脫離文檔流,不受浮動影響,就是相對于窗體(body)邊界的margin定位。
position:relative; 相對定位不脫離文檔流,相對于父級標簽元素的位置定位。
position:fixed;固定位置,不會受任何因素影響。
滾動條移動前
滾動條移動后
優先層顯示方法:【屬性:z-index:0/1/2...】
特點: 數值越大,越優先顯示。
注意:只有元素使用了position屬性的,才具有z-index屬性。
本文部分內容來自網絡,如有侵權,請聯系修改。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。