日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端: 42 种前端常用布局方案,值得收藏!

發(fā)布時間:2023/12/10 HTML 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端: 42 种前端常用布局方案,值得收藏! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

對 CSS 布局掌握程度決定你在Web開發(fā)中的開發(fā)頁面速度。隨著Web技術(shù)的不斷革新,實(shí)現(xiàn)各種布局的方式已經(jīng)多得數(shù)不勝數(shù)了。

本篇文章總結(jié)了四十二種CSS的常見布局,這四十二種布局可以細(xì)分為如下幾類:

  • 水平居中

  • 垂直居中

  • 水平垂直居中

  • 兩列布局

  • 三列布局

  • 等分布局

  • Sticky Footer布局

  • 全屏布局

這些內(nèi)容也正是本篇文章的目錄。

水平居中

實(shí)現(xiàn)水平布局比較簡單,方法也比較多,這里總結(jié)了7種常用的布局方法,其公共的CSS代碼如下所示:

.parent?{?background:?#ff8787;?} .child?{?height:?300px;?width:?300px;?background:?#e599f7;?}

其?HTML?結(jié)構(gòu)也是固定的,就是一個父級,其寬度繼承了?<body>?的寬度,還有一個子級,這里是固定的300px*300px,代碼如下:

<div?class="parent"><div?class="child"></div> </div>

最終的實(shí)現(xiàn)效果如下:

上圖中玫瑰色的塊是父級,隨頁面寬度增加的;淡紫色是子級,相對于父級居中的。

1. 使用text-align屬性

若元素為行內(nèi)塊級元素,也就是 display: inline-block 的元素,可以通過為其父元素設(shè)置t ext-align: center 實(shí)現(xiàn)水平居中。實(shí)現(xiàn)的CSS代碼如下:

.parent?{/*?對于子級為?display:?inline-block;?可以通過?text-align:?center;?實(shí)現(xiàn)水平居中?*/text-align:?center; }.child?{display:?inline-block; }

2. 定寬塊級元素水平居中(方法一)

對于定寬的的塊級元素實(shí)現(xiàn)水平居中,最簡單的一種方式就是?margin: 0 auto;,但是值得注意的是一定需要設(shè)置寬度。實(shí)現(xiàn)?CSS?代碼如下:

.child?{/*?對于定寬的子元素,直接?margin:0?auto;?即可實(shí)現(xiàn)水平居中?*/margin:?0?auto; }

3. 定寬塊級元素水平居中(方法二)

對于開啟定位的元素,可以通過?left?屬性 和?margin?實(shí)現(xiàn)。實(shí)現(xiàn)CSS代碼如下:

.child?{/*?開啟定位?*/position:?relative;left:?50%;/*?margin-left?為?負(fù)的寬度的一半?*/margin-left:?-150px; }

4. 定寬塊級元素水平居中(方法三)

當(dāng)元素開啟決定定位或者固定定位時,?left?屬性和?right?屬性一起設(shè)置就會拉伸元素的寬度,在配合?width?屬性與?margin?屬性就可以實(shí)現(xiàn)水平居中。

實(shí)現(xiàn)?CSS?代碼如下:

.parent?{position:?relative;height:?300px; }.child?{/*?開啟定位?父相子絕?*/position:?absolute;/*?水平拉滿屏幕?*/left:?0;right:?0;width:?300px;/*?拉滿屏幕之后設(shè)置寬度,最后通過?margin?實(shí)現(xiàn)水平居中?*/margin:?auto; }

5. 定寬塊級元素水平居中(方法四)

當(dāng)元素開啟決定定位或者固定定位時,?left?屬性和?transform?屬性即可實(shí)現(xiàn)水平居中。

實(shí)現(xiàn)CSS代碼如下:

.parent?{position:?relative; }.child?{/*?開啟定位?*/position:?absolute;/*?該方法類似于 left 于?-margin 的用法,但是該方法不需要手動計(jì)算寬度。?*/left:?50%;transform:?translateX(-50%); }

6. Flex方案

通過?Flex?可以有很多方式實(shí)現(xiàn)這個居中布局的效果。

實(shí)現(xiàn)?CSS?代碼如下

.parent?{height:?300px;/*?開啟?Flex?布局?*/display:?flex;/*?通過?justify-content?屬性實(shí)現(xiàn)居中?*/justify-content:?center; }.child?{/*?或者?子元素?margin:?auto*/margin:?auto; }

7. Grid方案

通過Grid實(shí)現(xiàn)居中布局比通過Flex實(shí)現(xiàn)的方式更多一些。

實(shí)現(xiàn)CSS代碼如下:

.parent?{height:?300px;/*?開啟?Grid?布局?*/display:?grid;/*?方法一?*/justify-items:?center;/*?方法二?*/justify-content:?center; }.child?{/*?方法三?子元素?margin:?auto*/margin:?auto; }

以上就是水平居中布局常用的幾種方式。

垂直居中

實(shí)現(xiàn)垂直布局也是比較簡單的,方法也比較多,這里總結(jié)了6種常用的布局方法,其公共的?CSS?代碼如下所示:

.parent?{height:?500px;width:?300px;margin:?0?auto;background-color:?#ff8787; } .child?{width:?300px;height:?300px;background-color:?#91a7ff; }

其?HTML?結(jié)構(gòu)也是固定的,就是一個父級包裹一個子級,這里的子級是固定的300px*300px,代碼如下:

<div?class="parent"><div?class="child"></div> </div>

最終的實(shí)現(xiàn)效果如下:

1. 行內(nèi)塊級元素垂直居中

若元素是行內(nèi)塊級元素, 基本思想是子元素使用display: inline-block, vertical-align: middle;并讓父元素行高等同于高度。

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?為父級容器設(shè)置行高?*/line-height:?500px; }.child?{/*?將子級元素設(shè)置為?inline-block?元素?*/display:?inline-block;/*?通過?vertical-align:?middle;?實(shí)現(xiàn)居中?*/vertical-align:?middle; }

2. 定位方式實(shí)現(xiàn)(方法一)

第一種通過定位的方式實(shí)現(xiàn)就比較簡單,實(shí)際就是通過top: 50%; margin-top: 等于負(fù)的高度的一半就可以實(shí)現(xiàn)垂直居中。

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?為父級容器開啟相對定位?*/position:?relative; }.child?{position:?absolute;top:?50%;/*?margin-top:?等于負(fù)高度的一半?*/margin-top:?-150px; }

3. 定位方式實(shí)現(xiàn)(方法二)

第二種通過定位的方式實(shí)現(xiàn)實(shí)現(xiàn)思路:top?和?bottom?將子元素拉伸至100%,設(shè)置指定的高度,通過margin:auto;即可實(shí)現(xiàn)垂直居中。

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?為父級容器開啟相對定位?*/position:?relative; }.child?{height:?300px;position:?absolute;/*?垂直拉滿?*/top:?0;bottom:?0;/*?margin:?auto?即可實(shí)現(xiàn)?*/margin:?auto; }

4. 定位方式實(shí)現(xiàn)(方法三)

第三種通過定位的方式就比較靈活,適用于多種場合,使用?top?配合?tansform?即可。

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?為父級容器開啟相對定位?*/position:?relative; }.child?{position:?absolute;top:?50%;transform:?translateY(-50%); }

5. Flex方案

通過 Flex 可以有很多方式實(shí)現(xiàn)這個垂直居中布局的效果。

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?開啟?flex?布局?*/display:?flex;/*?方法一?*//*?align-items:?center;?*/ }.child?{/*?方法二?*/margin:?auto; }

通過 Flex 布局實(shí)現(xiàn)不僅僅只有上面兩種,這里只介紹最簡單的方式。

6. Grid方案

通過?Grid?實(shí)現(xiàn)居中布局比通過 Flex 實(shí)現(xiàn)的方式更多一些。

實(shí)現(xiàn)CSS代碼如下:

.parent?{display:?grid;/*?方法一?*//*?align-items:?center;?*//*?方法二?*//*?align-content:?center;?*/ }.child?{/*?方法三?*//*?margin:?auto;?*//*?方法四?*/align-self:?center; }

以上就是垂直居中布局常用的幾種方式。

水平垂直居中

實(shí)現(xiàn)水平垂直布局基本就是將上面幾種方式結(jié)合使用,這里總結(jié)了7種常用的布局方法,其公共的?CSS?代碼如下所示:

body?{margin:?0; } .parent?{height:?500px;width:?500px;background-color:?#eebefa;margin:?0?auto; } .child?{height:?300px;width:?300px;background-color:?#f783ac; }

其?HTML?結(jié)構(gòu)也是固定的,就是一個父級包裹一個子級,這里的子級是固定的300px*300px,代碼如下:

<div?class="parent"><div?class="child"></div> </div>

最終的實(shí)現(xiàn)效果如下:

1. 行內(nèi)塊級水平垂直居中方案

步驟如下:

  • 容器元素行高等于容器高度

  • 通過 text-align: center; 實(shí)現(xiàn)水平居中

  • 將子級元素設(shè)置為水平塊級元素

  • 通過 vertical-align: middle; 實(shí)現(xiàn)垂直居中

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?1.?設(shè)置行高等于容器高度?*/line-height:?500px;/*?通過?text-align:?center;?實(shí)現(xiàn)水平居中?*/text-align:?center; } .child?{/*?將子級元素設(shè)置為水平塊級元素?*/display:?inline-block;/*?通過?vertical-align:?middle;?實(shí)現(xiàn)垂直居中?*/vertical-align:?middle; }

2. 定位實(shí)現(xiàn)水平垂直居中方案(一)

步驟如下:

  • 使子元素相對于容器元素定位

  • 子元素開啟絕對定位

  • 設(shè)置該元素的偏移量,值為50% 減去寬度/高度的一半

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?1.?使子元素相對于本元素定位?*/position:?relative; } .child?{/*?2.?開啟絕對定位?*/position:?absolute;/*?3.?設(shè)置該元素的偏移量,值為?50%減去寬度/高度的一半?*/left:?calc(50%?-?150px);top:?calc(50%?-?150px); }

3. 定位實(shí)現(xiàn)水平垂直居中方案(二)

步驟如下:

  • 使子元素相對于容器元素定位

  • 子元素開啟絕對定位

  • 設(shè)置該元素的偏移量,值為50%

  • 通過外邊距-值的方式將元素移動回去

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?1.?使子元素相對于本元素定位?*/position:?relative; } .child?{/*?2.?開啟絕對定位?*/position:?absolute;/*?3.?設(shè)置該元素的偏移量,值為?50%?*/left:?50%;top:?50%;margin-left:?-150px;margin-top:?-150px; }

4. 定位實(shí)現(xiàn)水平垂直居中方案(三)

步驟如下:

  • 使子元素相對于容器元素定位

  • 子元素開啟絕對定位

  • 將子元素拉滿整個容器

  • 通過margin:auto實(shí)現(xiàn)水平垂直居中

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?1.?使子元素相對于本元素定位?*/position:?relative; } .child?{/*?2.?開啟絕對定位?*/position:?absolute;/*?3.?將子元素拉滿整個容器?*/top:?0;left:?0;right:?0;bottom:?0;/*?4.?通過?margin:auto?實(shí)現(xiàn)水平垂直居中?*/margin:?auto; }

5. 定位實(shí)現(xiàn)水平垂直居中方案(四)

步驟如下:

  • 使子元素相對于容器元素定位

  • 子元素開啟絕對定位

  • 設(shè)置該元素的偏移量,值為50%

  • 通過?translate?反向偏移的方式,實(shí)現(xiàn)居中

實(shí)現(xiàn) CSS 代碼如下:

.parent?{/*?1.?使子元素相對于本元素定位?*/position:?relative; } .child?{/*?2.?開啟絕對定位?*/position:?absolute;/*?3.?設(shè)置該元素的偏移量,值為?50%*/left:?50%;top:?50%;/*?通過translate反向偏移的方式,實(shí)現(xiàn)居中?*/transform:?translate(-50%,?-50%); }

6. Flex方案

步驟如下:

  • 將元素設(shè)置為?Flex?布局

  • 通過 justify-content: center 以及 align-items: center 實(shí)現(xiàn)或者 margin: auto; 實(shí)現(xiàn)。

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?1.?將元素設(shè)置為?Flex?布局?*/display:?flex;/*?2.?通過?justify-content?以及?align-items:?center?實(shí)現(xiàn)?*//*?justify-content:?center;align-items:?center;?*/ } .child?{/*?或者通過?margin?auto?實(shí)現(xiàn)?*/margin:?auto; }

7. Grid方案

Grid?方案的實(shí)現(xiàn)方式相對來說比較簡單,方式也較多。

實(shí)現(xiàn)CSS代碼如下:

.parent?{/*?1.?元素設(shè)置為Grid?元素?*/display:?grid;/*?通過?items?屬性實(shí)現(xiàn)*//*?align-items:?center;?*//*?justify-items:?center;?*//*?items?的縮寫?*//*?place-items:?center;?*//*?或者通過?content?屬性?*//*?align-content:?center;?*//*?justify-content:?center;?*//*?content?的縮寫?*//*?place-content:?center;?*/ } .child?{/*?或者通過?margin?auto?實(shí)現(xiàn)?*//*?margin:?auto;?*//*?或者通過?self?屬性?*//*?align-self:?center;justify-self:?center;?*//*?self?的縮寫?*/place-self:?center; }

實(shí)現(xiàn)水平垂直居中布局的方式大多是通過上面兩種布局的方式相結(jié)合。

兩列布局

所謂的兩列布局就是一列定寬(也有可能由子元素決定寬度),一列自適應(yīng)的布局。最終效果如下所示:

這里用到的?HTML?結(jié)構(gòu)如下:

<!--?解決高度塌陷?--> <div?class="container?clearfix"><div?class="left">定寬</div><div?class="right">自適應(yīng)</div> </div>

公共的?CSS?代碼如下:

body?{margin:?0; } .container?{height:?400px;background-color:?#eebefa; } .left?{height:?400px;width:?200px;background-color:?#f783ac;font-size:?70px;line-height:?400px;text-align:?center; } .right?{height:?400px;background-color:?#c0eb75;font-size:?70px;line-height:?400px; } /*?清除浮動?*/ .clearfix:after?{content:?'';display:?block;height:?0;clear:?both;visibility:?hidden; }

1. float+calc()函數(shù)完成左列定寬右列自適應(yīng)

步驟如下:

  • 左邊列開啟浮動

  • 右邊列開啟浮動

  • 右邊列寬度為父級 100%減去左列的寬度

實(shí)現(xiàn)CSS代碼如下:

.left?{/*?左邊列開啟浮動?*/float:?left; } .right?{/*?右邊列開啟浮動?*/float:?left;/*?寬度減去左列的寬度?*/width:?calc(100%?-?200px); }

2. float+margin-left完成左列定寬右列自適應(yīng)

步驟如下:

  • 左邊列開啟浮動

  • 通過外邊距的方式使該容器的左邊有左邊列容器的寬度的外邊距

實(shí)現(xiàn)CSS代碼如下:

.left?{/*?左邊列開啟浮動?*/float:?left; } .right?{/*?通過外邊距的方式使該容器的左邊有200px?*/margin-left:?200px; }

3. absolute+margin-left完成左列定寬右列自適應(yīng)

步驟如下:

  • 開啟定位脫離文檔流

  • 通過外邊距的方式使該容器的左邊有左邊列容器的寬度的外邊距

實(shí)現(xiàn)CSS代碼如下:

.left?{/*?開啟定位脫離文檔流?*/position:?absolute; } .right?{/*?通過外邊距的方式使該容器的左邊有200px?*/margin-left:?200px; }

值得注意的是 以上幾種方案左邊列必須定寬,才可以實(shí)現(xiàn),下面這幾種方案左邊列可以由子級撐起。

4. float+overflow完成左列定寬右列自適應(yīng)

步驟如下:

  • 左側(cè)元素開始浮動

  • 右側(cè)自適應(yīng)元素設(shè)置overflow會創(chuàng)建一個BFC完成自適應(yīng)

實(shí)現(xiàn)CSS代碼如下:

.left?{/*?1.?左側(cè)元素開始浮動?*/float:?left; } .right?{/*?2.?右側(cè)自適應(yīng)元素設(shè)置?overflow?會創(chuàng)建一個BFC?完成自適應(yīng)?*/overflow:?hidden; }

5. Flex方案

通過Flex布局實(shí)現(xiàn)該功能主要是通過 flex 屬性來實(shí)現(xiàn)示例代碼如下:

.container?{display:?flex; } .right?{flex:?1;/*?flex:?1;?表示?flex-grow:?1;?即該項(xiàng)占所有剩余空間?*/ }

6. Grid方案

通過 Grid 布局實(shí)現(xiàn)該功能主要是通過template屬性實(shí)現(xiàn),具體代碼如下所示:

.container?{display:?grid;/*?將其劃分為兩行,其中一列有本身寬度決定,?一列占剩余寬度*/grid-template-columns:?auto?1fr; }

三列布局

三列布局主要分為兩種:

  • 第一種是前兩列定寬,最后一列自適應(yīng),這一種本質(zhì)上與兩列布局沒有什么區(qū)別,可以參照兩列布局實(shí)現(xiàn)。

  • 第二種是前后兩列定寬,中間自適應(yīng),最終效果圖如下

公共 CSS 如下:

body?{margin:?0; } .container?{height:?400px;background-color:?#eebefa; } .left?{height:?400px;width:?200px;background-color:?#f783ac; } .content?{height:?400px;background-color:?#d9480f; } .right?{height:?400px;width:?200px;background-color:?#c0eb75; } .left, .content, .right?{font-size:?70px;line-height:?400px;text-align:?center; } /*?清除浮動?*/ .clearfix:after?{content:?'';display:?block;height:?0;clear:?both;visibility:?hidden; }

HTML 結(jié)構(gòu)如下:

<!--?解決高度塌陷?--> <div?class="container?clearfix"><div?class="left">左</div><div?class="content">內(nèi)容</div><div?class="right">右</div> </div>

1. 通過float實(shí)現(xiàn)(一)

實(shí)現(xiàn)步驟:

  • 為了完成效果需要調(diào)整HTML結(jié)構(gòu),調(diào)整后如下:

<!--?解決高度塌陷?--> <div?class="container?clearfix"><div?class="left">左</div><div?class="right">右</div><div?class="content">內(nèi)容</div> </div>
  • 左列容器開啟左浮動

  • 右列容器開啟右浮動

  • 自適應(yīng)元素設(shè)置overflow會創(chuàng)建一個BFC完成自適應(yīng)

實(shí)現(xiàn)CSS代碼如下

.left?{/*?1.?左列容器開啟左浮動?*/float:?left; } .content?{/*?自適應(yīng)元素設(shè)置?overflow?會創(chuàng)建一個BFC?完成自適應(yīng)?*/overflow:?hidden; } .right?{/*?2.?右列容器開啟右浮動?*/float:?right; }

2. 通過float實(shí)現(xiàn)(二)

實(shí)現(xiàn)步驟:

  • 為了完成效果需要調(diào)整 HTML 結(jié)構(gòu),調(diào)整后如下:

<!--?解決高度塌陷?--> <div?class="container?clearfix"><div?class="left">左</div><div?class="right">右</div><div?class="content">內(nèi)容</div> </div>
  • 左列容器開啟左浮動

  • 右列容器開啟右浮動

  • 使中間自適應(yīng)的寬度為父級容器減去兩個定寬的列

實(shí)現(xiàn)CSS代碼如下:

.left?{/*?1.?左列容器開啟左浮動?*/float:?left; } .content?{/*?3.?使中間自適應(yīng)的寬度為父級容器減去兩個定寬的列?*/width:?calc(100%-400px); } .right?{/*?2.?右列容器開啟右浮動?*/float:?right; }

3. 通過position實(shí)現(xiàn)

實(shí)現(xiàn)步驟

  • 左右兩列脫離文檔流,并通過偏移的方式到達(dá)自己的區(qū)域

  • 使中間自適應(yīng)的寬度為父級容器減去兩個定寬的列

  • 通過外邊距將容器往內(nèi)縮小

實(shí)現(xiàn)CSS代碼如下:

.left?{/*?1.?左右兩列脫離文檔流,并通過偏移的方式到達(dá)自己的區(qū)域?*/position:?absolute;left:?0;top:?0; } .content?{/*?2.?使中間自適應(yīng)的寬度為父級容器減去兩個定寬的列?*/width:?calc(100%-400px);/*?3.?通過外邊距將容器往內(nèi)縮小?*/margin-right:?200px;margin-left:?200px; } .right?{position:?absolute;right:?0;top:?0; }

4. Flex方案

通過?Flex?布局實(shí)現(xiàn)該功能主要是通過?flex?屬性來實(shí)現(xiàn)。

實(shí)現(xiàn)CSS代碼如下:

.container?{display:?flex; } .right?{flex:?1;/*?flex:?1;?表示?flex-grow:?1;?即該項(xiàng)占所有剩余空間?*/ }

5. Grid方案

通過?Grid?布局實(shí)現(xiàn)該功能主要是通過?template?屬性實(shí)現(xiàn)。

實(shí)現(xiàn)CSS代碼如下:

.container?{display:?grid;/*?將其劃分為兩行,其中一列有本身寬度決定,?一列占剩余寬度*/grid-template-columns:?auto?1fr?auto; }

等分布局

等分布局就是將一個容器平均分成幾等份,這里以 4 等分為例,主要介紹4種方法。

公共CSS部分如下:

body?{margin:?0; } .container?{height:?400px;background-color:?#eebefa; } .item?{height:?100%; } .item1?{background-color:?#eccc68; } .item2?{background-color:?#a6c1fa; } .item3?{background-color:?#fa7d90; } .item4?{background-color:?#b0ff70; } /*?清除浮動?*/ .clearfix:after?{content:?'';display:?block;height:?0;clear:?both;visibility:?hidden; }

公共HTML代碼如下:

<!--?父元素清除浮動?--> <div?class="container?clearfix"><div?class="item?item1"></div><div?class="item?item2"></div><div?class="item?item3"></div><div?class="item?item4"></div> </div>

最終的效果如下圖所示:

1. 浮動+百分比方式

這種方式比較簡單,開啟浮動,使每個元素占25%的寬度。

實(shí)現(xiàn)CSS代碼如下:

.item?{/*?開啟浮動,每個元素占?25%?的寬度?*/width:?25%;float:?left; }

2. 行內(nèi)塊級+百分比方式

這種方式與上面那種方式類似,不過需要注意的是行內(nèi)塊級元素有一些類似于邊距的幾個像素,導(dǎo)致各25%會超出容器。

實(shí)現(xiàn)CSS代碼如下:

.item?{/*?設(shè)置每個元素為行內(nèi)塊級元素,每個元素占?24.5%?的寬度?*/width:?24.5%;/*?因?yàn)樾袃?nèi)塊級元素有一些類似于邊距的幾個像素,導(dǎo)致各占25會超出容器?*/display:?inline-block; }

3. Flex方案

通過 Flex 布局實(shí)現(xiàn)該功能主要是通過?flex?屬性來實(shí)現(xiàn)。

實(shí)現(xiàn)CSS代碼如下:

.container?{/*?開啟?flex?布局?*/display:?flex; } .item?{/*?每個元素占相同的寬度?*/flex:?1; }

4. Grid方案

通過 Grid 布局實(shí)現(xiàn)該功能主要是通過 template 屬性實(shí)現(xiàn)。

實(shí)現(xiàn)CSS代碼如下

.container?{/*?開啟?grid?布局?*/display:?grid;grid-template-columns:?repeat(4,?1fr);/*?使用?repeat?函數(shù)生成如下代碼?*//*?grid-template-columns:?1fr?1fr?1fr?1fr;?*/ }

Sticky Footer布局

所謂的?Sticky Footer?布局并不是一種新的前端技術(shù)和概念,它就是一種網(wǎng)頁布局。如果頁面內(nèi)容不夠長時,底部欄就會固定到瀏覽器的底部;如果足夠長時,底部欄就后跟隨在內(nèi)容的后面。如下圖所示:

這里來介紹實(shí)現(xiàn)該布局的4種方式

公共的CSS代碼如下:

body?{margin:?0; } .container?{height:?400px;display:?flex; } .left?{height:?400px;width:?200px;background-color:?#f759ab; } .content?{height:?400px;background-color:?#52c41a;flex:?1; } .right?{height:?400px;width:?200px;background-color:?#f759ab; } .left, .content, .right?{font-size:?70px;line-height:?400px;text-align:?center; } .header?{height:?100px;background-color:?#70a1ff; } .footer?{height:?100px;background-color:?#ff7a45; } .header, .footer?{line-height:?100px;font-size:?52px;text-align:?center; }

公共的HTML如下:

<div?class="main"><div?class="header">header</div><div?class="container"><div?class="left">left</div><div?class="content">content</div><div?class="right">right</div></div><div?class="footer">footer</div> </div>

1. 絕對定位的方式

通過絕對定位的方式實(shí)現(xiàn)Sticky Footer布局的步驟如下:

  • 設(shè)置最外層容器高度為100%;

  • 讓子元素元素相對于容器元素進(jìn)行定位,并設(shè)置容器元素最小高度為100%;

  • 在中間區(qū)域設(shè)置padding-bottom為footer的高度 ;

  • 底部欄絕對定位,并一直吸附在底部即可實(shí)現(xiàn)。

實(shí)現(xiàn)CSS代碼如下:

/*?1.?設(shè)置最外層容器為100%?*/ html, body?{height:?100%; } /*?2.?讓子元素元素相對于容器元素進(jìn)行定位,并設(shè)置容器元素最小高度為100%?*/ .main?{position:?relative;min-height:?100%; } /*?3.?在中間區(qū)域設(shè)置?padding-bottom?為footer?的高度?*/ .container?{padding-bottom:?100px; } /*?由于開啟了絕對定位,寬度成了自適應(yīng),設(shè)置為100%?bottom:0?始終保持底部?*/ .footer?{position:?absolute;width:?100%;bottom:?0; }

2. 使用calc函數(shù)實(shí)現(xiàn)

使用?calc?函數(shù)實(shí)現(xiàn)的方式會比較簡單,中間的容器最少高度為視口寬度的100% - 頭部和底部兩部分的高度即可完成該功能。

實(shí)現(xiàn)CSS代碼如下:

.container?{/*?這里的?中間?部分的容器最少為視口寬度的?100%?-?頭部和底部兩部分的高度即可完成該功能?*/min-height:?calc(100vh?-?200px); }

3. Flex方案

實(shí)現(xiàn)步驟如下

  • 開啟?flex?布局

  • 將子元素布局方向修改為垂直排列

  • 設(shè)置最小高度為當(dāng)前視口,使不管中間部分有多高,始終都可以保持在底部

  • 設(shè)置中間部分容器高度為自適應(yīng)

實(shí)現(xiàn)CSS代碼如下:

.main?{/*?開啟flex布局?*/display:?flex;/*?將子元素布局方向修改為垂直排列?*/flex-flow:?column;/*?設(shè)置最小高度為當(dāng)前視口,使不管中間部分有多高,始終都可以保持在底部?*/min-height:?100vh; } .container?{/*?設(shè)置?中間?部分自適應(yīng)?*/flex:?1; }

4. Grid方案

實(shí)現(xiàn)步驟如下

  • 開啟?grid?布局

  • 置最小高度為當(dāng)前視口,使不管中間部分有多高,始終都可以保持在底部

實(shí)現(xiàn)CSS代碼如下:

.main?{/*?開啟grid布局?*/display:?grid;grid-template-rows:?auto?1fr?auto;/*?設(shè)置最小高度為當(dāng)前視口,使不管中間部分有多高,始終都可以保持在底部?*/min-height:?100vh; }

全屏布局

全部布局主要應(yīng)用在后臺,主要效果如下所示:

這里介紹三種全屏布局的實(shí)現(xiàn)方法。

公共的CSS代碼如下:

body?{margin:?0; } body, html, .container?{height:?100vh;box-sizing:?border-box;text-align:?center;overflow:?hidden; } .content?{background-color:?#52c41a;/*?*?中間部門的布局可以參考?兩列?三列?布局?*/display:?grid;grid-template-columns:?auto?1fr; } .left?{width:?240px;background-color:?#52c41a;font-size:?80px;line-height:?calc(100vh?-?200px); } .right?{background-color:?#f759ab;font-size:?60px; } .header?{height:?100px;background-color:?#70a1ff; } .footer?{height:?100px;background-color:?#ff7a45; } .header, .footer?{line-height:?100px;font-size:?52px; }

HTML結(jié)構(gòu)如下:

<div?class="container"><div?class="header">header</div><div?class="content"><div?class="left">導(dǎo)航</div><div?class="right"><div?class="right-in">自適應(yīng),超出高度出現(xiàn)滾動條</div></div></div><div?class="footer">footer</div> </div>

1. 使用calc函數(shù)實(shí)現(xiàn)

實(shí)現(xiàn)步驟如下:

  • 通過?calc?函數(shù)計(jì)算出中間容器的高度。

  • 中間出現(xiàn)滾動條的容器設(shè)置overflow: auto即出現(xiàn)滾動條的時候出現(xiàn)滾動條。

實(shí)現(xiàn)CSS代碼如下:

.content?{overflow:?hidden;/*?通過?calc?計(jì)算容器的高度?*/height:?calc(100vh?-?200px); } .left?{height:?100%; } .right?{/*?如果超出出現(xiàn)滾動條?*/overflow:?auto;height:?100%; } .right-in?{/*?假設(shè)容器內(nèi)有500px的元素?*/height:?500px; }

2. Flex 方案

使用?Flex?方式實(shí)現(xiàn)該布局比較簡單。

實(shí)現(xiàn)CSS代碼如下

.container?{/*?開啟flex布局?*/display:?flex;/*?將子元素布局方向修改為垂直排列?*/flex-flow:?column; } .content?{/*?如果超出出現(xiàn)滾動條?*/overflow:?auto;/*?設(shè)置?中間?部分自適應(yīng)?*/flex:?1; } .right-in?{/*?假設(shè)容器內(nèi)有500px的元素?*/height:?500px; }

3. Grid 方案

grid布局對于這種布局來說,實(shí)現(xiàn)起來是非常得心應(yīng)手的,通過template屬性即可實(shí)現(xiàn)。

實(shí)現(xiàn)CSS代碼如下

.container?{/*?開啟grid布局?*/display:?grid;grid-template-rows:?auto?1fr?auto; } .content?{/*?如果超出出現(xiàn)滾動條?*/overflow:?auto; } .right-in?{/*?假設(shè)容器內(nèi)有500px的元素?*/height:?500px; }

作者:一碗周?

https://juejin.cn/post/7028962991345254407

IT技術(shù)分享社區(qū)

個人博客網(wǎng)站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠(yuǎn)程辦公:常用的遠(yuǎn)程協(xié)助軟件,你都知道嗎?51單片機(jī)程序下載、ISP及串口基礎(chǔ)知識硬件:斷路器、接觸器、繼電器基礎(chǔ)知識

總結(jié)

以上是生活随笔為你收集整理的前端: 42 种前端常用布局方案,值得收藏!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。