Я пытаюсь создать веб-страницу, где цвет фона изображения постепенно меняет цвета. Я знаю, как изменить цвет фона в Javascript, но я не знаю, как «оживить» его так сказать (без использования Flash).Как сделать фон постепенно меняющимся цветом?
ответ
Вы можете использовать переходы CSS для получения этого эффекта. Просто добавьте этот код CSS в элемент, который изменяется от JS:
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
-ms-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
С, что на CSS каждый раз, когда какое-либо значение стиля меняется, что изменение анимированный от тока до нового значения на 1 сек.
Работает только на современных браузерах. См. Пример: click
Вы можете использовать функцию setTimeout()
:
function animateBg()
{
myElement.style.backgroundColor = someNewValue;
setTimeout(animateBg, 20); // 20 milliseconds
}
и вызывать animateBg() в обработчике onload
вашего тела. Например, <body onload="animateBg()">
.
Вы также можете использовать 'setInterval()' функцию (с теми же аргументами), которые делают "повторное вооружению" ваш 'animateBg()' таймер внутри 'animateBg()' ненужными (просто вызовите 'setInterval (animateBg, 20)', чтобы функция 'animateBg()' вызывалась каждые 20 миллисекунд. –
В любом случае вам действительно нужно добавить тест 'if', чтобы решить, продолжать ли анимацию, т. е. тестировать ли фон достигнет целевого цвета. (И с помощью 'setInterval()' вам понадобится дополнительная переменная, чтобы сохранить ссылку на идентификатор таймера, чтобы вы могли ее отменить, плюс 'setTimeout()' имеет тенденцию работать лучше, чем 'setInterval()' в отношении того, что произойдет, если пользователь переключится на другую вкладку, а затем вернется позже.) – nnnnnn
Хорошая точка. Я предположил, что это была вечная анимация цикла по какой-то причине. –
Я бы попытался использовать JQuery color plugin. Посмотрите на примеры here (нажмите «Демо»), они, похоже, делают именно то, что вы описываете.
Вот пример того, как оживить фон тела тег:
function animateBg(i) {
document.body.style.backgroundColor = 'hsl(' + i + ', 100%, 50%)';
setTimeout(function() {
animateBg(++i)
}, i);
}
animateBg(0);
Имейте в виду, что HSL не броузерах, вы также можете сделать трюк с шестигранной/RGB цветов.
Jsfiddle ссылка: http://jsfiddle.net/euthg/
- 1. Постепенно заполните NSTextField цветом
- 2. Странная проблема с меняющимся цветом фона обзора
- 3. Android: сделать фоновое изображение меняющимся
- 4. Как сделать постепенно меняющийся фон в CSS стать бесперебойным?
- 5. Как сделать фон DIV сплошным цветом, с img как границей?
- 6. Фон с неправильным цветом
- 7. Как постепенно сделать невидимым многоугольник?
- 8. Как сделать фон JCheckBox прозрачным?
- 9. Сделать представление появляться постепенно
- 10. В CSS вы можете сделать фон TEXT определенным цветом?
- 11. Как сделать всю веб-страницу одним цветом?
- 12. IOS NSAttributedString округляется фон с цветом
- 13. Как сделать JFrame одним цветом?
- 14. Фон DIV неправильно заполняется цветом CSS
- 15. Как сделать анимацию, отображающую UIImageView постепенно?
- 16. Как сделать полупрозрачный фон?
- 17. Как сделать полупрозрачный фон
- 18. Как сделать фон прозрачным?
- 19. Как сделать фон прозрачным?
- 20. Как сделать фон полноразмерным
- 21. Фон с более чем 1 цветом
- 22. Фон Android: размещение изображения с цветом
- 23. Фон мигает белым цветом в Fancybox iframe
- 24. Сделать div частичным цветом
- 25. Как сделать html-файл с помощью java, где фон будет постепенно изменяться?
- 26. не удается получить фон за цветом фона
- 27. GUI с динамически меняющимся фоном
- 28. Как установить фон сплошным цветом программно в Gnome 3?
- 29. (android) Как установить фон TextView с черным прозрачным цветом
- 30. обнаружения фон, имеющий шрифт с таким же цветом, как Backgound
Это действительно сработало очень хорошо. Я просто создал массив с набором цветов в JS и сказал ему генерировать случайный цвет из этого массива каждые несколько секунд. Благодаря! –