在 Firefox 中使用 CSS Scale 时,元素保持原始位置

Posted

技术标签:

【中文标题】在 Firefox 中使用 CSS Scale 时,元素保持原始位置【英文标题】:When using CSS Scale in Firefox, element keeps original position 【发布时间】:2011-12-20 07:21:53 【问题描述】:

在 Firefox 中使用 scale 时,被缩放的元素会正确缩放。问题是,它的位置好像没有缩放。

这在 Chrome 中运行良好,在 IE、Safari 和 Opera 中也可能。这些浏览器都支持 CSS 缩放属性,而 Firefox 不支持。对于 Firefox,我使用 -moz-transform: scale(0.3);.

这是我的 CSS:

#overview .page-content 
    zoom: 0.3;
    -moz-transform: scale(0.3);

这应该是它的样子(就像在 Chrome 中一样):

这是它不应该的样子(就像在 Firefox 中一样):

有人知道如何解决这个问题吗?或者也许是一种解决方法?

【问题讨论】:

添加 position: absolute-moz-transform-origin: 0 0 可能会有所帮助。 成功了!谢谢:D 【参考方案1】:

正如thirtydot 提到的:

position: absolute;
-moz-transform-origin: 0 0;

这样就可以了。

【讨论】:

感谢您发布此内容 - 您不想看到我试图在缩放后重新定位元素的数学运算! 如果我需要缩放整个身体,那么解决方案是什么?【参考方案2】:

如果绝对定位不是一个选项 - 并且知道相应的浏览器支持 - display: table-cellmin-width 定义,应该需要,也可以做到这一点。

例如这帮助我在不同的屏幕分辨率下很好地缩放客户徽标。

【讨论】:

【参考方案3】:

我添加了 -transform-origin: 0 0;还是不行。

不知何故在 Chrome 中它崩溃到 -webkit-transform-origin: 0;

所以我把它改成了 -transform-origin: top left;现在可以正常使用了。

完整代码:

-moz-transform: scale(50%);
-moz-transform-origin: top left;
-o-transform: scale(50%);
-o-transform-origin: top left;
-webkit-transform: scale(50%);
-webkit-transform-origin: top left;

【讨论】:

以上是关于在 Firefox 中使用 CSS Scale 时,元素保持原始位置的主要内容,如果未能解决你的问题,请参考以下文章

css 图像最大宽度不适用于 Firefox / IE

Firefox中带有缩放变换的CSS过渡效果后的图像移动/跳跃

Firefox 上的 CSS 缩放转换问题

zoom与scale的异同点

css zoom和transform:scale的区别

CSS 文本抖动 firefox