如何在 Firefox 和 Opera 中缩放 HTML 元素?

Posted

技术标签:

【中文标题】如何在 Firefox 和 Opera 中缩放 HTML 元素?【英文标题】:How can I zoom an HTML element in Firefox and Opera? 【发布时间】:2011-05-02 06:00:52 【问题描述】:

zoom 属性在 IE、Google Chrome 和 Safari 中有效,但在 Firefox 和 Opera 中无效。

有什么方法可以将此属性添加到 Firefox 和 Opera 中吗?

【问题讨论】:

我会把你推荐给this question,它会非常彻底地回答你的问题。 【参考方案1】:

试试这段代码,这会奏效:

-moz-transform: scale(2);

您可以参考this。

【讨论】:

是的,这是完美的。有什么方法可以将 -moz-transform 比例因子更改为百分比 十进制百分比。 (1 = 100% 2 = 200% 0.2 = 20%) 但我相信你也可以使用百分比表示法。 w3.org/TR/css3-values/#percentages 这个问题是当你有固定位置的元素时。缩放的工作方式与变换比例不同。 另外...当 ff 支持缩放时会发生什么?这会放大倍数吗?这似乎不是 imo 的解决方案。 这不适用于精灵图像,但我们实际上需要放大图像的特定部分。【参考方案2】:

它并非在所有浏览器中都以统一的方式工作。 我去了:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_pulpitimage 并添加了缩放和-moz-transform 的样式。我在 firefox、IE 和 chrome 上运行了相同的代码,得到了 3 个不同的结果。

<html>
<style>
bodyzoom:3;-moz-transform: scale(3);
</style>
<body>

<h2>Norwegian Mountain Trip</h2>
<img border="0" src="/images/pulpit.jpg"   />

</body>
</html>

【讨论】:

【参考方案3】:
zoom: 145%;
-moz-transform: scale(1.45);

使用它来更安全

【讨论】:

这会在 webkit 中放大 2 倍。放大拳头,按比例尺秒【参考方案4】:

缩放和变换比例不是一回事。它们在不同的时间应用。缩放在渲染发生之前应用,变换 - 之后。这样做的结果是,如果您将宽度/高度 = 100% 的 div 嵌套在另一个 div 中,并且大小固定,如果您应用缩放,则内部缩放中的所有内容都会缩小或增长,但如果您应用变换整个内部 div 会缩小(即使宽度/高度设置为 100%,但在转换后它们不会是 100%)。

【讨论】:

【参考方案5】:

这是否适合您? :

zoom: 145%;
-moz-transform: scale(1.45);
-webkit-transform: scale(1.45);
scale(1.45);
transform: scale(1.45);

【讨论】:

【参考方案6】:

对我来说,这适用于 IE10、Chrome、Firefox 和 Safari:

   #MyDiv>*
   
        zoom: 50%;
        -moz-transform: scale(0.5);
        -webkit-transform: scale(1.0);
   

这会将所有内容放大到 50%。

【讨论】:

【参考方案7】:

对我来说,这可以抵消缩放和缩放变换之间的差异,调整所需的预期原点:

zoom: 0.5;
-ms-zoom: 0.5;
-webkit-zoom: 0.5;
-moz-transform:  scale(0.5,0.5);
-moz-transform-origin: left center;

【讨论】:

【参考方案8】:

请改用scale!经过多次研究和测试,我制作了这个插件来实现跨浏览器:

$.fn.scale = function(x) 
    if(!$(this).filter(':visible').length && x!=1)return $(this);
    if(!$(this).parent().hasClass('scaleContainer'))
        $(this).wrap($('<div class="scaleContainer">').css('position','relative'));
        $(this).data(
            'originalWidth':$(this).width(),
            'originalHeight':$(this).height());
    
    $(this).css(
        'transform': 'scale('+x+')',
        '-ms-transform': 'scale('+x+')',
        '-moz-transform': 'scale('+x+')',
        '-webkit-transform': 'scale('+x+')',
        'transform-origin': 'right bottom',
        '-ms-transform-origin': 'right bottom',
        '-moz-transform-origin': 'right bottom',
        '-webkit-transform-origin': 'right bottom',
        'position': 'absolute',
        'bottom': '0',
        'right': '0',
    );
    if(x==1)
        $(this).unwrap().css('position','static');else
            $(this).parent()
                .width($(this).data('originalWidth')*x)
                .height($(this).data('originalHeight')*x);
    return $(this);
;

使用:

$(selector).scale(0.5);

注意:

它将创建一个带有 scaleContainer 类的包装器。在设计内容时注意这一点。

【讨论】:

您可以通过处理缩放元素的边框宽度来使这更加棒。.width($(this).data('originalWidth') * x + borderWidth)【参考方案9】:

我已经为此发誓有一段时间了。 Zoom 绝对不是解决方案,它在 chrome 中工作,它在 IE 中部分工作,但移动整个 html div,firefox 没有做任何事情。

对我有用的解决方案是同时使用缩放和平移,并添加原始高度和重量,然后设置 div 本身的高度和重量:

#miniPreview 
transform: translate(-710px, -1000px) rotate(0rad) skewX(0rad) scale(0.3, 0.3);
transform-origin: 1010px 1429px 0px;
width: 337px;
height: 476px;

显然根据您自己的需要更改这些内容。它在所有浏览器中都给了我相同的结果。

【讨论】:

这是唯一正确的答案!单独缩放不会改变元素的原始大小。 这是帮助我解决问题的唯一答案,即我想在保持相同宽度的同时放大/缩小元素,以便更多更小的元素可以放在同一行。我所要做的就是将 CSS 宽度 % 缩放为与 CSS 比例因子成反比【参考方案10】:

在所有情况下,我都会将zoom 更改为transform,因为正如其他答案所解释的那样,它们并不等同。在我的情况下,还需要应用 transform-origin 属性来放置我想要的项目。

这在 Chome、Safari 和 Firefox 中对我有用:

transform: scale(0.4);
transform-origin: top left;
-moz-transform: scale(0.4);
-moz-transform-origin: top left;

【讨论】:

【参考方案11】:

只有正确且与 W3C 兼容的答案是:&lt;html&gt; object 和 rem。如果按比例缩小(例如 scale(0.5)),转换将无法正常工作。

用途:

html

   font-size: 1mm; /* or your favorite unit */

并在您的代码中使用“rem”单位(包括&lt;body&gt; 的样式)而不是公制单位。 "%"s 没有变化。为所有背景设置背景大小。定义body的font-size,由其他元素继承。

如果发生任何会触发缩放而不是 1.0 的情况,请更改标记的字体大小(通过 CSS 或 JS)。

例如:

@media screen and (max-width:320pt)

   html
   
      font-size: 0.5mm; 
   

这相当于 zoom:0.5 在带有 clientX 和拖放事件定位的 JS 中没有问题。

不要在媒体查询中使用“rem”。

您确实不需要缩放,但在某些情况下,它可以为现有网站提供更快的方法。

【讨论】:

【参考方案12】:

尝试使用此代码在 fireFox 中缩放整个页面

-moz-transform: scale(2);

如果我使用此代码,则整个页面用 y 和 x 滚动无法正确缩放

so Sorry to say fireFox not working well using "-moz-transform: scale(2);"

**

只是你不能在 fireFox 中使用 css 来缩放你的页面

**

【讨论】:

以上是关于如何在 Firefox 和 Opera 中缩放 HTML 元素?的主要内容,如果未能解决你的问题,请参考以下文章

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

前端如何实现div在固定角度缩放

.webm 视频可在 Chrome 和 Opera 中播放,但不能在 Firefox 中播放

我如何只能在任何现代浏览器(如 chrome、firefox、safari、opera、IE 以及任何版本的通用 javascript [重复])中关闭当前选项卡

在 180º firefox 和 opera 中旋转 svg matrix3d 变换 是

如何阻止 Opera 缓存页面?