CSS网格 - 最后一行项太大了

时间:2016-02-17 16:33:44

标签: html css grid

我构建一个跨越页面宽度的小网格(即没有外边距或填充),并在每个网格项之间包含一个装订线。

我的问题是,当从最后一个项目中移除填充/装订线时,会导致此项目变得比其他项目大。

enter image description here

在这里看一支笔:

http://codepen.io/backtofront/pen/yerpvX

相关的商品代码在这里:

[class*='column-'] {
 float: left;
 padding-right: 10px;
 padding-bottom: 10px;
 width: 100%;
 min-height: 1px; 

 &:last-of-type {
  padding-right: 0;
 }      

 img {
  width: 100%;
  display: block;
 }
}

我正在寻找一种方法来实现这一目标而不在每个项目周围添加填充/边距。

谢谢。

1 个答案:

答案 0 :(得分:1)

这就是我非常喜欢bootstrap网格处理列的方式!

这是你的例子的小提琴: https://jsfiddle.net/c24w1abL/

我使用padding-right: 10pxpadding-right: 5px;替换了列类的padding-left: 5px。这使所有列保持一致。 .row获得负边距,以便列重新与原始列宽一致。

下面的代码段使用了scss,所以我不认为该代码片段会起作用吗? 请参考JSFiddle!



/* Base
  -------------------------------------------------------- */

	html {
	  box-sizing: border-box;
	}

	*, *:before, *:after {
	  box-sizing: inherit;
	}

  %clearfix {
    &:after {
      content: "";
      display: table;
      clear: both;
    }
  }

/* Grids
  -------------------------------------------------------- */

  $grid-columns: 12; 

  .grid, .row {
    @extend %clearfix;
  }
  
  .row {
    margin: 0 -5px;
  }

  .grid {
    background: tomato;
  }

	[class*='column-'] {
		float: left;
		padding-right: 5px;
    padding-left: 5px;
		padding-bottom: 10px;
		width: 100%;
		min-height: 1px; 

    img {
      width: 100%;
      display: block;
    }
	}
     
  @for $i from 1 through $grid-columns {

    .column-#{$i} { 
      width: 100% / $grid-columns * $i;
    }
  }

/* Base
  -------------------------------------------------------- */

	html {
	  box-sizing: border-box;
	}

	*, *:before, *:after {
	  box-sizing: inherit;
	}

  %clearfix {
    &:after {
      content: "";
      display: table;
      clear: both;
    }
  }

/* Grids
  -------------------------------------------------------- */

  $grid-columns: 12; 

  .grid, .row {
    @extend %clearfix;
  }
  
  .row {
    margin: 0 -5px;
  }

  .grid {
    background: tomato;
  }

	[class*='column-'] {
		float: left;
		padding-right: 5px;
    padding-left: 5px;
		padding-bottom: 10px;
		width: 100%;
		min-height: 1px; 

    img {
      width: 100%;
      display: block;
    }
	}
     
  @for $i from 1 through $grid-columns {

    .column-#{$i} { 
      width: 100% / $grid-columns * $i;
    }
  }