css transform导致像素模糊的问题解决办法

最近做项目做一个弹出框,然后垂直居中定位,发现很模糊,当时还可以是我屏幕问题,然后在同事上看也是一样模糊,然后发现是CSS的transform: translate(-50%,-50%)导致的,英文这种垂直居中会出现小数点像素,像素是基数的时候就会糊掉,偶数的时候不会!其实原理很简单:元素的边缘应该和像素点对齐,但是经过 CSS translate 后,计算的结果并非整数的像素点,导致本来一个像素能渲染的内容,没有完全归纳在其像素点内,导致出现模糊的情况!

方法1:

如果是固定的宽高,你可以把宽高各加0.5或者1px,让它变成偶数就不会模糊!

方法2:

在父元素上改成flex布局,让他水平垂直居中,这种方法简单粗暴(推荐!)

.ngdialog.ngdialog-theme-default {
    padding-bottom: 0;
    padding-top: 0;
    display: flex;
    justify-content: center;//水平居中
    align-items: center;//垂直居中
}
方法3:

在translate XY方法各加0.5px,用calc函数去计算!

.ngdialog.ngdialog-theme-default .ngdialog-content {
    position: absolute;
    top: 50%;
    left: 50%;
    transfrom:translate(calc(-50% + 0.5px),calc(-50% + 0.5px));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值