свойство jquery -changing css и повторение

80
10

У меня есть этот лист спрайтов http://codepen.io/benasl/pen/yabpxo, который я хочу изменить на другой после его окончания, а после второго заканчивается первый, который нужно начать заново, и так далее. Мне удалось это сделать, просто изменив свойства css, но теперь, как мне сделать их петлями?

setTimeout(function() {
$(".kambarys2").css('display', 'block');
}, 3100);
body {
background-color: #69e4c3;
}
.kambarys {
background: url('http://i.imgur.com/pra08AS.jpg');
background-repeat: no-repeat;
position: relative;
display: inline-block;
width: 380px;
height: 372px;
top: 100px;
left: 40%;
animation: convejor 3s steps(76) infinite;
}
@keyframes convejor {
from {
background-position: 0px;
}
to {
background-position: -28880px;
}
}
.kambarys2 {
background: url('http://i.imgur.com/TFvZvWz.jpg');
background-repeat: no-repeat;
position: absolute;
display: inline-block;
width: 380px;
height: 372px;
top: 108px;
left: 40%;
animation: convejor 3s steps(76) infinite;
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="kambarys"></div>
<div class="kambarys2"></div>

спросил(а) 2021-01-19T18:04:26+03:00 9 месяцев назад
1
Решение
65

    измените фоновое изображение с помощью массива:

var cnt=0,images=["http://i.imgur.com/TFvZvWz.jpg","http://i.imgur.com/pra08AS.jpg"]
setInterval(function() {
$(".kambarys").css({"background-image":"url("+images[cnt]+")"});
cnt++;
if (cnt>=images.length) cnt=0;
}, 3100);
body {
background-color: #69e4c3;
}
.kambarys {
background: url('http://i.imgur.com/pra08AS.jpg');
background-repeat: no-repeat;
position: relative;
display: inline-block;
width: 380px;
height: 372px;
top: 100px;
left: 40%;
animation: convejor 3s steps(76) infinite;
}
@keyframes convejor {
from {
background-position: 0px;
}
to {
background-position: -28880px;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="kambarys"></div>
    Переключить два divs

var cnt=0;
setInterval(function() {
$(".kambarys0").toggle(cnt);
$(".kambarys1").toggle(!cnt); cnt=!cnt
}, 3100);
body {
background-color: #69e4c3;
}
.kambarys0 {
background: url('http://i.imgur.com/pra08AS.jpg');
background-repeat: no-repeat;
position: relative;
display: inline-block;
width: 380px;
height: 372px;
top: 100px;
left: 40%;
animation: convejor 3s steps(76) infinite;
}
.kambarys1 {
display:none;
background: url('http://i.imgur.com/TFvZvWz.jpg');
background-repeat: no-repeat;
position: relative;
width: 380px;
height: 372px;
top: 100px;
left: 40%;
animation: convejor 3s steps(76) infinite;
}
@keyframes convejor {
from {
background-position: 0px;
}
to {
background-position: -28880px;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="kambarys0"></div>
<div class="kambarys1"></div>
    Прокрутите более двух разделов

var cnt = 0;
setInterval(function() {
cnt++;
if (cnt >= $(".kambarys").length) cnt = 0;
$(".kambarys").hide();
$("#kambarys" + cnt).show();
},
3100);
body {
background-color: #69e4c3;
}
.kambarys {
position: relative;
display: inline-block;
width: 380px;
height: 372px;
top: 100px;
left: 40%;
animation: convejor 3s steps(76) infinite;
}
#kambarys0 {
background: url('http://i.imgur.com/pra08AS.jpg');
background-repeat: no-repeat;
}
#kambarys1 {
display: none;
background: url('http://i.imgur.com/TFvZvWz.jpg');
background-repeat: no-repeat;
}
#kambarys2 {
display: none;
background: url('http://i.imgur.com/F6bNA00.jpg');
background-repeat: no-repeat;
}

@keyframes convejor {
from {
background-position: 0px;
}
to {
background-position: -28880px;
}
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="kambarys" id="kambarys0"></div>
<div class="kambarys" id="kambarys1"></div>
<div class="kambarys" id="kambarys2"></div>

ответил(а) 2021-01-19T18:04:26+03:00 9 месяцев назад
65

Один из ответов заключался бы в том, что у вас есть функция для этого, и эта функция перезапускает себя каждые X секунд.

Пример:


function startcounter() {
$( "#foo" ).append( "<p>Test</p>" ); // do what you want
setTimeout(startcounter, 3*1000); // 3*1000 = 3 Seconds.
}

setTimeout(startcounter, 3*1000);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="foo"><p>This is the div where the JS add every 3 Seconds a "Test".</p></div>

ответил(а) 2021-01-19T18:04:26+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема