创建流畅的网格 - 百分比似乎陷入困境

时间:2012-03-04 23:17:12

标签: css grid sass fluid

我正在查看Skeleton框架(getskeleton.com),但我想要一个流畅的网格系统。我也对这些网格的内部工作感兴趣,所以我决定自己动手。

但是,我遇到two.columns百分比的问题。所有其他列宽都可以正常工作。首先,这里发生了什么:

enter image description here

第二排显然有问题,我真的无法弄清楚它是什么。

此布局的代码如下:

   $max-width: 600px;

   .container {
     @include container($max-width);

     .column, .columns {
       @include columns($max-width);
     }

     .one.column, .one.columns  { width: perc(30px, $max-width); }
     .two.columns               { width: perc(80px, $max-width); }
     .three.columns             { width: perc(130px, $max-width); }
     .four.columns              { width: perc(180px, $max-width); }
     .five.columns              { width: perc(230px, $max-width); }
     .six.columns               { width: perc(280px, $max-width); }
     .seven.columns             { width: perc(330px, $max-width); }
     .eight.columns             { width: perc(380px, $max-width); }
     .nine.columns              { width: perc(430px, $max-width); }
     .ten.columns               { width: perc(480px, $max-width); }
     .eleven.columns            { width: perc(530px, $max-width); }
     .twelve.columns            { width: perc(580px, $max-width); }

以下是我使用的mixins /函数,不确定这是否重要:

@function perc($width, $container-width) {
  @return percentage($width / $container-width);
}

@mixin container($width)  {
  position: relative; 
  width: $width; 
  margin: 0 auto; 
  padding: 0;
}

@mixin columns($max-width)  {
  float: left;
  display: inline;
  margin: 0 10px;
}

HTML文件中的代码只是:

<% 6.times do %>
  <div class="two columns box"></div>
<% end %>

我想如果计算百分比有问题,所有行都会以这种或那种方式搞乱。然而,它只是第二个..如果有人看到这里发生了什么,请赐教我?

我将已处理的CSS放在pastebin上:http://pastebin.com/bxq1a5Ge

提前致谢。

2 个答案:

答案 0 :(得分:2)

我认为您还需要将利润率转换为百分比。每当div超过1列时,20px的装订线宽度将转换为百分比作为块宽度的一部分。这在某些时候最终会出错。

另一个选择是它是一个舍入问题,因为浏览器无法将百分比值完全转换为像素值。

我已经设置了一个基本jsfiddle of the issue,因为jsfiddle支持SCSS。该示例将选项2显示为一个很好的候选者,但我建议将所有宽度更改为百分比。

答案 1 :(得分:0)

显然

perc(80px, 600px)提供13.333%

当我使用width: 13.3333333%时,问题得到解决。