Summary: | -webkit-min-device-pixel-ratio selector not changing on zoom event | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Charles Pritchard <chuck> | ||||||
Component: | CSS | Assignee: | Nobody <webkit-unassigned> | ||||||
Status: | NEW --- | ||||||||
Severity: | Normal | CC: | ahmad.saleem792, ap, bfulgham, hyatt, kenneth, koivisto, mateusz.karpow, phiw2, simon.fraser, thorton, timdream, webkit-bug-importer, wenson_hsieh, zalan | ||||||
Priority: | P2 | Keywords: | InRadar | ||||||
Version: | 528+ (Nightly build) | ||||||||
Hardware: | PC | ||||||||
OS: | OS X 10.5 | ||||||||
Attachments: |
|
Description
Charles Pritchard
2010-12-16 08:54:12 PST
This works for Firefox 4, when using browser zoom: // http://kb.mozillazine.org/Toolkit.zoomManager.zoomValues #canvas.CompatibilityMozScreen { width: 1px; } @media all and (min--moz-device-pixel-ratio: .3) { #canvas.CompatibilityMozScreen { width: .3px; } } @media all and (min--moz-device-pixel-ratio: .5) { #canvas.CompatibilityMozScreen { width: .5px; } } @media all and (min--moz-device-pixel-ratio: .67) { #canvas.CompatibilityMozScreen { width: .67px; } } This does not work in WebKit: @media all and (-webkit-min-device-pixel-ratio: .8) { #canvas.CompatibilityMozScreen { width: .8px; } } @media all and (-webkit-min-device-pixel-ratio: 1) { #canvas.CompatibilityMozScreen { width: 1px; } } @media all and (-webkit-min-device-pixel-ratio: 2) { #canvas.CompatibilityMozScreen { width: 2px; } } Currently, in webkit, I must look at window.innerWidth / window.outerWidth or some document.body metrics in comparison. Microsoft simply exposes the values in window.screen. WebKit only exposes window.devicePixelRatio as a value other than 1, on mobile distributions. I need the current 'zoom' of the user, so that I can show them crisp/clear renderings in <canvas> and use alternate image resources. This is an important issue for accessibility. Mozilla has a different model for their window.*width mechanics than webkit. This split happened many years ago, and should not get-in-the-way of fixing the issue I'm bringing forward. Mozilla does not expose a mutated devicePixelRatio directly, they require the CSS hack above to access the data. They do expose it directly to trusted scripts (browser extensions). If there is a "consensus" standard, it's the CSS selectors. Otherwise, follow Microsoft's route, of simply putting the X dpi / Y dpi in the window.screen object. I don't see a need to create a third option. -Charles Based on a thread on webkit-dev, it looks like implementing Microsoft's window.screen extensions is a decent route to take. http://msdn.microsoft.com/en-us/library/ms535868(v=vs.85).aspx Created attachment 409756 [details]
testcase.html
Alternative test case, zoom the page with Cmd++ and Cmd+- should print new logs. This works on Firefox and Chrome but not macOS.
* This works on Firefox and Chrome but not Safari on macOS. Created attachment 459870 [details]
Safari 15.5 not matching with other browsers
I am able to reproduce the bug using latest Safari 15.5 on macOS 12.4. Please refer to the attached screenshot for the bug across three browsers (i.e., Firefox Nightly, Chrome Canary and Safari).
|