我如何实现缩放功能,就像浏览器的CTRL +
How can I implement a zoom function like the browser's CTRL +
我想要一个按钮放大(增加字体大小是主要目标,但图像和表格等也是需要的)
有一个zoom css3属性可以做到这一点,最新的webkit浏览器(chrome, safari)支持它。
edit:显然IE6在某种程度上支持它,查看下面的注释
在你的body或container上设置缩放CSS属性。可以像使用jQuery的$('body').css('zoom', '200%');
一样简单。
查看http://jsfiddle.net/Ks6Yn/1/查看示例
如果可用空间较小,下面的代码将页面缩放到1024px = 100%。如果有足够的空间,页面将按原样显示。
https://jsfiddle.net/xgqw5bjo/3/注意,通过jQuery设置样式的版本不工作,因为jQuery处理前缀本身,但在这个解决方案中,我需要控制每一个。
~function () {
var $window = $(window), $body = $("body");
var ie = document.documentMode;
function updateSizes() {
var width = $window.width(), scale = Math.min(width / 1024, 1);
var style = $body[0].style;
style.msZoom = ie === 8 || ie === 9 ? scale : 1;
style.zoom = ie === 10 || ie === 11 ? 1 : scale;
style.mozTransform = "scale(" + scale + ")";
style.oTransform = "scale(" + scale + ")";
style.transform = "scale(" + scale + ")";
}
$window.resize(updateSizes);
updateSizes();
}();
html {
width: 100%;
overflow: hidden;
}
body {
margin: 0;
transform-origin: top left;
}
@supports (transform: scale(1)) {
body {
-ms-zoom: 1 !important;
zoom: 1 !important;
}
}
div {
width: 1024px;
height: 128px;
background: url(//i.stack.imgur.com/eMSCb.png) repeat-x;
background: repeating-linear-gradient(to right, blue, red 256px);
}
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div></div>
理论上,它应该以以下方式工作:
- IE 5.5 - 7 变焦
- IE 8 - 9 -ms-zoom
- IE 10 - 11 transform &ie
Edge 12+ transform & @supports
歌剧11.5 - 12.0 -o-transform
Opera 12.1 transform
Firefox 3.5 - 15 -moz-transform
- Firefox 16+ transform
Firefox 22+ transform(有
@supports
,但没有zoom
)Safari 4 - 8 缩放
Safari 9+ transform &@supports(同时出现)
Chrome 4 - 27 缩放
- Chrome 28 - 35 缩放(有
@supports
,但还没有transform
) - Chrome 36+ transform & @supports
如果我添加-webkit-transform
,它开始工作在Safari 3.1 - 3.2,但会刹车很多其他。
实际上,对于现代浏览器,结果是使用transform
而忽略zoom
。所有现代浏览器(Edge, Firefox, Safari, Chrome)都已经有transform &@支持并符合标准,因此代码不会在将来被破坏。
测试代码:
- 即11
- 边15
- Opera 12.18
- Firefox 50 Safari 5 (Win)
- Safari 10 (Mac)
- Chrome 54,58
浏览器支持的详细信息:
- = http://caniuse.com/壮举css-zoom
- http://caniuse.com/#feat=css-featurequeries(关于
@supports
) - = http://caniuse.com/壮举transforms2d
关于ruSO的答案翻译
一个工作概念是使用JavaScript/jQuery在click eg上加载覆盖CSS样式。
方法1
你需要设置一个变量来存储你的缩放量。
当您应用放大或缩小时,请相应地更改此变量,并更改页面上每个元素的大小,显示为块的元素的宽度和高度以及字体大小。
方法2
有不同的样式表,在缩放值改变的时候加载需要的样式。
方法3
只更改相对于元素缩放级别的类,并为每个缩放类设置一个CSS规则。
不管怎样,我看你做的事不对。
- 在我的浏览器中用类似ctrl+s的PhantomJS保存一个网站
- 在jquery中按Ctrl+F5清除浏览器缓存
- 浏览器大小调整 Ctrl +/- :: 如何操作设置
- 侦听浏览器 Ctrl+F/查找布局修改
- CSS “overflow-x:hidden” 与浏览器 Ctrl+F 水平移出屏幕单词突出显示冲突
- 砌体在移动浏览器(chrome)上不起作用,并且仅在Chrome桌面版本上有效,如果我重新加载(ctrl + f5)页面
- 在使用angular的互联网浏览器之前捕获组合ctrl+n
- 覆盖浏览器's CTRL+F,并将其替换为Silverlight自定义搜索
- 边缘浏览器:防止按住Ctrl键并单击鼠标左键
- 如何在浏览器中隐藏查找栏?(javascript在调用Ctrl+F后取消它)
- 如何通过Ctrl + click禁用打开新的浏览器选项卡
- 如何禁用浏览器快捷键ctrl-N并在按下ctrl-N时触发功能?JS提琴添加
- 如何获取'Ctrl +'在浏览器上使用Javascript的行为
- 任何防止/禁用浏览器中CTRL +快捷键的方法
- 在浏览器上捕获Ctrl+W
- 防止在浏览器中使用ctrl+z
- 我如何实现缩放功能,就像浏览器的CTRL +
- 覆盖浏览器的默认快捷键(Ctrl+anyKey)
- 如何在每个浏览器中检查缩放级别是否低于100%(ctrl和-)
- 有什么方法可以检测osx浏览器javascript中的ctrl+click?没有jQuery