css - 转换 : scale"when zoom in/out chrome browser 的意外/不正确缩放大小

标签 css google-chrome css-transforms scaletransform

不正确的缩放尺寸发生在 Webkit 浏览器中,即 Chrome、Safari。我使用的 Chrome 版本是 68。

演示:Codepen Link

@Kaiido 要求的代码

HTML:

<div class="test1"></div>
<div class="test2"></div>

CSS:

.test1 {
  z-index: 100;
  position: fixed;
  top: 10px; 
  left: 10px;
  width: 1px; 
  height: 1px;
  background: blue;
  transform-origin: top left;
  transform: scale(100, 100);
}

.test2 {
  position: absolute;
  top: 0; 
  left: 0;
  width: 100px; 
  height: 100px;
  background: red;
}

在上面的链接中,如果您放大/缩小 chrome,您会看到比例大小不一定与 .test2 div 的固定大小匹配。我希望 scale(100, 100) 的最终大小与 width:100px; 的大小完全相同; height: 100px 缩放后,但显然不是这种情况。

我还在 Retina mac 和 pc 上测试过这个。这与 Chrome 中的行为相同。然而,相同的代码在 Firefox 中进行了测试并且工作正常。

这是某种错误还是我遗漏了什么?谢谢。

最佳答案

这是一个错误...由于这些浏览器舍入坐标以避免抗锯齿而引起的。

因此,当您将缩放级别设置为 120% 时,小方 block 实际上应该渲染为 1.2px*1.2px 方 block 先验变换。

但 webkit 浏览器会将此值四舍五入为 1px,甚至在应用转换之前(我认为 FF 也会这样做,但可能在转换之后)。

因此,在缩放到 150% 之前,您不会看到任何变化,现在它将四舍五入到 2px,并且您的蓝色方 block 将变得比相同的 100px*100px 更大。

只有在 200% 时它们才会再次匹配。

除了让他们知道并避免使用如此小的元素之外,没有什么可以避免的;-)(使用 10px*10px 正方形并将变换缩放级别除以 10 可以防止此错误)。

关于css - 转换 : scale"when zoom in/out chrome browser 的意外/不正确缩放大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52158805/

相关文章:

css -::在 Firefox 中输入之前

javascript - Impress.js 和使用 HTML5 数据属性代替 CSS 转换

html - 无法使用html和css水平显示菜单

javascript - 为什么 .hasClass 函数不起作用?

javascript - 使用 JavaScript 启动转换

android - 如何在 webview 和 chrome 中同步 cookie android

windows - IE 比 Chrome 对 Unicode 字符的支持更好?

javascript - 如何使用转换将元素位置从 x1 转换为 x2?

html - 分区旋转不起作用

css - 网格系统如何补偿列高的变化?