Как сделать рандомное время от 2 до 8 секунд у скрипта?
Добрый день!
Есть код, который меняет, слайды через каждые 2 секунды. Подскажите, пожалуйста, как сделать рандомное время (чтобы оно постоянно менялось) между сменами слайдов, от 2 до 8 секунд?
(function($) {
$.fn.fader = function(options) {
var settings = $.extend({
delay: 2000
}, options );
$(this).addClass("clearfix").css("overflow", "hidden");
$(this).find('ul').addClass("clearfix").css("padding", "0px");
/**
* Fades out element `toFade`, fading in `toFade+1`
* If `toFade` is the last element, then the first element will be
* faded in.
*
* @param {Integer} toFade which element to fade out
* @param {Array} imgs array of jQuery elements
*/
function fade(toFade, imgs) {
imgs[toFade].animate({opacity: 0}, settings.delay/2);
var toShow = toFade === (imgs.length - 1) ? 0 : toFade+1;
imgs[toShow].animate({opacity: 1}, settings.delay/2);
setTimeout(function() {
fade(toShow, imgs);
}, settings.delay);
}
// find images, and hide them
var imgs = [];
$(this).find('ul li').each(function(){
imgs.push($(this));
$(this).css({opacity: 0});
});
// show the first image, and set a timer to fade it
imgs[0].css({opacity: 1});
setTimeout(function(){
fade(0, imgs);
}, options.delay/2);
};
}(jQuery));
Активация кода:
$(function(){
$(".fader").fader({
delay: 2000
})
});
|
snovapavel,
строка 18
function fade(toFade, imgs) {settings.delay = (6000*Math.random()|0)+2000;
|
Сделал так как Вы написали, но не работает...
Подскажите, пожалуйста, что нужно поправить? https://jsfiddle.net/f6eh1ujp/ |
snovapavel,
работает, плагин грузите позднее, чем используите. поставьте в песочнице тип загрузки в меню (javascript) в head |
snovapavel,
алгоритм не продуман покажет только первый цикл . |
Поставил, он доходит до третьего слайда и перестаёт работать...
|
Цитата:
|
snovapavel,
можно так ... но половина кода в плагине лишняя, особенно таймеры.
function fade(toFade, imgs) {
settings.delay = (6000 * Math.random() | 0) + 2000;
imgs[toFade].animate({
opacity: 0
}, settings.delay / 2);
var toShow = toFade === (imgs.length - 1) ? 0 : toFade + 1;
imgs[toShow].animate({
opacity: 1
}, settings.delay / 2);
setTimeout(function() {
fade(toShow, imgs);
}, settings.delay);
}
|
fadeTo смена картинок по кругу
snovapavel,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
html,body,.fader{margin:0;height:100%; padding: 0;}
.fader ul{position:relative;list-style:none;height:100%;margin:0;}
.fader ul li{opacity:0;position:absolute;height:100%;left:0}
.fader img{height:100%}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
var p = $(".fader li"),
len = p.length,
indx = len-1;
! function go() {
p.eq(indx).fadeTo(1200,0);
indx = ++indx % len;
p.eq(indx).fadeTo(1200,1);
window.setTimeout(go, (6000 * Math.random() | 0) + 3200)
}()
});
</script>
</head>
<body>
<div class="fader">
<ul>
<li><img src="http://placehold.it/500x500/220022?text=1"></li>
<li><img src="http://placehold.it/500x500/002200?text=2"></li>
<li><img src="http://placehold.it/500x500/0000FF?text=3"></li>
</ul>
</div>
</body>
</html>
|
Цитата:
Он там реально незаменим? |
| Часовой пояс GMT +3, время: 19:49. |