如何使用CSS缩放整个网页?


151

使用Firefox,您只需按一下即可放大整个网页CTRL +。这样做是按比例放大整个网页(字体,图像等)。

如何仅使用CSS复制相同的功能?

是否有类似的东西page-size: 150%(它将使整个页面的部分增加x%?)


7
Firefox的页面缩放功能出现在每种现代浏览器中-复制它似乎毫无意义。
昆汀,2009年

1
我同意戴维。复制此内容似乎毫无意义,因为如今浏览器内置了此功能...
用户

5
对于移动设备来说,这实际上是一个非常有用的功能。现在,许多电话都在增加PPI而不顾及两者之间的差异(当然,iPhone4除外)。
DA。

38
它没有复制它。对于嵌入式div中的页面/元素预览之类的功能,它可能很有用。
RichieHH 2011年

3
页面设计者应该能够为其页面设置默认缩放。我制作的页面很大,但现在由于高分辨率显示而变小了:lonniebest.com/CardTrick我不想重新制作页面,而是希望默认缩放。
Lonnie Best

Answers:


182

您也许可以使用CSS zoom属性-IE 5.5 +,Opera和Safari 4和Chrome支持

我可以使用:CSS缩放

Firefox是唯一不支持Zoom的主流浏览器(此处为bugzilla项),但是您可以在Firefox 3.5中使用“专有” -moz-transform属性

因此,您可以使用:

div.zoomed { 
    zoom: 3; 
    -moz-transform: scale(3); 
    -moz-transform-origin: 0 0;
} 


15
David,该参考文献已经过时-请查看它列出的浏览器版本。当前所有主流浏览器(Firefox除外)均支持CSS Zoom。而且它不比任何-moz- CSS扩展更专有。
乔恩·加洛韦,2009年

3
注意:我认为已经提出的其他解决方案(例如基于em和%的缩放比例)更“纯净”,但不一定适用于大多数Web布局,除非您是从头开始构建的。
乔恩·加洛韦

1
我已经测试过Opera 10b2,但它似乎不支持它。Firefox的夜间行为很奇怪(缩放的片段消失了)。IE5 / 6是越野车。仅在WebKit中工作良好。
Kornel

2
谢谢乔恩,很好的信息!在Firefox -moz-变换规模确实有效,但根据您的使用情况,你可能需要使用-moz-变换原点(CFR纠正元素的位置。developer.mozilla.org/En/CSS/-moz-transform -origin
futtta

80

这是一个比较晚的答案,但是您可以使用

body {
   transform: scale(1.1);
   transform-origin: 0 0;
   // add prefixed versions too.
}

将页面放大110%。尽管有zoom样式,但Firefox仍然可悲地不支持它。

另外,这与您的缩放略有不同。该css transform作品就像图像缩放一样,因此它将放大您的页面,但不会引起重排等。


编辑更新了变换原点。


1
谢谢您,但是在声明之间需要一些分号。另外,当我尝试此操作时,页面向左移动,超过左边距,因此页面的左侧部分不再可见。添加各种相应的“ ... transform-origin:0 0”声明可以解决该问题。
戴夫·伯顿

是的,我应该提到内容已被裁剪transform。感谢您的评论。
kumarharsh

1
我同意@Dave Burton的观点:使用transform-origin: 0 0;我想要的东西。例如,页面缩放到150%: transform: scale(1.5); transform-origin: 0 0;。我相信@kumar_harsh的其他正确答案应该得到纠正。
凯·卡弗

@KaiCarver 如果使用此方法,它将始终导致裁剪。无论您使用哪一点transform-origin。我写的只是使用价值的一个例子。当然,您可以自由地使用transform-origin: 0 0适合自己的使用情况(或者如果您不关心右下角的内容)
kumarharsh

@AngularM您可以共享一个代码片段来显示行为吗?我敢肯定还有其他原因。
kumarharsh

18

如果您的CSS完全围绕exem单元构建,则这可能是可行的。你只需要声明font-size: 150%你的风格bodyhtml。这将导致其他所有长度按比例缩放。但是,您不能以这种方式缩放图像,除非它们也具有样式。

但是,这是一个非常大的,如果大多数网站,反正。


3
那只会改变我的字体大小。CTRL +还提议扩大固定宽度,高度和图像大小。

2
我知道,但是它与纯CSS所能达到的效果非常接近。同样,不仅字体会更改,而且尺寸指定为字体大小倍数的所有内容也会更改。这意味着,在这里使用的一切%emex单位。
乔伊

1
那是不正确的。我已经测试了下面列出的解决方案(zoom + -moz-transform属性),它可以在FF3.5,IE6 +,Safari和Opera上运行。它可以缩放图像和文本。您可以在CSS中缩放页面。
乔恩·加洛韦,2009年

6

正如Johannes所说的-不足以直接对他的回答发表评论-只要将所有元素的“尺寸都指定为字体大小的倍数,就可以做到这一点。”实际上,您使用%,em或ex的所有内容单位”。虽然我认为%是基于包含元素,而不是字体大小。

鉴于它们是由像素组成的,因此通常不会在图像中使用这些相对单位,但是有一个技巧可以使这一点更加实用。

如果定义,body{font-size: 62.5%};则1em等于10px。据我所知,这适用于所有主要浏览器。

然后,您可以使用指定100px的正方形图像,width: 10em; height: 10em;并假设Firefox的缩放比例设置为默认值,则图像将为其自然尺寸。

品牌body{font-size: 125%};和一切-包括图像-将是原始尺寸的两倍。


如果我说身体,我不明白{font-size:62.5%; font-size:125%}-如何将1em定义为10px。浏览器可以简单地忽略第一个字体大小声明,然后简单地使125%= 10px吗?

我想你误会了。您不会同时执行两项操作。62.5 x2 = 125 ...展示了如何通过调整值来缩放事物。
Ape-in​​ago

是的 我应该说过“那么,如果您使用Java脚本设置正文{font-size:125%},则所有页面元素的大小都会加倍”。
e100



1

乔恩·谭(Jon Tan)通过其网站-http://jontangerine.com/做到了这一点, 包括图像在内的所有内容均已在ems中声明。一切。这是达到期望的效果的方式。文本缩放和屏幕缩放几乎产生完全相同的结果。


1

CSS将无法按需缩放,但是如果将CSS与JS结合使用,则可以更改一些值以使页面看起来更大。但是,正如已经说过的那样,此功能是当今现代浏览器中的标准功能:无需复制它。事实上,复制它会减慢您的网站速度(加载更多内容,解析或执行和应用更多JS或CSS等)


它是标准的浏览器功能,但是直接将功能添加到站点意味着您不必依靠(1)用户的专业知识和他们选择的浏览器,以及(2)浏览器特定的说明
Ags1

1

我有以下代码通过CSS属性缩放整个页面。重要的是将body.style.width设置为缩放的倒数,以避免水平滚动。您还必须将transform-origin设置为左上方,以将文档的左上方保持在窗口的左上方。

        var zoom = 1;
        var width = 100;

        function bigger() {
            zoom = zoom + 0.1;
            width = 100 / zoom;
            document.body.style.transformOrigin = "left top";
            document.body.style.transform = "scale(" + zoom + ")";
            document.body.style.width = width + "%";
        }
        function smaller() {
            zoom = zoom - 0.1;
            width = 100 / zoom;
            document.body.style.transformOrigin = "left top";
            document.body.style.transform = "scale(" + zoom + ")";
            document.body.style.width = width + "%";
        }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.