2015-09-12 3 views
6

Если у меня есть этот код:Какова математика за переходы css на цвета?

.box { 
    color: #3399FF /* Blue */ 
    transition: 10s all linear; 
} 

.box:hover { 
    color: #FF3300 /* Red */ 
} 

Если я парить на элементе цвет будет меняться от синего до красного в течение 10 секунд плавного перехода.

Если был график:

0 секунд - Синий

5 секунд -

10 секунд - Красный

Есть ли способ расчета, что цвет будет 5 секунд или любое количество секунд, в течение переходного периода?

+0

@ user2864740 Я пытаюсь получить цвет специально. Есть ли rgb или hex hash уравнение, которое является функцией времени? – Akshat

+0

См. Ответ BoltClock о том, как получить его программно. В противном случае разложите цвет вручную на отдельные значения компонентов, примените функцию преобразования в это время (для линейного значения это 'f (t) = a + (b - a) * t', где' t = 0,5' в этом case) к каждому значению компонента отдельно и построить шестнадцатеричный цвет из компонентов. – user2864740

+0

@ user2864740 Где 'a' и' b' являются компонентами rgb, оттенками или дескриптором цвета другого типа? – Akshat

ответ

5

Это определяется не чем иным, как transition-timing-function property, который представлен либо кубической кривой Безье, либо предопределенным ключевым словом, соответствующим предопределенной кривой. В вашем примере значение этого свойства равно linear, поэтому на 5-секундном интервале значение будет в точности равным среднему значению начального и конечного значений.

Спецификация также определяет, как вычисляются interpolated values во время переходов. Это то, что он говорит о цветовых значений:

  • цвет: интерполированное с помощью красного, зеленого, синего и альфа-компоненты (лечение каждого как число, см. Ниже) Интерполяция выполняется между предварительно умноженными цветами (то есть цветами, для которых указанные красные, зеленые и синие компоненты были умножены на альфа).

Вы можете получить точное значение в любой момент времени во время перехода, которая находится в ходе использования window.getComputedStyle() и тому подобное. От introductory section:

Вычисленное значение свойства переходит со временем от старого значения к новому. Поэтому, если скрипт запрашивает вычисленное значение свойства (или других данных в зависимости от него) по мере его перехода, он увидит промежуточное значение, которое представляет текущее анимированное значение свойства.

+0

Есть ли способ получить точный цвет в терминах rgb или хеш-хэшей? Спасибо за getComputedStyle. Я полагаю, что это резерв, который я мог бы использовать в некотором роде. – Akshat

+0

@Akshat: Может быть, это поможет - http: //www.w3.org/TR/css3-transitions/# animatable-types – Harry

+0

@Akshat: Как вы хотите «получить» этот цвет, точно? getComputedStyle() - это один из способов, если вы делаете это из сценария. – BoltClock

Смежные вопросы