【问题标题】:Getting percentages to work in CSS calc() for Firefox and Safari?让百分比在 Firefox 和 Safari 的 CSS calc() 中起作用?
【发布时间】:2016-07-05 07:55:36
【问题描述】:

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

CSS

.MyClass {
    width: calc((100% - 800px) / 2);
    width: -moz-calc((100% - 800px) / 2);
    width: -webkit-calc((100% - 800px) / 2);
}

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

CSS

width: calc((1000px - 800px) / 2);

有什么建议吗?

谢谢。

更新

所以我的预处理器正在创建如下所示的 css:

SCSS

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

CSS

.MyClass {
  width: calc( ( 100% - 800px ) / 2);
  width: -moz-calc(100%-800px/2);
  width: -webkit-calc(100%-800px/2);
}

我已经尝试纠正它,但它似乎仍然无法正常工作。 来自浏览器的代码仍然是:

width: calc((100% - 800px) / 2);

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

【问题讨论】:

  • 你找到解决办法了吗?

标签: css firefox safari


【解决方案1】:

尤里卡。这几天我一直在为此苦苦挣扎。最后发现 100vh 而不是 100% 将使其适用于大多数浏览器。

height: calc(100vh - 100px);

而不是

height: calc(100% - 100px);

终于,我可以继续我的项目了。

【讨论】:

  • 不错,宽度:calc(100vw - 100px);使用 vw 作为宽度
  • 请记住,当有滚动条时,100%100vw/100vh不同的。 100% 是innerWidth(或innerHeight);视口宽度减去滚动条宽度(如果存在),100vw 始终是视口宽度(如果我们使用 vh 单位,则为高度)。示例:假设我们的视口宽度为 500 像素,浏览器的滚动条宽度为 17 像素。我们要放置 2:1 的容器(500 x 250px)。我们不能这样做width: 100%; height 50vw,因为容器在没有垂直滚动条时将有 500x250px 大小,而在垂直滚动条出现时将有 483x250px 大小。
  • 无论如何,当滚动条不能影响我们的界面时,当我们使用容器时,这种方法非常棒。
  • 我们的 UI 不能滚动超过显示的最大高度或最大宽度。只有屏幕区域内的 DIV 容器可以滚动。因此,这是在 Web 应用程序中模拟桌面行为的好方法。 :)
【解决方案2】:

这不起作用的原因是父元素没有定义高度值。

这很奇怪,但它适用于 Chrome,并且不需要定义高度,但 Firefox 不是这样

如果你有:

<div class="parent">
    <div class="child"></div>
</div>

放:

.parent {
    height: 100%;
}

应该没问题。

【讨论】:

    【解决方案3】:

    为我工作..:CSSDeck example --> in Firefox Nightly

    您是否使用了可能会干扰 calc() 的 CSS 预处理器?您是否尝试在受控环境中复制问题(纯 html + css 没有任何脚本等)?

    编辑:还要注意calc(100%-3em) 可能不起作用,而calc(100% - 3em) 应该。

    【讨论】:

    • 如果您展示它在 GA/stable 版本而不是夜间构建中工作,您的答案会更有说服力...
    • @BoltClock,你说得非常正确。但是,caniuse.com/calc 表示该功能自 4.0 以来就已存在于 Firefox 中,这让我相信它也适用于当前的稳定版本。
    猜你喜欢
    • 1970-01-01
    • 2013-12-24
    • 2016-04-13
    • 1970-01-01
    • 2017-08-26
    • 2018-11-26
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多