获得Firefox和Safari的CSS calc()中的百分比?

use*_*938 11 css safari firefox css3

我正在使用以下calc()方程来计算两个div的宽度:

CSS

.MyClass {
    width: calc((100% - 800px) / 2);
    width: -moz-calc((100% - 800px) / 2);
    width: -webkit-calc((100% - 800px) / 2);
}
Run Code Online (Sandbox Code Playgroud)

这适用于Chrome和IE,但不适用于Firefox和Safari.我注意到Firefox似乎无法解释百分比.例如,以下内容将显示正常:

CSS

width: calc((1000px - 800px) / 2);
Run Code Online (Sandbox Code Playgroud)

有什么建议?

谢谢.

更新

所以我的预处理器正在创建看起来像这样的css:

SCSS

.MyClass {
    width: calc( ( 100% - #{$WrapperWidth} ) / 2 ) ;
    width: -moz-calc( ( 100% - #{$WrapperWidth} ) / 2 ) ;
    width: -webkit-calc( ( 100% - #{$WrapperWidth} ) / 2 ) ;
}
Run Code Online (Sandbox Code Playgroud)

CSS

.MyClass {
  width: calc( ( 100% - 800px ) / 2);
  width: -moz-calc(100%-800px/2);
  width: -webkit-calc(100%-800px/2);
}
Run Code Online (Sandbox Code Playgroud)

我试过纠正它但它似乎仍然无法正常工作.浏览器中的代码仍然是:

width: calc((100% - 800px) / 2);
Run Code Online (Sandbox Code Playgroud)

它似乎没有读取-moz-calc.

Fro*_*ode 27

尤里卡.几天来,我一直在忙着这件事.最后发现,100vh而不是关闭100%,将使其与大多数浏览器.

height: calc(100vh - 100px);
Run Code Online (Sandbox Code Playgroud)

代替

height: calc(100% - 100px);
Run Code Online (Sandbox Code Playgroud)

最后,现在我可以继续我的项目了.

  • 请记住,当存在滚动条时,“100%”与“100vw/100vh”**不一样**。100% 是 `innerWidth` (或 `innerHeight`);视口宽度减去滚动条宽度(如果存在),100vw 始终是视口宽度(如果我们使用 vh 单位,则为高度)。示例:假设我们的视口宽度为 500px,浏览器的滚动条宽度为 17px。我们想要放置 2:1 容器 (500 x 250px)。我们不能做`width: 100%; height 50vw` 因为当没有垂直滚动条时容器将具有 500x250px 大小,而当垂直滚动条出现时容器将具有 483x250px 大小。 (3认同)
  • 不错,宽度:计算(100vw - 100px); 用vw代替宽度 (2认同)