我正在使用
-webkit-transform: skew(-15deg,0deg);
歪曲一个div,然后
-webkit-transform: skew(15deg,0deg);
歪斜含有文字的孩子.在谷歌浏览器中,倾斜看起来很丑陋和像素化,所以我使用
-webkit-backface-visibility: hidden;
让它看起来不错.现在容器倾斜非常好,内部文本是“未被歪曲”但文本本身是模糊和丑陋的! (问题仅存在于使用-webkit的chrome中)
有任何想法如何使文字再次清晰?
HTML
<div class="mainBodyItemBox"> <div class="mainBodyItemImage"> <img src="http://upload.wikimedia.org/wikipedia/commons/6/6c/2012_Olympic_Football_-_Men's_tournament_-_Honduras_Vs_Morocco.jpg"> </div> <div class="mainBodyItemDecorator"></div> <div class="mainBodyItemText">PEC Zwolle v FC Groningen Tickets <br> <span class="mainBodyItemType">Football</span> <span class="mainBodyItemTime"><strong>04 Apr 2014</strong> | 21:00</span> </div> </div>
CSS
.mainBodyItemBox { background-color: #f5f5f5; display: inline-block; font-family: Arial; font-size: 12px; height: 80px; width: 365px; border-top: 1px solid #ffffff; border-bottom: 1px solid #c9c9c9; margin-left: 25px; margin-top: 10px; transform: skew(-10deg,0deg); -webkit-transform: skew(-10deg,0deg); -moz-transform: skew(-10deg,0deg); -o-transform: skew(-10deg,0deg); -ms-transform: skew(-10deg,0deg); overflow: hidden; -webkit-backface-visibility: hidden; } .mainBodyItemImage { height: 100%; width: 125px; float: left; overflow: hidden; } .mainBodyItemDecorator { float: right; height: 100%; width: 10px; background: rgb(30,143,30); background: url(data:image/svg+xml; base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJod…EiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIgLz4KPC9zdmc+); background: -moz-linear-gradient(top,rgba(30,30,1) 0%,rgba(71,209,21,1) 100%); background: -webkit-gradient(linear,left top,left bottom,color-stop(0%,1)),color-stop(100%,1))); background: -webkit-linear-gradient(top,1) 100%); background: -o-linear-gradient(top,1) 100%); background: -ms-linear-gradient(top,1) 100%); background: linear-gradient(to bottom,1) 100%); filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#1e8f1e',endColorstr='#47d115',GradientType=0); } .mainBodyItemText { color: #323d50; font-size: 15px; height: 100%; margin-left: 125px; padding-left: 15px; padding-top: 5px; transform: skew(10deg,0deg); -webkit-transform: skew(10deg,0deg); -moz-transform: skew(10deg,0deg); -o-transform: skew(10deg,0deg); -ms-transform: skew(10deg,0deg); } .mainBodyItemType { color: #9aa7af; font-size: 10px; margin-top: 0px; } .mainBodyItemTime { font-size: 12px; margin-top: 0px; position: absolute; bottom: 10px; left: 15px; }
解决方法
我不确定这将是一个可行的解决方案来修复模糊的文本,但我已经创建了一些似乎可以避免问题的东西.
我使用的技巧是封装所有需要转换的元素:skew(-10deg,0deg)在容器中,绝对将容器放在文本后面.这样,文本不受任何转换的影响,因此不需要进行校正.我确实尝试以不同的方式分离文本,但仅仅接近转换后的元素仍然会导致文本模糊.
我创建了2个演示,this one保留了原始HTML和this one使用更清洁,更语义的东西.后者我也包含了下面的代码.
HTML
<article> <section> <h1>PEC Zwolle v FC Groningen Tickets</h1> <p>Football</p> <time><strong>04 Apr 2014</strong> | 21:00</time> </section> <aside> <img src="http://upload.wikimedia.org/wikipedia/commons/6/6c/2012_Olympic_Football_-_Men's_tournament_-_Honduras_Vs_Morocco.jpg" /><b></b> </aside> </article>
CSS
article,aside { font-size: 12px; height: 80px; width: 365px; } article { display: inline-block; font-family: Arial; position:relative; margin-left: 25px; margin-top: 10px; } aside { position:absolute; z-index:-1; top:0; left:0; background-color: #f5f5f5; border-top: 1px solid #ffffff; border-bottom: 1px solid #c9c9c9; transform: skew(-10deg,0deg); -webkit-backface-visibility: hidden; } img { height: 100%; width: 125px; } aside b { right:0; top:0; position:absolute; height: 100%; width: 10px; background: rgb(30,GradientType=0); } section { color: #323d50; height: 100%; margin-left:140px; } section h1 { font-size:15px; font-weight:normal; margin:5px 0 0; } section p { color: #9aa7af; font-size: 10px; margin: 5px 0; } time { font-size: 12px; }