FirefoxとOperaでHTML要素をズームするにはどうすればよいですか?


82

FirefoxとOperaでHTML要素をズームするにはどうすればよいですか?

このzoomプロパティはIE、Google Chrome、Safariで機能しますが、FirefoxとOperaでは機能しません。

このプロパティをFirefoxとOperaに追加する方法はありますか?


1
私はあなたにかなり徹底的に答えるこの質問を紹介したいと思います。
ベン

回答:


80

このコードを試してください、これはうまくいくでしょう:

-moz-transform: scale(2);

これを参照することができます。


2
ええ、これは完璧に機能しています。-moz-transformスケーリング係数をパーセンテージに変更する方法はありますか

10進形式のパーセンテージです。(1 = 100%2 = 200%0.2 = 20%)しかし、パーセンテージ表記も使用できると思います。w3.org/TR/css3-values/#percentages
sholsinger

47
これに伴う問題は、固定位置要素がある場合です。ズームは、スケールの変換とは異なる方法で機能します。
トムロジェロ2012

3
また... ffがズームをサポートするとどうなりますか?このダブルズームはありますか?これはソリューションimoのようには見えません。
Cory Mawhorter 2013年

これはスプライト画像では機能しませんが、実際には画像の特定の部分を拡大する必要があります。
コリンリケル2018

53

ズームと変換スケールは同じものではありません。それらは異なる時間に適用されます。ズームはレンダリングが行われる前に適用され、変換後です。この結果、幅/高さ= 100%が固定サイズの別のdiv内にネストされたdivを取得した場合、ズームを適用すると、内側のズーム内のすべてが縮小または拡大しますが、変換を適用すると、全体が変換されます。内部divは縮小します(幅/高さが100%に設定されていても、変換後に100%になることはありません)。


35

私にとって、これはズームとスケール変換の違いに対抗するために機能し、目的の原点に合わせて調整します。

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);
};

usege:

$(selector).scale(0.5);

注意:

クラスを持つラッパーを作成しますscaleContainer。コンテンツをスタイリングするときは、それに注意してください。


スケーリングされた要素の境界線の幅を処理することで、これをさらに素晴らしいものにすることができます。.width($(this).data('originalWidth') * x + borderWidth)
umutesen20年

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

より安全にするためにこれを使用してください


10
これにより、Webkitが2倍にズームされます。ズームで拳、スケールで2番目
Ales Ruzicka 2013年

5

他の回答で説明されているように、それらは同等ではないので、私はすべての場合に変更zoomtransformます。私の場合transform-origin、私が望む場所にアイテムを配置するためにプロパティを適用する必要もありました。

これは、Chome、Safari、Firefoxでうまくいきました。

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

1

すべてのブラウザで同じように機能するわけではありません。私はにに行ってきました:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_pulpitimageとズームと-moz-変換のためのスタイルを追加しました。Firefox、IE、Chromeで同じコードを実行したところ、3つの異なる結果が得られました。

<html>
<style>
body{zoom:3;-moz-transform: scale(3);}
</style>
<body>

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

</body>
</html>

1

私はこれをしばらくの間誓っています。ズームは間違いなく解決策ではありません。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;

明らかに、これらを自分のニーズに合わせて変更してください。すべてのブラウザで同じ結果が得られました。


これが唯一の正解です!スケールだけでは、要素の元のサイズは変更されません。
HonzaZidek20年

1

このコードを試して、FireFoxでページ全体をズームしてください

-moz-transform: scale(2);

このコードを使用している場合、yおよびxスクロールでスケーリングされたページ全体が適切にズームされません

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

****

Firefoxでcssを使用してページをズームすることはできません。

****


0

これはあなたにとって正しく機能しますか?:

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

0

私にとって、これはIE10、Chrome、Firefox、Safariでうまく機能します。

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

これにより、すべてのコンテンツが50%に拡大されます。


0

正しいW3C互換の答えは次のとおりです。 <html>オブジェクトとレムだけです。スケールダウンすると、変換が正しく機能しません(たとえば、scale(0.5))。

使用する:

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

コードでは、<body>メートル単位の代わりに「rem」単位(のスタイルを含む)を使用します。「%」は変更なし。すべての背景にbackground-sizeを設定します。他の要素に継承されるbodyのフォントサイズを定義します。

1.0以外のズームを起動する条件が発生した場合は、タグのフォントサイズを変更します(CSSまたはJSを介して)。

例えば:

@media screen and (max-width:320pt)
{
   html
   {
      font-size: 0.5mm; 
   }
}

これにより、clientXを使用したJSやドラッグアンドドロップイベント中の配置に問題なくzoom:0.5と同等になります。

メディアクエリで「rem」を使用しないでください。

ズームは実際には必要ありませんが、場合によっては、既存のサイトの方法を高速化できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.