• 使用Less/Sass生成Bootstrap格栅样式系统


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

    Less版本

    @sm- 768px;
    @md- 992px;
    @lg- 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- @sm-width) {
     @container-sm;
    }
    @media (min- @md-width) {
     @container-md;
    }
    @media (min- @lg-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- @sm-width) {
    .make-column(sm);
    }
    @media (min- @md-width) {
    .make-column(md);
    }
    @media (min- @lg-width) {
    .make-column(lg);
    }

    sass版本

    $screen-map: (xs:768px, sm: 768px, md: 992px, lg: 1200px);
    $gutter- 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- map-get($screen-map, $screen);
    		@media (min- $min-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} {
    			 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) {
    			@include make-column($screen);
    		}
    	}
    }

    编译生成对应CSS文件:

    .container {
    padding-left: 15px;
    padding-right: 15px;
    margin-left: auto;
    margin-right: auto;
    }
    @media (min- 768px) {
    .container {
     750px;
    }
    }
    @media (min- 992px) {
    .container {
     970px;
    }
    }
    @media (min- 1200px) {
    .container {
     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 {
     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 {
     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 {
     25%;
    }
    .col-xs-pull-3 {
    right: 25%;
    }
    .col-xs-push-3 {
    left: 25%;
    }
    .col-xs-offset-3 {
    margin-left: 25%;
    }
    .col-xs-4 {
     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 {
     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 {
     50%;
    }
    .col-xs-pull-6 {
    right: 50%;
    }
    .col-xs-push-6 {
    left: 50%;
    }
    .col-xs-offset-6 {
    margin-left: 50%;
    }
    .col-xs-7 {
     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 {
     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 {
     75%;
    }
    .col-xs-pull-9 {
    right: 75%;
    }
    .col-xs-push-9 {
    left: 75%;
    }
    .col-xs-offset-9 {
    margin-left: 75%;
    }
    .col-xs-10 {
     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 {
     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 {
     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- 768px) {
    .col-sm-1 {
     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 {
     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 {
     25%;
    }
    .col-sm-pull-3 {
    right: 25%;
    }
    .col-sm-push-3 {
    left: 25%;
    }
    .col-sm-offset-3 {
    margin-left: 25%;
    }
    .col-sm-4 {
     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 {
     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 {
     50%;
    }
    .col-sm-pull-6 {
    right: 50%;
    }
    .col-sm-push-6 {
    left: 50%;
    }
    .col-sm-offset-6 {
    margin-left: 50%;
    }
    .col-sm-7 {
     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 {
     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 {
     75%;
    }
    .col-sm-pull-9 {
    right: 75%;
    }
    .col-sm-push-9 {
    left: 75%;
    }
    .col-sm-offset-9 {
    margin-left: 75%;
    }
    .col-sm-10 {
     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 {
     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 {
     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- 992px) {
    .col-md-1 {
     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 {
     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 {
     25%;
    }
    .col-md-pull-3 {
    right: 25%;
    }
    .col-md-push-3 {
    left: 25%;
    }
    .col-md-offset-3 {
    margin-left: 25%;
    }
    .col-md-4 {
     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 {
     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 {
     50%;
    }
    .col-md-pull-6 {
    right: 50%;
    }
    .col-md-push-6 {
    left: 50%;
    }
    .col-md-offset-6 {
    margin-left: 50%;
    }
    .col-md-7 {
     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 {
     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 {
     75%;
    }
    .col-md-pull-9 {
    right: 75%;
    }
    .col-md-push-9 {
    left: 75%;
    }
    .col-md-offset-9 {
    margin-left: 75%;
    }
    .col-md-10 {
     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 {
     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 {
     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- 1200px) {
    .col-lg-1 {
     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 {
     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 {
     25%;
    }
    .col-lg-pull-3 {
    right: 25%;
    }
    .col-lg-push-3 {
    left: 25%;
    }
    .col-lg-offset-3 {
    margin-left: 25%;
    }
    .col-lg-4 {
     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 {
     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 {
     50%;
    }
    .col-lg-pull-6 {
    right: 50%;
    }
    .col-lg-push-6 {
    left: 50%;
    }
    .col-lg-offset-6 {
    margin-left: 50%;
    }
    .col-lg-7 {
     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 {
     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 {
     75%;
    }
    .col-lg-pull-9 {
    right: 75%;
    }
    .col-lg-push-9 {
    left: 75%;
    }
    .col-lg-offset-9 {
    margin-left: 75%;
    }
    .col-lg-10 {
     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 {
     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 {
     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

  • 相关阅读:
    第1年4月22日 IBInspectable巧妙用法 cornerRadius
    第1年4月15日
    第1年4月9日 Domain: com.apple.dt.MobileDeviceErrorDomain
    第1年4月7日 活体检测
    GPS 波段信号范围
    tomcat远程调试
    JdbcTemplate或hibernate动态建表
    jdk动态代理失效,事务自调用失效
    Tomcat 访问静态资源出现中文乱码解决办法(转)
    SQL Server 查看死锁进程(转)
  • 原文地址:https://www.cnblogs.com/sohuhome/p/11242053.html
Copyright © 2020-2023  润新知