更改浏览器缩放级别
我需要在我的网站上创建 2 个按钮来更改浏览器缩放级别 (+) (-)。 由于图像大小和布局问题,我请求浏览器缩放而不是 css 缩放。
嗯,这可能吗? 我听到了相互矛盾的报道。
I have need to create 2 buttons on my site that would change the browser zoom level (+) (-). I'm requesting browser zoom and not css zoom because of image size and layout issues.
Well, is this even possible? I've heard conflicting reports.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
尽管在 Firefox 中不起作用,但在 IE 和 chrome 中可以使用:
Possible in IE and chrome although it does not work in firefox:
我想说在大多数浏览器中这是不可能的,至少在没有一些额外的插件的情况下是不可能的。 无论如何,我会尽量避免依赖浏览器的缩放,因为实现各不相同(某些浏览器仅缩放字体,其他浏览器也缩放图像等)。 除非你不太关心用户体验。
如果您需要更可靠的缩放,请考虑使用 JavaScript 和 CSS 或可能在服务器端缩放页面字体和图像。 图像和布局缩放问题可以通过这种方式解决。 当然,这需要做更多的工作。
I would say not possible in most browsers, at least not without some additional plugins. And in any case I would try to avoid relying on the browser's zoom as the implementations vary (some browsers only zoom the fonts, others zoom the images, too etc). Unless you don't care much about user experience.
If you need a more reliable zoom, then consider zooming the page fonts and images with JavaScript and CSS, or possibly on the server side. The image and layout scaling issues could be addressed this way. Of course, this requires a bit more work.
尝试一下这是否适合您。 这适用于 FF、IE8+ 和 Chrome。 else 部分适用于非 Firefox 浏览器。 尽管这为您提供了缩放效果,但它实际上并没有在浏览器级别修改缩放值。
Try if this works for you. This works on FF, IE8+ and chrome. The else part applies for non-firefox browsers. Though this gives you a zoom effect, it does not actually modify the zoom value at browser level.
您可以使用 CSS3 缩放功能,但我还没有使用 jQuery 对其进行测试。 现在就尝试并让您知道。
更新:测试过,有效,但很有趣
You can use the CSS3 zoom function, but I have not tested it yet with jQuery. Will try now and let you know.
UPDATE: tested it, works but it's fun
我找不到更改实际浏览器缩放级别的方法,但您可以使用 CSS 变换:scale() 来非常接近。 这是我基于 JavaScript 和 jQuery 的解决方案:
I could't find a way to change the actual browser zoom level, but you can get pretty close with CSS transform: scale(). Here is my solution based on JavaScript and jQuery:
正如接受的答案提到的,您可以将DOM中元素的fontSize css属性一一放大,以下代码供您参考。
as the the accepted answer mentioned, you can enlarge the fontSize css attribute of the element in DOM one by one, the following code for your reference.
最简单的解决方案
要获得窗口缩放(不是CSS缩放),有一些方法,但最简单的方法如下:
另一种方法
另一种方法是
窗口.devicePixelRatio
,但它可能会显示不正确的值,具体取决于屏幕分辨率(特别是多个屏幕)。Easiest Solution
To get window zoom (not CSS zoom), there are some ways, but the easiest of them is as follows:
Another Way
An alternative way is
window.devicePixelRatio
, but it may display incorrect value, depending on screen resolution (specially with multiple screens).browser.tabs.setZoom() 应该处理这种情况。
请参阅 MDN 文档:https:// /developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/setZoom
browser.tabs.setZoom()
should handle this case.See the MDN Docs: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/setZoom
在 Firefox 中不会改变缩放,只会改变比例!
in Firefox will not change the zoom only change scale!!!
您可以使用 Window.devicePixelRatio 和 < a href="https://developer.mozilla.org/en-US/docs/Web/API/Window/matchMedia" rel="nofollow noreferrer">
Window.matchMedia()
You can use Window.devicePixelRatio and
Window.matchMedia()
您可以定位 CSS 的哪一部分缩小和缩小,或者整个 document.body.style.zoom
您可以设置最大和最小缩放级别。 这意味着,多次点击按钮 (+) 或 (-) 将不会放大或缩小。
现在使按钮 (+) 和 (-) 起作用。
由于 style.zoom 不适用于 Firefox,请考虑使用 style.transform = scale(x,y)。
You can target which part of CSS zooming out and in, or the entire document.body.style.zoom
You can set the maximum and minimum zoom levels. Meaning, more clicks on the button (+) or (-) will not zoom in more or zoom out more.
Now make the buttons (+) and (-) work.
Since style.zoom doesn't work on Firefox, consider using style.transform = scale(x,y).
我通过下面的代码修复了。
HTML:
TS:
我希望这适用于所有缩放级别,并且可以考虑使用所有样式。
有用的链接:
https://css-tricks.com/ can-javascript-detect-the-browsers-zoom-level/
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images
I fixed by the below code.
HTML:
TS:
I Hope this will work with all zoom levels and it can be considered with all styles.
Useful links:
https://css-tricks.com/can-javascript-detect-the-browsers-zoom-level/
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Backgrounds_and_Borders/Resizing_background_images