使用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 或者和背景色相同

详细:

使用CSS3 transform rotate 出现锯齿效果的解决办法_第1张图片
锯齿

代码如下:





    分享图标
    



    

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

使用CSS3 transform rotate 出现锯齿效果的解决办法_第2张图片

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

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

使用CSS3 transform rotate 出现锯齿效果的解决办法_第3张图片
在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;
        }
使用CSS3 transform rotate 出现锯齿效果的解决办法_第4张图片
div.bor
使用CSS3 transform rotate 出现锯齿效果的解决办法_第5张图片
div.container

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

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

修改代码,尝试了一下:

使用CSS3 transform rotate 出现锯齿效果的解决办法_第6张图片
transparent
使用CSS3 transform rotate 出现锯齿效果的解决办法_第7张图片
同色

与本例中的border要求冲突。
若不需要border可以解决。

你可能感兴趣的:(使用CSS3 transform rotate 出现锯齿效果的解决办法)