У меня есть фрагмент текста, который при нажатии выделяется, изменяя цвет фона. Я хотел бы анимировать выделение, чтобы цвет фона постепенно менялся слева направо, как если бы кто-то действительно выделял текст. Любые мысли о том, как это было бы достижимо с помощью CSS3 и/или Javascript/jQuery?
Как создать эффект выделения в CSS3/Javascript?
Ответы (2)
Если вас устраивают некоторые функции только для CSS3, вы можете использовать переходы, градиенты и background-size
:
.highlightable {
background-size: 0 100%;
background-repeat: no-repeat;
-webkit-transition: background-size 0.5s ease-out;
-moz-transition: background-size 0.5s ease-out;
-ms-transition: background-size 0.5s ease-out;
-o-transition: background-size 0.5s ease-out;
transition: background-size 0.5s ease-out;
}
.highlightable.highlight {
background-image: -webkit-linear-gradient(yellow, yellow);
background-image: -moz-linear-gradient(yellow, yellow);
background-image: -ms-linear-gradient(yellow, yellow);
background-image: -o-linear-gradient(yellow, yellow);
background-image: linear-gradient(yellow, yellow);
background-size: 100% 100%;
}
person
Ry-♦
schedule
20.04.2012
Именно то, что я искал. Спасибо!
- person user2398029; 21.04.2012
Многие библиотеки JavaScript упрощают эту задачу, например, моя любимая: YUI.
В противном случае без библиотеки я бы установил массив с шестнадцатеричными промежуточными значениями цвета, которые вы хотите, чтобы ваш фон имел в каждый временной интервал; и используйте метод setTimeout()
, чтобы несколько раз быстро изменить цвет фона; например
setTimeout("document.getElementById('mySpan').style.backgroundColor = myColors[i]; i++;", 50);
person
Reece
schedule
20.04.2012
Кроме того, никогда не передавайте строку в
setTimeout
.
- person Ry-♦; 21.04.2012