gpt4 book ai didi

html - <1px 边框问题在 Safari 11.1.2

转载 作者:行者123 更新时间:2023-11-28 02:28:51 24 4
gpt4 key购买 nike

我遇到了一个我以前从未见过的奇怪问题。

我正在使用 SVG 在用户头像上创建径向删除 :hover:focus 效果:

Working in Chrome

我设计/开发的所有东西都是 8px 网格。下面是我的标记和 CSS。

/* css */
.avatar {
position: relative;
box-sizing: border-box;
display: block;
padding: 2px;
border: 1px solid #c9c9c9;
border-radius: 100%;
}
.avatar:focus {
outline: 1px dashed #1c1c1c;
}
.avatar--l {
width: 48px;
height: 48px;
}
.avatar__ring {
position: absolute;
top: -1px;
left: -1px;
}
.avatar--l .avatar__ring {
width: 48px;
height: 48px;
}
.avatar__ring__stroke {
transform: rotate(-90deg);
transform-origin: 50% 50%;
stroke: #11a0ad;
stroke-width: 1;
fill: none;
transition: all 500ms ease-in-out;
}
.avatar:hover .avatar__ring__stroke,
.avatar:focus .avatar__ring__stroke{
stroke-dashoffset: 0;
}
.avatar--l .avatar__ring__stroke {
stroke-dasharray: 150.72; /* 48 * 3.14 */
stroke-dashoffset: 150.72; /* 48 * 3.14 */
}
.avatar__img {
width: 100%;
height: 100%;
border-radius: 100%;
}
<a class="avatar avatar--l avatar--error" href="https://www.example.com" title="Lexis Fulco">
<svg class="avatar__ring" viewBox="0 0 48 48">
<circle class="avatar__ring__stroke" cx="24" cy="24" r="23.5"></circle>
</svg>
<div class="avatar__img" style="background: url('https://api.adorable.io/avatars/178/abott@adorable.png') center center / cover no-repeat, white;"></div>
</a>

如上面的示例 GIF 所示,这在某些浏览器中运行良好 - 特别是 Chrome 68.0.3440.106 和 Firefox 61.0.2。但是,在 Safari 11.1.2 中我没有得到想要的结果:

Not pixel-perfect in Safari

蓝色 svg 环间歇性地与下面的灰色边框对齐(注意它在 Y 轴上偏离了 1px 并且在环的底部暴露了一部分灰色边框)。

当我在 Safari 中查看元素的盒模型时,我得到了一个有趣的结果:

Safari box model

元素本身以及元素的 border 的值为 ~47.99~0.99,这与我所知道的一切背道而驰在主题上是正确的:“浏览器的最小度量单位最终是单个像素 (1px)”。

比较 Chrome 或 Firefox 中的盒子模型,我得到了预期的结果:所有整数都符合我声明的 CSS。

所以我的问题:

  • 浏览器什么时候可以渲染小于 1px 的元素?
  • 为什么这个 svg 无视我在 Safari 中的 css 声明,而不像在 Chrome 和 Firefox 中那样从元素半径的中心删除?

编辑:

有趣的是,在使用 Safari 查看此问题时,我无法在我提供的片段中重现该问题。但是,其他属性也具有相同的浮点不精度:

Strange subpixel rendering

最佳答案

因此,唯一比不解决开发问题更烦人的是在没有解释如何/为什么的情况下解决它。

随着我的调查,这个问题越来越严重。当我发布问题时,我忽略了我在 React.js 环境中工作,因为我认为它不相关(愚蠢的错误)。

运行一些隔离测试后,我确定在使用静态代码(在 React.js 环境之外)时无法在 Safari 中重现该问题。就好像浮点值从 React.js 环境中泄漏到 Safari 的计算 CSS 中一样。

在尝试了几乎所有其他方法之后,我重新启动了我的机器,现在,在任何情况下都无法在 Safari 中重现该问题。

只是表明询问“您是否尝试过在墙上打开和关闭它?”的重要性。在进行任何其他调查之前;)

我希望拔掉头发后能把我所有的头发都放回去。

关于html - <1px 边框问题在 Safari 11.1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52178717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com