1px元素消失,除非根据(文本)行数放大或缩小



所以这次我有一个相当基本的问题,但这是一个我似乎没有找到一个解决方案,尽管看了其他的答案。

基本的问题是,我有一个div包含文本,有15px填充+ 1px边框设置到它。当div的行数不均匀时,底部边框就会消失;如果是偶数行,就不会。最简单的解决方案是拥有偶数行代码,然后就此收工,但问题是我的设计是为了供其他人使用,而他们中的大多数人并不知道该插槽需要偶数行代码,否则就不会出现漏洞。我是否有办法解决这个问题,让其他人使用它,而不必担心行数?

我曾经有一个类似的问题,涉及webkit动画,导致边界在过渡前后变得模糊(我通过在0px添加webkit模糊过滤器来解决它),但这在这里不起作用…谢谢~(

)

代码片段(您可以在jsfiddle中看到其余部分):

#sidebar {
position:fixed;
width:200px;
padding:15px;
background-color:#fff;
border:1px solid #eee;
top: 50%;
transform: translateY(-50%);
-webkit-filter: blur(0px);
z-index:99999999999999;
}
https://jsfiddle.net/qxv7k564/

在这里你可以看到侧边栏的完整构建,你也可以看到我的第二个边框(我原本有一个border-top设置到描述来达到同样的效果,但它会模糊而不是消失,因为同样的原因,所以我改成了这个)也消失了。删除其他元素似乎并不能改变这个问题。

你强迫Chrome做亚像素演算,这通常有奇怪的行为。

如果你将输入的高度更改为30px,那么90%的缩放可以工作(因为这是27px),但是75%的缩放不行(因为这是22.50 px)。

你也可以通过给边框设置3px的宽度来避免这种情况。在本例中,您将看到不同位置的边框宽度是不同的。

无论如何,最好的解决方案是在输入周围留出更多的空间,这样即使它处于亚像素位置,边框也可以画得干净。

Ref:从栈上的另一个问题中提取

最新更新