有没有办法从普通文本逐渐过渡到斜体,每个字符都会稍微改变倾斜角度?
5 回答
Robin 的想法确实有效(DEMO),但是那个小提琴有很多问题,我不确定我是否可以将它们放入一条评论中。
首先,span
是一个inline
元素并且transform
作用于block
元素。因此,您要么使用类似or的block
元素,要么在.div
p
display: block
span
不要使用skew
!使用skewX
. skew
出现在早期草稿中,此后已被删除。Firefox 14 甚至不支持它,尽管由于兼容性原因它在 Firefox 15 中重新引入,并且仍然适用于 Chrome、Safari 和 Opera。
始终将无前缀版本放在最后。在即将到来的 Firefox、Opera 和 IE 版本中,转换应该没有前缀。
您还需要在类名前加一个点。
像这样的东西:
<div class="skewme">Tyrannosaurus Rex</div>
CSS部分很简单
.skewme {
-webkit-transform: skewX(-20deg);
-moz-transform: skewX(-20deg);
-o-transform: skewX(-20deg);
transform: skewX(-20deg);
}
HTML:
<div class="skewme1">Tyrannosaurus Rex</div>
CSS:
.skewme1 {
-webkit-animation: slowskew 1.5s infinite alternate;
-moz-animation: slowskew 1.5s infinite alternate;
-o-animation: slowskew 1.5s infinite alternate;
animation: slowskew 1.5s infinite alternate;
}
@-webkit-keyframes slowskew {
to { -webkit-transform: skewX(-20deg); }
}
@-moz-keyframes slowskew {
to { -moz-transform: skewX(-20deg); }
}
@-o-keyframes slowskew {
to { -o-transform: skewX(-20deg); }
}
@keyframes slowskew {
to { transform: skewX(-20deg); }
}
你的字体很可能有完全不同的斜体字形和普通文本,所以即使使用 SVG crazy-clever 在它们之间变形也可能看起来很奇怪。
另一种方法是应用CSS3 2D 倾斜变换。这不会在正常形式和斜体形式之间转换,而只会倾斜正常形式。这可能会或可能不会给您带来视觉上吸引人的结果,具体取决于您的字体。旧浏览器也不支持它。
不是斜体不,你只能选择normal
或italic
(oblique
它在排版中具有特定含义,但通常不适用于标准网络字体)。
但是,您可以使用 CSS 转换以非常讨厌的方式伪造它。例如:
<span class="skew0">R</span><span class="skew1">R</span><span class="skew2">R</span><span class="skew3">R</span>
和:
span { display: inline-block; }
.skew1 { transform: skewX(-5deg); }
.skew2 { transform: skewX(-10deg); }
.skew3 { transform: skewX(-15deg); }
skew()
有被从规范中删除的危险——它已经从 Mozilla 中删除,但由于不兼容的问题被重新添加——显然你需要添加标准的供应商前缀。
测试:http: //jsfiddle.net/GtQXw/1/
是的 - 你必须创建一个图像。否则没有
您可能可以通过 SVG 来做到这一点,但是您将失去通过图像获得的浏览器支持。IE8 及更早版本不支持 SVG、IIRC。