SASS 数学计算

Posted

技术标签:

【中文标题】SASS 数学计算【英文标题】:SASS Math Calculation 【发布时间】:2013-10-01 18:58:58 【问题描述】:

尝试创建响应式视频网格。我希望使用基于 100% 宽度计算的标准 SASS 公式,而不是为每个媒体查询使用不同的 %,但不确定 SASS 是否可以做到这一点。下面公式中的 40 考虑了 2 x 20px 固定边距(即这将是一个 3 列网格)。

理想公式:

ul.videos 
  li 
     width: ((100% / 3) - 40);
  

CSS/SASS 有什么办法可以处理这个问题?如果可能,宁愿不使用 JS。

【问题讨论】:

【参考方案1】:

很遗憾,您无法从 33% 中减去 40px。 SASS 生成一个标准的 CSS 文件供浏览器解释,并且在构建时 SASS 不知道浏览器的尺寸。

但是,您应该能够通过使用 CSS 边距来达到预期的效果,例如

ul.videos 
  li 
     width: (100% / 3);
     div 
         margin: 0 20px;
     
  

【讨论】:

从谷歌搜索,这是我正在寻找的语法。 圆括号是我要找的。不需要 calc() @TimMedora 的解决方案应该是 IMO 公认的解决方案【参考方案2】:

这在all major browsers 中使用calc() 是可能的。

演示:http://jsfiddle.net/gb5HM/

li 
    display: inline-block;
    width: calc(100% / 3 - 40px);

当然,您仍然可以在 SASS 文件中声明它,但它是纯 CSS 解决方案。这在 SASS 中是不可能的,因为 SASS 在生成样式表时不知道 100% 是多少,并且 100% 的像素值会随着文档大小的调整而波动。

规格:http://www.w3.org/TR/css3-values/#calc

【讨论】:

【参考方案3】:

另一个较新的浏览器解决方案是使用flexbox display type。它似乎有一个 similar amount of support 作为 calc() (真的只是非常现代的浏览器)。

Sass,或者更具体地说是 Compass,在这里会有一些用处,因为它有 flexbox mixins。

【讨论】:

以上是关于SASS 数学计算的主要内容,如果未能解决你的问题,请参考以下文章

1-8 Sass的基本特性-运算

对可变参数 Sass mixins 进行数学运算

Sass的运算

Sass的运算

SASS:calc() 与普通计算?

sass:vh 和 px 之间的计算