CSS3可以转换字体大小吗?


77

如何在鼠标悬停时使字体大小变大?随着时间的推移,颜色过渡效果很好,但是由于某种原因,字体大小会立即切换。

样例代码:

body p {
     font-size: 12px;
     color: #0F9;
     transition:font-size 12s;
     -moz-transition:font-size 12s; /* Firefox 4 */
     -webkit-transition:font-size 12s; /* Safari and Chrome */
     -o-transition:font-size 12s;
     transition:color 12s;
     -moz-transition:color 12s; /* Firefox 4 */
     -webkit-transition:color 12s; /* Safari and Chrome */
     -o-transition:color 12s;
}

 p:hover {
      font-size: 40px;
      color:#FC0;
 }

Answers:


103

颜色会随着时间的推移而很好地过渡,但是由于某些dagnabbit的原因,字体会立即切换。

您的font-size过渡已被过渡覆盖color

transition: font-size 12s; /* transition is set to 'font-size 12s' */
transition: color 12s;     /* transition is set to 'color 12s' !! */

相反,您必须将它们全部合并为一个声明:

transition: color 12s, font-size 12s;

请参阅: http //jsfiddle.net/thirtydot/6HCRs/

-webkit-transition: color 12s, font-size 12s;
   -moz-transition: color 12s, font-size 12s;
     -o-transition: color 12s, font-size 12s;
        transition: color 12s, font-size 12s;

(或者,只需使用all关键字:transition: all 12s;- http://jsfiddle.net/thirtydot/6HCRs/1/)。


6
+一个使用单词“ dagnabbit”来回答op的“什么是Tarnate”问题:P #LanguageStyleMatching
Bart

2
那是OP阶段,有人出于任何原因将其从其问题中进行编辑。
2014年

1
all由于性能原因,我不主张将关键字用于过渡。它会使您的页面非常慢。选择使用更详细的语法: transition: color 12s, font-size 12s;
mcguiretj

有什么办法可以实现相同的效果,但是具有background-colorbackground-clip属性?我正在尝试这样做:),如果已经有解决方案,我将不胜感激。
莱昂纳多·马菲

@LeonardoMaffei:如果您找不到答案,我建议您提出一个新问题。确保包括您的代码,一个演示以及对您要执行的操作的良好说明。
三十点

75

尝试为所有属性设置过渡:

-webkit-transition: all 0.3s ease;
-moz-transition: all 0.3s ease;
-o-transition: all 0.3s ease;
-ms-transition: all 0.3s ease;

这也是可行的。

或者 只是字体:transition: font 0.3s ease


5
错误的答案,它可以工作,但是font-size并不是字体的“子属性”。字体属性不存在,它是速记属性
Kustolovic

25

的过渡font-size似乎一步一步地完成,因此并不流畅。

如果仅一行,则可以使用transform: scale(.8)。缩小而不放大,这样就不会失去质量。transform-origin: 0 0根据您的文本对齐方式,您可能还需要使用或不同的值。


这是一个非常好的提示!在移动设备上(尤其是在Android上)面临着字体大小不固定的动画,而在台式机上一切都很好。依靠它transform: scale()font-size修复它。现在,在所有平台上都可以顺利运行。
Fabien Snauwaert

0

JS小提琴演示

一种替代方法是,您还可以使用诸如jQuery Transit之类的框架轻松地为您完成此操作:

Javascript:

$("p").hover( function () {
    //On hover in
    $("p").transition({ 'color': '#FC0', 'font-size': '40px' }, 1000);    
}, function () {
    //On hover out
    $("p").transition({ 'color': '#0F9', 'font-size': '12px' }, 1000);
});

CSS:

p 
{

font-size: 12px;
color: #0F9;

}

7
这个问题甚至没有引用javascript。
查理
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.