Chrome:向后倾斜时文字模糊:歪斜(-10度) - >歪斜(10deg)

时间:2014-12-16 09:34:25

标签: css css3 google-chrome css-transforms skew

我只想歪曲父母并将歪斜放在孩子身上。

示例:HTML

<div class="parent"> <!-- skew(-10deg) -->
    <div class="child">Hello</div> <!-- skew(10deg) (skew back) -->
</div>

示例:CSS

.parent {
    transform: skew(-10deg);
}
.child {
    transform: skew(10deg);
}

使用Firefox,Safari,里面的文字似乎没问题。但 Chrome Opera 有点模糊

我必须使用-webkit-backface-visibility: hidden;来缩小Chrome中的缩小框

Firefox:

Firefox

Chrome:

Chrome

Firefox与Chrome:

FirefoxVSChrome

或通过Photoshop缩放

FirefoxVSChromeZoomed

实例: http://jsfiddle.net/1tpj1kka/

有什么想法吗?


注意!!! :web-tiki的答案是另一种防止问题的解决方案。但如果有人回答了一个真正的解决方案来解决这个偏斜问题(真正的修复),我会接受答案。

3 个答案:

答案 0 :(得分:7)

使用webkit浏览器进行2d或3d变换后的“模糊文本”为discused many times。但在您的情况下,您可以仅对伪元素应用转换,以便您的文本不受skew属性的影响。

它还会让您在标记中只使用一个标记:

@import url(https://fonts.googleapis.com/css?family=Oswald);
body{color:#fff;font-weight: bold;font-size:50px;font-family:'Oswald',sans-serif;}

.parent {
    width: 300px;
    overflow: hidden;
    padding-left: 5%;
    position:relative;
}

.parent::before {
    content :'';
    position:absolute;
    top:0;left:0;
    width:100%; height:100%;
    background: rgba(90,190,230,0.9);
    transform-origin:0 0;
    transform:skew(-10deg);
    z-index:-1;
}
<div class="parent">
    Hello
</div>

答案 1 :(得分:2)

在下面的转换之前添加'translateZ(0)'会强制gpu重新渲染文本并消除Chrome上的模糊现象。

此:

transform:  translateZ(0) skew(-10deg);

不是这个:

transform: skew(-10deg);

答案 2 :(得分:1)

您可以尝试text-rendering: geometricPrecision CSS属性。这将迫使你的文字消除锯齿,从而使模糊不那么重要。

&#13;
&#13;
inp.onchange = function(){
   document.querySelector('.child').classList.toggle('geo');
  }
&#13;
@import url(https://fonts.googleapis.com/css?family=Oswald);body{color:#fff;font-weight:bold;font-size:50px;font-family:'Oswald',sans-serif;}

.geo{
    text-rendering: geometricPrecision;
  }
.parent {

  transform: skew(-10deg);
  -webkit-backface-visibility: hidden;  
  width:300px;padding-left:15%;margin-left:-15%;overflow:hidden;
}

.child {
  transform: skew(10deg);  
  width:300px;background: rgba(90, 190, 230, 0.9);padding-left: 5%;padding-right: 15%;
}
&#13;
<div class="parent"> <!-- skew(-10deg) -->
    <div class="child geo">Hello</div> <!-- skew(10deg) (skew back) -->
</div>
<input type="checkbox" id="inp" checked="true"/> geometricPrecision
&#13;
&#13;
&#13;