我只想歪曲父母并将歪斜放在孩子身上。
示例: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:
Chrome:
Firefox与Chrome:
或通过Photoshop缩放
实例: http://jsfiddle.net/1tpj1kka/
有什么想法吗?
注意!!! :web-tiki的答案是另一种防止问题的解决方案。但如果有人回答了一个真正的解决方案来解决这个偏斜问题(真正的修复),我会接受答案。
答案 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属性。这将迫使你的文字消除锯齿,从而使模糊不那么重要。
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;