我如何在Firefox和Opera中缩放HTML元素?
zoom
属性可以在IE、Google Chrome和Safari中使用,但在Firefox和Opera中无效。
是否有方法可以在Firefox和Opera中添加此属性?
我如何在Firefox和Opera中缩放HTML元素?
zoom
属性可以在IE、Google Chrome和Safari中使用,但在Firefox和Opera中无效。
是否有方法可以在Firefox和Opera中添加此属性?
缩放和变换比例不是同一件事。它们应用的时间不同。缩放在渲染之前应用,变换在渲染之后应用。这意味着如果您使用宽度/高度= 100%的div嵌套在另一个具有固定大小的div中,如果应用缩放,则内部缩放中的所有内容将收缩或扩大,但如果应用变换,则整个内部div将收缩(即使宽度/高度设置为100%,在变换后也不会是100%)。
对我而言,以下这段代码可以解决缩放转换时的差异,并且可以根据预期的原点进行调整:
zoom: 0.5;
-ms-zoom: 0.5;
-webkit-zoom: 0.5;
-moz-transform: scale(0.5,0.5);
-moz-transform-origin: left center;
使用 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)
- umutesen我会在所有情况下将 zoom
更改为 transform
,因为正如其他答案所解释的那样,它们并不等同。在我的情况下,还需要应用 transform-origin
属性来将项目放置在我想要的位置。
这对我在 Chrome、Safari 和 Firefox 中都有效:
transform: scale(0.4);
transform-origin: top left;
-moz-transform: scale(0.4);
-moz-transform-origin: top left;
zoom: 145%;
-moz-transform: scale(1.45);
使用这个可以更加安全可靠。
我尝试解决这个问题已经一段时间了。Zoom 明显不是解决方案。它在谷歌浏览器上可以工作,在IE上只能部分工作,还会移动整个HTML div;而在火狐浏览器上根本没有效果。
我的解决方案是同时使用缩放和平移,并添加原始高度和宽度,然后设置div本身的高度和宽度:
#miniPreview {
transform: translate(-710px, -1000px) rotate(0rad) skewX(0rad) scale(0.3, 0.3);
transform-origin: 1010px 1429px 0px;
width: 337px;
height: 476px;
显然,将这些更改为您自己的需求。在所有浏览器中给我相同的结果。
唯一正确且符合W3C标准的答案是:使用<html>
元素并使用rem单位。如果你缩小比例(例如scale(0.5)),转换将无法正常工作。
使用:
html
{
font-size: 1mm; /* or your favorite unit */
}
在您的代码中使用“rem”单位(包括<body>
样式),而不是公制单位。 "%"不需要更改。对于所有背景,请设置background-size。为body定义字体大小,该大小可被其他元素继承。
如果发生任何应触发缩放而不是1.0的情况,请更改标记的字体大小(通过CSS或JS)。
例如:
@media screen and (max-width:320pt)
{
html
{
font-size: 0.5mm;
}
}
这样做相当于使用zoom:0.5,在JS和拖放事件期间使用clientX和定位时没有问题。
不要在媒体查询中使用“rem”。
实际上你并不需要缩放,但在某些情况下它可以是现有网站的更快的方法。
在所有浏览器中,它的工作方式并不统一。
我访问了http://www.w3schools.com/html/tryit.asp?filename=tryhtml_pulpitimage,并添加了缩放和-moz-transform样式。我在Firefox、IE和Chrome上运行了相同的代码,得到了三个不同的结果。
<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>
尝试在FireFox中使用以下代码来缩放整个页面
-moz-transform: scale(2);
so Sorry to say fireFox not working well using "-moz-transform: scale(2);"
**
在Firefox中,你无法使用CSS缩放页面。
**