前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3分钟13行代码搭建sass版移动端网格系统

3分钟13行代码搭建sass版移动端网格系统

作者头像
IMWeb前端团队
发布2019-12-04 13:59:03
2780
发布2019-12-04 13:59:03
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队

本文作者:IMWeb 结一 原文出处:IMWeb社区 未经同意,禁止转载

一般来说,网格系统分为container、row及column三大部分,而container一般是负责内容居中的,这对pc端比较合适,而大移动端是真的不太需要,所以直接砍掉,那么就剩下row和column了。

上代码:

代码语言:javascript
复制
@mixin row() {
    width: 100%;
    display: flex;
}
@mixin col($num, $total: 1) {
    // 如果$total为默认的1,则表示等分的$num分之一
    // 否则计算$num/$total
    @if $total == 1 {
        width: 100% / $num;
    } @else {
        width: percentage($num / $total);
    }
}

如何使用:

代码语言:javascript
复制
.row{
    @include row;
}
// col的命名规范为col-占的格子数-总的格子数
.col-1-2{
    @include col(2);
}
.col-1-3{
    @include col(1, 3);
}
.col-2-3{
    @include col(2, 3);
}
.col-1-4{
    @include col(4);
}
.col-3-4{
    @include col(3, 4);
}
.col-2-5{
    @include col(2,5);
}

最后,扩展成一个百搭可控制的网格系统:

代码语言:javascript
复制
@charset "UTF-8";

//-----------------------------------------------------
// grid system
//-----------------------------------------------------

$gridFlex:          false !default;
$gridRowClearfix:   false !default; // 如果采用float,子元素清除浮动使用clearfix或overflow
$gridClass:         false !default;

// row
@mixin row() {
    width: 100%;
    @if $gridFlex {
        display: flex;
    } @else if $gridRowClearfix{
        @extend %clearfix;
    } @else {
        overflow: hidden;
    }
}

// col
@mixin col($num, $total: 1) {
    @if not $gridFlex {
        float: left;
    }
    // 如果$total为默认的1,则表示等分的$num分之一
    // 否则计算$num/$total
    @if $total == 1 {
        width: 100% / $num; 
    } @else {
        width: percentage($num / $total);
    }
}

// 是否开启class
@if $gridClass {
    .row{
        @include row;
    }
    .col-1-2{
        @include col(2);
    }
    .col-1-3{
        @include col(1, 3);
    }
    .col-2-3{
        @include col(2, 3);
    }
    .col-1-4{
        @include col(4);
    }
    .col-3-4{
        @include col(3, 4);
    }
    .col-1-5{
        @include col(5);
    }
    .col-2-5{
        @include col(2, 5);
    }
    .col-3-5{
        @include col(3, 5);
    }
    .col-4-5{
        @include col(4, 5);
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016-04-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档