亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > CSS > 正文

css如何實現n宮格布局的方法示例

2024-07-11 09:00:15
字體:
來源:轉載
供稿:網友

常見應用場景

現在的APP界面基本都是大同小異, 宮格布局現在基本成了每個APP必然的存在.

帶邊框, 常用在"功能導航"頁面

無邊框, 常用在首頁分類

設計目標

在scss環境下, 通過mixin實現n宮格, 并且可以支持"有無邊框"和"每個格是否正方形":

@include grid(3, 3, true); // 3 x 3, 有邊框, 且每個格為正方形@include grid(2, 5, false, false); // 2 x 5, 無邊框

最終效果

"padding百分比"小技巧

先解釋一個小技巧, 如何實現正方形, 保證看一遍就會, 結論就是:
padding的值如果是百分比, 那么他是相對"父"元素寬度計算的, 也就是說如果"父"元素寬度是100px, "子"元素設置padding-top:100%,"子"元素的padding-top實際上等于100px, 這樣就實現了一個正方形(100 x 100). 為了減少干擾, 我們把"子"元素高度設置為0;

設計思路(無關你是scss還是less)

  1. 為了方便內部元素水平/垂直居中, 整體我們用flex布局.
  2. 使用正方形占位, 因為用了padding-top:100%, 所以我們就需要再單獨用一個div來裝內容, 我給他起名"item__content".
  3. 為了讓內容的容器div充滿方塊, 我們給他設置樣式:position:absolute;top:0;left:0;right:0;bottom:0;;

因此我們的html是這樣的:

<!-- a-grid是一個flex容器, 方便他的內容做"水平/垂直居中" --><div class="a-grid">  <!-- a-grid__item用來占位實現正方形 -->  <div class="a-grid__item">      <!-- item__content才是真正裝內容的容器 -->      <div class="item__content">        內容...      </div>  </div></div>

代碼(scss)

這里做了3件事:

  1. 為了不冗余, 我把公共的部分抽離的出來起名".a-grid";
  2. mixin支持4個參數, 分別是$row(行數), $column(列數), $hasBorder(是否有邊框), $isSquare(是否保證每個塊是正方形).
  3. mixin內部通過計算并結合:nth-child實現"整體無外邊框"的效果,
.a-grid {    display: flex;    flex-wrap: wrap;    width: 100%;    .a-grid__item {        text-align:center;        position:relative;        >.item__content {            display:flex            flex-flow: column;            align-items: center;            justify-content: center;        }    }}@mixin grid($row:3, $column:3, $hasBorder:false, $isSquare:true) {    @extend .a-grid;    .a-grid__item {        flex-basis: 100%/$column;        @if($isSquare) {            padding-bottom: 100%/$column;            height: 0;        }        >.item__content {            @if($isSquare) {                position:absolute;                top:0;left:0;right:0;bottom:0;            }        }    }    @for $index from 1 to (($row - 1) * $column + 1) {        .a-grid__item:nth-child(#{$index}) {            @if($hasBorder) {                border-bottom: 1px solid #eee;            }        }    }    @for $index from 1 to $column {        .a-grid__item:nth-child(#{$column}n + #{$index}) {            @if($hasBorder) {                border-right: 1px solid #eee;            }        }    }}

使用

// 生成一個 3行3列, 正方形格子的宮格.a-grid-3-3 {    @include grid(3, 3, true);}// 生成一個 2行5列, 無邊框宮格, 每個格子由內容決定高度.a-grid-2-5 {    @include grid(2, 5, false, false);}

提醒大家: 如要做n x m的布局, 用@include grid(n, m)后千萬別忘了在html中添加 n x m個對應的dom結構.

最終

內容很簡單, 還有很多可以優化的地方, 比如邊框可以改成"頭發絲"邊框, 在真機上看起來更細些.

好了, 內容就這些, 拋磚引玉, 如果有更好的實現方式請留言, 感謝大家閱讀.

最近在寫一個css樣式庫, 目標是兼容小程序, 大家有興趣的可以一起玩, 這是本節課對應的源碼:

https://github.com/any86/3a.css/blob/develop/src/components/_grid.scss

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲无av在线中文字幕| 欧美在线不卡区| 久久免费少妇高潮久久精品99| 91福利视频在线观看| 成人网中文字幕| 久久精品久久久久电影| 久久福利网址导航| 国产日韩在线免费| 亚洲一品av免费观看| 亚洲欧洲在线看| 久久久久久久999| 日韩国产精品亚洲а∨天堂免| 精品国产乱码久久久久酒店| 亚洲天堂av电影| 国产精品久久网| 91网在线免费观看| 亚洲精品福利资源站| 综合136福利视频在线| 日韩在线精品视频| 91久久久国产精品| 91精品久久久久久久久久久久久久| 夜夜狂射影院欧美极品| 欧美一级片久久久久久久| 国产精品久久久久久久久久ktv| 欧美激情国产精品| 黄网动漫久久久| 国产精品揄拍一区二区| 国产精品视频导航| 久久精品国产欧美亚洲人人爽| 亚洲欧美综合区自拍另类| 国产精品自产拍在线观看中文| 亚洲精品久久久久中文字幕二区| 国产精品久久久久9999| 久久精品国产69国产精品亚洲| 日韩欧美中文字幕在线观看| 国产精品嫩草视频| 欧美老妇交乱视频| 欧美日韩加勒比精品一区| 欧美影院成年免费版| 亚洲一区二区三区成人在线视频精品| 亚洲精品美女在线| 在线观看日韩www视频免费| 欧美激情亚洲精品| 97精品视频在线播放| 日本欧美黄网站| 亚洲精品之草原avav久久| 午夜精品一区二区三区视频免费看| 欧美在线激情视频| 日韩欧美综合在线视频| 亚洲欧美中文日韩v在线观看| 日韩激情视频在线播放| 久久在精品线影院精品国产| 日本亚洲欧洲色| 黑人巨大精品欧美一区二区三区| 亚洲天堂av女优| 日韩av中文字幕在线免费观看| 国内外成人免费激情在线视频| 亚洲最大av在线| 欧美精品午夜视频| 国产在线观看精品| 色婷婷av一区二区三区在线观看| 一本大道久久加勒比香蕉| 日本久久久久久| 精品美女久久久久久免费| 亚洲精品久久7777777| 福利视频第一区| 亚洲人成网站免费播放| 国产亚洲视频中文字幕视频| 伊人一区二区三区久久精品| 国产精品成人免费电影| xvideos亚洲人网站| 日韩在线观看精品| 亚洲国产日韩欧美在线动漫| 国内精品久久久久久中文字幕| 欧美成人精品xxx| 国产成人精品免高潮费视频| 亚洲国语精品自产拍在线观看| 亚洲精品福利资源站| 高清一区二区三区四区五区| zzjj国产精品一区二区| 深夜精品寂寞黄网站在线观看| 日韩av影院在线观看| 色樱桃影院亚洲精品影院| 成人看片人aa| 亚洲综合大片69999| 最近日韩中文字幕中文| 国产精品视频白浆免费视频| 在线观看日韩视频| 在线观看亚洲区| 国产精品网站视频| 久久亚洲春色中文字幕| 97视频在线看| 日韩在线视频网站| 精品国产欧美一区二区三区成人| 亚洲一区二区三区sesese| 国外日韩电影在线观看| 亚洲国产精品高清久久久| 中文字幕亚洲在线| 插插插亚洲综合网| 国产精品第三页| 在线播放精品一区二区三区| 欧美—级高清免费播放| 国产91av在线| 久久久久久成人| 97精品国产97久久久久久| 欧洲精品毛片网站| 日韩在线观看免费全集电视剧网站| 亚洲第一色中文字幕| 国产美女直播视频一区| 欧美精品电影免费在线观看| 中文字幕亚洲天堂| 琪琪亚洲精品午夜在线| 日韩成人在线电影网| 成人国产精品一区二区| 国内精品一区二区三区| 7m精品福利视频导航| 国产精品成人av性教育| 91欧美日韩一区| 日韩美女激情视频| 国产午夜精品理论片a级探花| 欧美丝袜第一区| 全球成人中文在线| 亚洲国产精品久久久久秋霞蜜臀| 88国产精品欧美一区二区三区| 欧美电影在线观看完整版| 精品久久久一区二区| 欧美丰满少妇xxxx| 欧美又大又粗又长| 国产精品福利网站| 中文字幕日韩在线视频| 国产日韩在线精品av| 欧美成人免费大片| 这里只有精品丝袜| 亚洲黄页视频免费观看| 日本亚洲欧美三级| 日本伊人精品一区二区三区介绍| 国产日韩欧美自拍| 欧美一级视频在线观看| 亚洲欧美中文日韩在线v日本| 国产一区二区三区丝袜| 欧美日韩一区二区免费视频| 亚洲人成绝费网站色www| 久久精品视频亚洲| 91精品国产电影| 狠狠躁天天躁日日躁欧美| 亚洲第一区中文字幕| 欧美成人精品xxx| 亚洲精品国精品久久99热一| 日韩高清电影免费观看完整| 日韩在线欧美在线国产在线| 最近2019年手机中文字幕| 久久久久久国产精品三级玉女聊斋| 九九热这里只有在线精品视| 欧美激情在线视频二区| 午夜精品久久久久久久久久久久久| 国产主播喷水一区二区| 热久久这里只有| 久久亚洲精品中文字幕冲田杏梨| 亚洲美女www午夜| 91精品视频网站| 久久婷婷国产麻豆91天堂| 亚洲成色777777女色窝| 日韩av影片在线观看| 精品久久久久久中文字幕大豆网|