Чи може CSS3 розмір шрифту переходу?


81

Як можна збільшити розмір шрифту при наведенні курсора? З часом кольорові переходи працюють нормально, але розмір шрифту чомусь змінюється негайно.

Зразок коду:

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

Відповіді:


106

Колір з часом добре переходить, але шрифт негайно змінюється з певних причин.

Ваш 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' у відповідь на запитання 'що в заклинанні': P #LanguageStyleMatching
Барт

2
Це було поетапне поступове використання, хтось відредагував це питання з будь-якої причини.
тридцять крапок

1
Я б стверджував, що не використовуватиму allключове слово для переходу з міркувань ефективності. Це може зробити вашу сторінку жахливо повільною. Виберіть більш детальний синтаксис: transition: color 12s, font-size 12s;
mcguiretj

чи є спосіб зробити той самий ефект, але з властивостями background-color та background-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.


6
неправильна відповідь, це працює, але розмір шрифту не є "підвластивістю" шрифту. властивість font не існує, це скорочена властивість
Kustolovic

26

font-sizeЗдається, переходи для кроку за пікселем і, отже, не плавні.

Якщо це лише один рядок, можливо, ви зможете використовувати transform: scale(.8). Масштабуйте, а не вгору, щоб не втратити якість. Вам, ймовірно, також потрібно буде використовувати transform-origin: 0 0або інше значення залежно від вирівнювання тексту.


Це дійсно хороша порада! Зіткнувся з різкою анімацією розміру шрифту на мобільному, особливо на Android, тоді як на робочому столі все було добре. Спираючись на transform: scale()замість font-sizeвиправленого. Тепер це гладко на всіх платформах.
Fabien Snauwaert

0

Демонстрація JS Fiddle

Альтернативою може бути те, що ви також можете використовувати фреймворк, такий як 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;

}

8
Питання навіть не посилається на javascript.
Чарлі
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.