使用top: 50%和transform: translate(-50%)垂直居中会导致双1px下划线的原因是由于浏览器在渲染元素时的处理方式。
当使用top: 50%和transform: translate(-50%)来实现垂直居中时,元素的位置会相对于其父元素的高度进行定位。top: 50%将元素的顶部定位在父元素的中间位置,而transform: translate(-50%)则将元素向上移动自身高度的一半,使其垂直居中。
然而,由于浏览器在渲染元素时使用的是子像素渲染,即将元素的宽度或高度分为多个子像素进行渲染,这就导致了一个问题:当元素的高度为奇数像素时,经过top: 50%和transform: translate(-50%)定位后,元素的位置会存在一个子像素的偏移。
这个子像素的偏移会导致元素的底部边界与父元素的底部边界之间存在一个1px的空隙,同时元素的顶部边界与父元素的顶部边界之间也存在一个1px的空隙,从而形成了双1px下划线的效果。
为了解决这个问题,可以采用以下两种方法之一:
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云