熟悉Bootstrap的同学应该了解其中的格栅系统,用来排版非常方便。他将页面分为12等分,并且适用不同的尺寸屏幕。超小xs(小于768px),小屏sm(大于等于768px),中屏md(大于等于992px),大屏lg(大于等于1200px)。为此需要生成一堆的.clo-*-*类,总计4*12=48个,再加上pull,push,offset。这种只能用less来写了,参考Bootstrap的less源码,自己重新写了一个,仅供练手

Less版本

@sm-width: 768px;
@md-width: 992px;
@lg-width: 1200px;
@grid-columns: 12;
@grid-gutter: 30px;
@container-sm: (720px + @grid-gutter);
@container-md: (940px + @grid-gutter);
@container-lg: (1140px + @grid-gutter); .grid-padding(@gutter){
padding-left: floor((@gutter)/2);
padding-right: floor((@gutter)/2);
}
.make-container() {
.grid-padding(@grid-gutter);
margin-left: auto;
margin-right: auto;
@media (min-width: @sm-width) {
width: @container-sm;
}
@media (min-width: @md-width) {
width: @container-md;
}
@media (min-width: @lg-width) {
width: @container-lg;
}
} .container{
.make-container;
}
.container-fluid{
.grid-padding(@grid-gutter);
margin-left: auto;
margin-right: auto;
}
.row {
margin-left: -15px;
margin-right: -15px;
} .make-grid() {
.col(@index; @list) when(@index  @grid-columns) {
@{item} {
.grid-padding(@grid-gutter);
position: left;
min-height: 1px;
}
} .col(1; '.col-xs-0');
} .make-grid(); .make-column(@class) {
.col(@index; @list) when (@index  @grid-columns) {
@{list} {
float: left;
}
}
.col(1; '.col-@{class}-0');
}
.make-column(xs);
@media (min-width: @sm-width) {
.make-column(sm);
}
@media (min-width: @md-width) {
.make-column(md);
}
@media (min-width: @lg-width) {
.make-column(lg);
}

sass版本

$screen-map: (xs:768px, sm: 768px, md: 992px, lg: 1200px);
$gutter-width: 30px;
$container-map: (sm: 720px + $gutter-width, md: 940px + $gutter-width, lg: 1140px + $gutter-width);
$grid-columns: 12;
$colclass-map: (pull: right, push: left, offset: margin-left); @mixin grid-padding($gutter) {
padding-left: $gutter/2;
padding-right: $gutter/2;
} @mixin margin-auto($horizone:null) {
@if $horizone {
margin: $horizone/2 auto;
}
@else {
margin-left: auto;
margin-right: auto;
}
} @mixin make-container() {
@include grid-padding($gutter-width);
@include margin-auto(); @each $screen, $width in $container-map {
$min-width: map-get($screen-map, $screen);
@media (min-width: $min-width) {
width: $width;
}
}
} .container{
@include make-container();
} .container-fluid{
@include grid-padding($gutter-width);
@include margin-auto();
}
.row {
margin-left: -15px;
margin-right: -15px;
} @mixin make-grid() {
$list: null;
@for $i from 1 through $grid-columns {
@each $screen, $width in $screen-map {
$item: '.col-#{$screen}-#{$i}';
@if $list {
$list: #{$list}, #{$item};
} @else {
$list: $item;
}
}
}
#{$list} {
@include grid-padding($gutter-width);
position: left;
min-height: 1px;
}
} @mixin make-column($screen) {
$list: null;
@for $i from 1 through $grid-columns {
$item: '.col-#{$screen}-#{$i}';
@if $list {
$list: #{$list}, #{$item};
} @else {
$list: $item;
} #{$item} {
width: percentage(($i)/$grid-columns);
}
@each $class, $suffix in $colclass-map {
.col-#{$screen}-#{$class}-#{$i} {
#{$suffix}: percentage(($i)/$grid-columns);
}
}
} #{$list} {
float: left;
}
} @include make-grid();
@each $screen, $width in $screen-map {
@if $screen == xs {
@include make-column($screen);
} @else {
@media (min-width: $width) {
@include make-column($screen);
}
}
}

编译生成对应CSS文件:

.container {
padding-left: 15px;
padding-right: 15px;
margin-left: auto;
margin-right: auto;
}
@media (min-width: 768px) {
.container {
width: 750px;
}
}
@media (min-width: 992px) {
.container {
width: 970px;
}
}
@media (min-width: 1200px) {
.container {
width: 1170px;
}
}
.container-fluid {
padding-left: 15px;
padding-right: 15px;
margin-left: auto;
margin-right: auto;
}
.row {
margin-left: -15px;
margin-right: -15px;
}
.col-xs-0, .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
padding-left: 15px;
padding-right: 15px;
position: left;
min-height: 1px;
}
.col-xs-1 {
width: 8.33333333%;
}
.col-xs-pull-1 {
right: 8.33333333%;
}
.col-xs-push-1 {
left: 8.33333333%;
}
.col-xs-offset-1 {
margin-left: 8.33333333%;
}
.col-xs-2 {
width: 16.66666667%;
}
.col-xs-pull-2 {
right: 16.66666667%;
}
.col-xs-push-2 {
left: 16.66666667%;
}
.col-xs-offset-2 {
margin-left: 16.66666667%;
}
.col-xs-3 {
width: 25%;
}
.col-xs-pull-3 {
right: 25%;
}
.col-xs-push-3 {
left: 25%;
}
.col-xs-offset-3 {
margin-left: 25%;
}
.col-xs-4 {
width: 33.33333333%;
}
.col-xs-pull-4 {
right: 33.33333333%;
}
.col-xs-push-4 {
left: 33.33333333%;
}
.col-xs-offset-4 {
margin-left: 33.33333333%;
}
.col-xs-5 {
width: 41.66666667%;
}
.col-xs-pull-5 {
right: 41.66666667%;
}
.col-xs-push-5 {
left: 41.66666667%;
}
.col-xs-offset-5 {
margin-left: 41.66666667%;
}
.col-xs-6 {
width: 50%;
}
.col-xs-pull-6 {
right: 50%;
}
.col-xs-push-6 {
left: 50%;
}
.col-xs-offset-6 {
margin-left: 50%;
}
.col-xs-7 {
width: 58.33333333%;
}
.col-xs-pull-7 {
right: 58.33333333%;
}
.col-xs-push-7 {
left: 58.33333333%;
}
.col-xs-offset-7 {
margin-left: 58.33333333%;
}
.col-xs-8 {
width: 66.66666667%;
}
.col-xs-pull-8 {
right: 66.66666667%;
}
.col-xs-push-8 {
left: 66.66666667%;
}
.col-xs-offset-8 {
margin-left: 66.66666667%;
}
.col-xs-9 {
width: 75%;
}
.col-xs-pull-9 {
right: 75%;
}
.col-xs-push-9 {
left: 75%;
}
.col-xs-offset-9 {
margin-left: 75%;
}
.col-xs-10 {
width: 83.33333333%;
}
.col-xs-pull-10 {
right: 83.33333333%;
}
.col-xs-push-10 {
left: 83.33333333%;
}
.col-xs-offset-10 {
margin-left: 83.33333333%;
}
.col-xs-11 {
width: 91.66666667%;
}
.col-xs-pull-11 {
right: 91.66666667%;
}
.col-xs-push-11 {
left: 91.66666667%;
}
.col-xs-offset-11 {
margin-left: 91.66666667%;
}
.col-xs-12 {
width: 100%;
}
.col-xs-pull-12 {
right: 100%;
}
.col-xs-push-12 {
left: 100%;
}
.col-xs-offset-12 {
margin-left: 100%;
}
.col-xs-0, .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
float: left;
}
@media (min-width: 768px) {
.col-sm-1 {
width: 8.33333333%;
}
.col-sm-pull-1 {
right: 8.33333333%;
}
.col-sm-push-1 {
left: 8.33333333%;
}
.col-sm-offset-1 {
margin-left: 8.33333333%;
}
.col-sm-2 {
width: 16.66666667%;
}
.col-sm-pull-2 {
right: 16.66666667%;
}
.col-sm-push-2 {
left: 16.66666667%;
}
.col-sm-offset-2 {
margin-left: 16.66666667%;
}
.col-sm-3 {
width: 25%;
}
.col-sm-pull-3 {
right: 25%;
}
.col-sm-push-3 {
left: 25%;
}
.col-sm-offset-3 {
margin-left: 25%;
}
.col-sm-4 {
width: 33.33333333%;
}
.col-sm-pull-4 {
right: 33.33333333%;
}
.col-sm-push-4 {
left: 33.33333333%;
}
.col-sm-offset-4 {
margin-left: 33.33333333%;
}
.col-sm-5 {
width: 41.66666667%;
}
.col-sm-pull-5 {
right: 41.66666667%;
}
.col-sm-push-5 {
left: 41.66666667%;
}
.col-sm-offset-5 {
margin-left: 41.66666667%;
}
.col-sm-6 {
width: 50%;
}
.col-sm-pull-6 {
right: 50%;
}
.col-sm-push-6 {
left: 50%;
}
.col-sm-offset-6 {
margin-left: 50%;
}
.col-sm-7 {
width: 58.33333333%;
}
.col-sm-pull-7 {
right: 58.33333333%;
}
.col-sm-push-7 {
left: 58.33333333%;
}
.col-sm-offset-7 {
margin-left: 58.33333333%;
}
.col-sm-8 {
width: 66.66666667%;
}
.col-sm-pull-8 {
right: 66.66666667%;
}
.col-sm-push-8 {
left: 66.66666667%;
}
.col-sm-offset-8 {
margin-left: 66.66666667%;
}
.col-sm-9 {
width: 75%;
}
.col-sm-pull-9 {
right: 75%;
}
.col-sm-push-9 {
left: 75%;
}
.col-sm-offset-9 {
margin-left: 75%;
}
.col-sm-10 {
width: 83.33333333%;
}
.col-sm-pull-10 {
right: 83.33333333%;
}
.col-sm-push-10 {
left: 83.33333333%;
}
.col-sm-offset-10 {
margin-left: 83.33333333%;
}
.col-sm-11 {
width: 91.66666667%;
}
.col-sm-pull-11 {
right: 91.66666667%;
}
.col-sm-push-11 {
left: 91.66666667%;
}
.col-sm-offset-11 {
margin-left: 91.66666667%;
}
.col-sm-12 {
width: 100%;
}
.col-sm-pull-12 {
right: 100%;
}
.col-sm-push-12 {
left: 100%;
}
.col-sm-offset-12 {
margin-left: 100%;
}
.col-sm-0, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
float: left;
}
}
@media (min-width: 992px) {
.col-md-1 {
width: 8.33333333%;
}
.col-md-pull-1 {
right: 8.33333333%;
}
.col-md-push-1 {
left: 8.33333333%;
}
.col-md-offset-1 {
margin-left: 8.33333333%;
}
.col-md-2 {
width: 16.66666667%;
}
.col-md-pull-2 {
right: 16.66666667%;
}
.col-md-push-2 {
left: 16.66666667%;
}
.col-md-offset-2 {
margin-left: 16.66666667%;
}
.col-md-3 {
width: 25%;
}
.col-md-pull-3 {
right: 25%;
}
.col-md-push-3 {
left: 25%;
}
.col-md-offset-3 {
margin-left: 25%;
}
.col-md-4 {
width: 33.33333333%;
}
.col-md-pull-4 {
right: 33.33333333%;
}
.col-md-push-4 {
left: 33.33333333%;
}
.col-md-offset-4 {
margin-left: 33.33333333%;
}
.col-md-5 {
width: 41.66666667%;
}
.col-md-pull-5 {
right: 41.66666667%;
}
.col-md-push-5 {
left: 41.66666667%;
}
.col-md-offset-5 {
margin-left: 41.66666667%;
}
.col-md-6 {
width: 50%;
}
.col-md-pull-6 {
right: 50%;
}
.col-md-push-6 {
left: 50%;
}
.col-md-offset-6 {
margin-left: 50%;
}
.col-md-7 {
width: 58.33333333%;
}
.col-md-pull-7 {
right: 58.33333333%;
}
.col-md-push-7 {
left: 58.33333333%;
}
.col-md-offset-7 {
margin-left: 58.33333333%;
}
.col-md-8 {
width: 66.66666667%;
}
.col-md-pull-8 {
right: 66.66666667%;
}
.col-md-push-8 {
left: 66.66666667%;
}
.col-md-offset-8 {
margin-left: 66.66666667%;
}
.col-md-9 {
width: 75%;
}
.col-md-pull-9 {
right: 75%;
}
.col-md-push-9 {
left: 75%;
}
.col-md-offset-9 {
margin-left: 75%;
}
.col-md-10 {
width: 83.33333333%;
}
.col-md-pull-10 {
right: 83.33333333%;
}
.col-md-push-10 {
left: 83.33333333%;
}
.col-md-offset-10 {
margin-left: 83.33333333%;
}
.col-md-11 {
width: 91.66666667%;
}
.col-md-pull-11 {
right: 91.66666667%;
}
.col-md-push-11 {
left: 91.66666667%;
}
.col-md-offset-11 {
margin-left: 91.66666667%;
}
.col-md-12 {
width: 100%;
}
.col-md-pull-12 {
right: 100%;
}
.col-md-push-12 {
left: 100%;
}
.col-md-offset-12 {
margin-left: 100%;
}
.col-md-0, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
float: left;
}
}
@media (min-width: 1200px) {
.col-lg-1 {
width: 8.33333333%;
}
.col-lg-pull-1 {
right: 8.33333333%;
}
.col-lg-push-1 {
left: 8.33333333%;
}
.col-lg-offset-1 {
margin-left: 8.33333333%;
}
.col-lg-2 {
width: 16.66666667%;
}
.col-lg-pull-2 {
right: 16.66666667%;
}
.col-lg-push-2 {
left: 16.66666667%;
}
.col-lg-offset-2 {
margin-left: 16.66666667%;
}
.col-lg-3 {
width: 25%;
}
.col-lg-pull-3 {
right: 25%;
}
.col-lg-push-3 {
left: 25%;
}
.col-lg-offset-3 {
margin-left: 25%;
}
.col-lg-4 {
width: 33.33333333%;
}
.col-lg-pull-4 {
right: 33.33333333%;
}
.col-lg-push-4 {
left: 33.33333333%;
}
.col-lg-offset-4 {
margin-left: 33.33333333%;
}
.col-lg-5 {
width: 41.66666667%;
}
.col-lg-pull-5 {
right: 41.66666667%;
}
.col-lg-push-5 {
left: 41.66666667%;
}
.col-lg-offset-5 {
margin-left: 41.66666667%;
}
.col-lg-6 {
width: 50%;
}
.col-lg-pull-6 {
right: 50%;
}
.col-lg-push-6 {
left: 50%;
}
.col-lg-offset-6 {
margin-left: 50%;
}
.col-lg-7 {
width: 58.33333333%;
}
.col-lg-pull-7 {
right: 58.33333333%;
}
.col-lg-push-7 {
left: 58.33333333%;
}
.col-lg-offset-7 {
margin-left: 58.33333333%;
}
.col-lg-8 {
width: 66.66666667%;
}
.col-lg-pull-8 {
right: 66.66666667%;
}
.col-lg-push-8 {
left: 66.66666667%;
}
.col-lg-offset-8 {
margin-left: 66.66666667%;
}
.col-lg-9 {
width: 75%;
}
.col-lg-pull-9 {
right: 75%;
}
.col-lg-push-9 {
left: 75%;
}
.col-lg-offset-9 {
margin-left: 75%;
}
.col-lg-10 {
width: 83.33333333%;
}
.col-lg-pull-10 {
right: 83.33333333%;
}
.col-lg-push-10 {
left: 83.33333333%;
}
.col-lg-offset-10 {
margin-left: 83.33333333%;
}
.col-lg-11 {
width: 91.66666667%;
}
.col-lg-pull-11 {
right: 91.66666667%;
}
.col-lg-push-11 {
left: 91.66666667%;
}
.col-lg-offset-11 {
margin-left: 91.66666667%;
}
.col-lg-12 {
width: 100%;
}
.col-lg-pull-12 {
right: 100%;
}
.col-lg-push-12 {
left: 100%;
}
.col-lg-offset-12 {
margin-left: 100%;
}
.col-lg-0, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
float: left;
}
}

文章同步发布: https://www.geek-share.com/detail/2765120966.html

使用Less/Sass生成Bootstrap格栅样式系统的更多相关文章

  1. Bootstrap 12 栅格系统

    栅格系统简介 Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多 12 列.它包含了易于使用的预定义类,还有强大的mix ...

  2. CSS高效开发实战:CSS 3、LESS、SASS、Bootstrap、Foundation --读书笔记(1)设定背景图

    技术的新发展,除计算机可以接入互联网之外,平板电脑.智能手机.智能电视等其他设备均可访问互联网.在多设备时代,构建多屏体验也不是听说的那么难. 但是这也增加了学习CSS的难度?不知道如何上手,只懂一点 ...

  3. sass+compass+bootstrap三剑合璧高效开发记录

    1. 先搭建环境,下载node.js,rubyinstaller,安装, 安装rubyinstaller时,要选上include system path,这样就会自动将node.js执行添加到wind ...

  4. [置顶] bootstrap自定义样式-bootstrap侧边导航栏的实现

    前言 bootstrap自带的响应式导航栏是向下滑动的,有时满足不了个性化的需求,需要做一个类似于android drawerLayout 侧滑的菜单,这就是我要实现的bootstrap自定义侧滑菜单 ...

  5. yii使用bootstrap分页样式

    Bootstrap是Twitter推出的一个开源的用于前端开发的工具包.它由Twitter的设计师Mark Otto和Jacob Thornton合作开发,是一个CSS/HTML框架.Bootstra ...

  6. bootstrap课程2 bootstrap的栅格系统的主要作用是什么

    bootstrap课程2  bootstrap的栅格系统的主要作用是什么 一.总结 一句话总结:响应式布局(就是适应不同的屏幕,手机,平板,电脑) 1.bootstrap的栅格系统如何使用? row ...

  7. 只会CSS还不够,LESS、SASS、BootStrap、Foundation一网打尽!

    有些人想学CSS,不知如何下手:有些人已经学会CSS的各种属性,却不知如何运用:有些人会平面设计,不知道如何与网页设计结合:有些人会HTML,就是学不会CSS.试问自己,图中的技术你都会了吗? 别总是 ...

  8. MVC5 + EF6 + Bootstrap3 (7) Bootstrap的栅格系统

    文章来源: Slark.NET-博客园http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-grid.html 上一节:ASP.NET MVC ...

  9. java生成带html样式的word文件

    参考:http://blog.csdn.net/xiexl/article/details/6652230 最近在项目中需要将通过富文本编辑器处理过的文字转换为Word,查了很久,大家通常的解决办法是 ...

随机推荐

  1. nginx 的基础知识(一)

    Nginx  HTTP 和 反向代理web服务器 epoll 占用少的系统资源.支持更多的并发连接 负载均衡 安装简单.配置灵活 热部署.启动快.不间断服务情况下对软件配置进行升级 反向代理 反向代理 ...

  2. WEB安全防护相关响应头(上)

    WEB 安全攻防是个庞大的话题,有各种不同角度的探讨和实践.即使只讨论防护的对象,也有诸多不同的方向,包括但不限于:WEB 服务器.数据库.业务逻辑.敏感数据等等.除了这些我们惯常关注的方面,WEB ...

  3. newbee-mall开源项目被慕课网拿去做课程,然后我毫不知情,这又是什么骚操作?

    万万没想到,这种事情会发生在我身上. 之前写过<开源囧事>系列而且已经写了四篇,四次开源囧事如下: <开源囧事(一)捅娄子了,写个bug被国家信息安全漏洞共享平台抓到了?> & ...

  4. .Net Redis实战——实现文章投票并排序

    本系列文章为学习Redis实战一书记录的随笔. 软件和环境版本:Redis:5.0.7  .Net 5.0 文中不会对Redis基础概念做过多介绍. Redis数据类型和命令可在菜鸟教程学习:http ...

  5. JDK8中Stream使用解析

    JDK8中Stream使用解析 现在谈及JDK8的新特新,已经说不上新了.本篇介绍的就是Stream和Lambda,说的Stream可不是JDK中的IO流,这里的Stream指的是处理集合的抽象概念『 ...

  6. GO学习-(8) Go语言基础之数组

    Go语言基础之数组 Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基本语法: // 定义一个长度为3元素类型为 ...

  7. Docker学习(14) Docker容器的数据管理

    Docker容器的数据管理 Docker容器的数据卷 重要: Docker的数据卷容器 Docker数据卷的备份和还原

  8. Eclipse从SVN中检出项目缺少Jar包的问题

    Eclipse从SVN中检出项目缺少Jar包的问题

  9. 工作流中的流程追溯!详细解析Activiti框架中的历史组件

    Activit中的历史简介 历史: Activiti中的一个组件,可以捕获发生在进程执行中的信息并永久的保存.与运行时数据不同的是,当流程实例运行完成之后它还会存在于数据库中 历史实体对象有5个: H ...

  10. C#基础之checked与 unchecked的使用

    C#基础之checked与 unchecked的使用 以上都是C#中的两个关键字的使用.据官网给出的相关介绍是:C# 语句既可以在已检查的上下文中执行,也可以在未检查的上下文中执行. 在已检查的上下文 ...