使用CSS3 transform rotate 出现锯齿效果的解决办法

今天,有朋友在学习CSS3的时候碰到了点问题,transform rotate之后出现了一个和背景颜色同色的 “边框” 。
刚看到的时候,也是很好奇,我还没他学的这么仔细,都没遇到过这个问题。
参考:CSS3 transform rotate(旋转)锯齿的解决办法
transform:rotate在手机上显示有锯齿的解决方案大全
这篇文章仅讨论锯齿问题。
解决:
1. 在CSS3 transform属性后加入translateZ(0)
2. 手机上,利用元素外层容器的overflow:hidden; 加上元素margin:-1px;
3. 无需border时,元素border属性颜色设置成 transparent 或者和背景色相同


详细:
锯齿
代码如下:

<!DOCTYPE html>
<html>

<head>
    <title>分享图标</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .container {
            position: relative;
            margin: 5% auto;
            border: 1px solid #cccccc;
            width: 300px;
            height: 300px;
        }

        .bor {
            position: relative;
            top: 2%;
            left: 40%;
            width: 40%;
            height: 40%;
            border: 25px solid white;
            transform: rotate(45deg);
            -webkit-transform: rotate(45deg);
            background-color: black;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="bor">
        </div>
    </div>
</body>

</html>

发现 “边框” 的颜色和背景色相同,元素各值正常如下,并且元素本身已经border,便觉得可能是本身渲染的问题。

经查阅资料,有以下三个方法:

1. 在CSS3 transform属性后加入translateZ(0)

在transform属性后加入translateZ(0)
这是在本例中,最方便的解决办法。
使用CSS3 3D transforms,通过GPU来渲染,能有效的起到抗锯齿效果。
GPU加速是在IE9时才加入的,所以兼容性上有点问题。

2. 利用元素外层容器的overflow:hidden; 加上元素margin:-1px;

修改代码,尝试了一下:

 .container {
		position: relative;
		left: 100px;
		top: 300px;
		overflow: hidden;
}
.bor {
		margin: -1px;
		width: 200px;
		height: 200px;
		transform: rotate(45deg);
		-webkit-transform: rotate(45deg);
		border: 25px solid white;
		background-color: black;
}

div.bor
div.container
在本例中并未作用。
这方案手机上可以,在电脑上会出问题。

3.元素border属性颜色设置成 transparent 或者和背景色相同

修改代码,尝试了一下:
transparent
与本例中的border要求冲突。
若不需要border可以解决。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值