使用CSS -webkit-transform时Chrome上的模糊文字

前端之家收集整理的这篇文章主要介绍了使用CSS -webkit-transform时Chrome上的模糊文字前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用
-webkit-transform: skew(-15deg,0deg);

歪曲一个div,然后

-webkit-transform: skew(15deg,0deg);

歪斜含有文字的孩子.在谷歌浏览器中,倾斜看起来很丑陋和像素化,所以我使用

-webkit-backface-visibility: hidden;

让它看起来不错.现在容器倾斜非常好,内部文本是“未被歪曲”但文本本身是模糊和丑陋的! (问题仅存在于使用-webkit的chrome中)

Demo

有任何想法如何使文字再次清晰?

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;
}

猜你在找的CSS相关文章