#css #css-animations
#css #css-анимации
Вопрос:
У меня есть страница с анимацией градиента фона.
<div class="bg-gradient">
</div>
.bg-gradient {
width: 400px;
height: 240px;
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
background-size: 400% 400%;
animation: gradient 15s ease infinite;
}
@keyframes gradient {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
Я хотел бы изменить цвета при загрузке страницы. Но это не работает.
$(document).ready(function() {
SetBackgroundColors();
});
function SetBackgroundColors() {
$('.bg-gradient').css('background', 'linear-gradient(-45deg,' GetRandomColor() ',' GetRandomColor() ',' GetRandomColor() ',' GetRandomColor() ')');
}
function GetRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i ) {
color = letters[Math.floor(Math.random() * 16)];
}
return color;
}
Цвета действительно меняются, но анимация не применяется.
Вот скрипка.
Комментарии:
1. сократите время работы с css с 15 секунд до 5 секунд. Я считаю, что это работает
2. @hamid Это не сработало.
3. вам также необходимо сбросить размер фона, иначе он вернется к режиму auto auto по умолчанию после обновления bg-image jsfiddle.net/dbosnr7m
4. Анимация работает нормально. Цвета градиента устанавливаются только один раз во время загрузки. Изменение цвета, которое вы видите, связано с анимацией. Попробуйте перейти к 1s. JS запускается только один раз — возможно, вы думали, что он должен был выполняться дольше. В любом случае, в нынешнем виде код в порядке. Попробуйте поместить фоновое изображение реального изображения вместо линейного градиента, и вы увидите, что оно движется.
5. установить только
background-image
вместоbackground
Ответ №1:
Как только вы обновите background
значение, background-size
оно также будет сброшено в нормальное состояние (любое значение коротких рук фактически сбрасывается), поэтому вам также необходимо сбросить / указать снова его значение или только сбросить background-image
. 😉
$(document).ready(function() {
SetBackgroundColors();
});
function SetBackgroundColors() {
$('.bg-gradient').css('background', 'linear-gradient(-45deg,' GetRandomColor() ',' GetRandomColor() ',' GetRandomColor() ',' GetRandomColor() ')').css('background-size', '400% 400%');
}
function GetRandomColor() {
var letters = '0123456789ABCDEF';
var color = '#';
for (var i = 0; i < 6; i ) {
color = letters[Math.floor(Math.random() * 16)];
}
return color;
}
.bg-gradient {
width: 400px;
height: 240px;
background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab);
background-size: 400% 400%;
animation: gradient 15s ease infinite;
}
@keyframes gradient {
0% {
background-position: 0% 50%;
}
50% {
background-position: 100% 50%;
}
100% {
background-position: 0% 50%;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="bg-gradient">
</div>