Смена фоновой картинки через каждые 5 секунд
У меня есть
<div id="place"></div> Как сделать чтобы через каждые 5 секунд менялось бы фоновое изображение у DIVa? У меня 5 фоновых картинок, после 5-й нужно чтобы опять первая загружалась и так по кругу. Заранее спасибо. |
<div id="place" style="border:red solid 1px;height:100px;width:340px;"></div>
<script type="text/javascript">
var phr = new Array();
phr.push("http://mybb.ru/f/collection/0211.gif");
phr.push("http://mybb.ru/f/collection/0213.gif");
phr.push("http://i039.radikal.ru/0806/ec/a5ffc6d7cfd9.gif");
function Rotator_cont() {
var s = 5000; // Время отображения
var N=phr.length;
var i=Math.round(Math.random()*(N));Rotator(i);
function Rotator(i){
i++; if(i>N-1){i=0};//alert(i);
document.getElementById('place').style.backgroundImage='url('+phr[i]+')';
timerId01=setTimeout(function(){Rotator(i)},s);return;}
}Rotator_cont()
</script>
|
Круто. А как быть если картинки у меня большие и при подгрузке очередной возникает на долю секунды пустое пространство. Можно ли как то показывать следующую картинку только после полной ее загрузки?
|
sitebuilder,
1. cоздайте нужное кол-во диваков с заранее установленным фоном(фон ставите сss), а скриптом предыдущий display: none: а последущий - display:block; |
Прошу помочь доработать скрипт
Всем доброго времени суток!
Помогите пожалуйста доработать данный скрипт. Он очень хорошо работает и быстро, но хотелось бы, чтобы фоновые картинки переключались плавно. Для меня это очень сложно сейчас. я новичок. Очень прошу помочь!:help: |
Дёшего и сердито
<head>
<style>
#WallPaper0 {
position :absolute;
background :url('http://javascript.ru/forum/images/ca_serenity/misc/logo.gif');
height :128px;
width :128px;
}
#WallPaper1 {
position :absolute;
background :url('http://a.disquscdn.com/1489123367/images/noavatar92.png');
height :128px;
width :128px;
}
</style>
<script>
var wallpaper = 0,
wallslide = 0;
function fader() {
setTimeout(fader, 25);
document.getElementById("WallPaper" + wallpaper).style.opacity = 1.0 - Math.abs(100 - wallslide) / 100;
wallslide -= 5;
if(wallslide < 0) {
wallslide = (wallslide + 200) % 200;
wallpaper ++;
if(!document.getElementById("WallPaper" + wallpaper))
wallpaper = 0;
}
}
</script>
</head>
<body onload='fader()'>
<span id=WallPaper0>para</span>
<span id=WallPaper1>head</span>
</body>
|
Спасибо, Paduo...ваш вариант совсем другой. В принципе, для "сердито" подойдет))),
только хочется, чтобы одна картинка накладывалась на другую, и между ними чтобы не было белого фона страницы. :-? Я вот что нашел еще:
<head>
<script type="text/javascript">
var total_pics_num = 4; // колличество изображений
var interval = 5000; // задержка между изображениями
var time_out = 1; // задержка смены изображений
var i = 0;
var timeout;
var opacity = 100;
function fade_to_next() {
opacity--;
var k = i + 1;
var image_now = 'image_' + i;
if (i == total_pics_num) k = 1;
var image_next = 'image_' + k;
document.getElementById(image_now).style.opacity = opacity/100;
document.getElementById(image_now).style.filter = 'alpha(opacity='+ opacity +')';
document.getElementById(image_next).style.opacity = (100-opacity)/100;
document.getElementById(image_next).style.filter = 'alpha(opacity='+ (100-opacity) +')';
timeout = setTimeout("fade_to_next()",time_out);
if (opacity==1) {
opacity = 100;
clearTimeout(timeout);
}
}
setInterval (
function() {
i++;
if (i > total_pics_num) i=1;
fade_to_next();
}, interval
);
</script>
</head>
/*---------------
<body>
<div>
<img src='slide_1.jpg' id="image_1" style="position: absolute;" />
<img src='slide_2.jpg' id="image_2" style="opacity: 0; filter: alpha(opacity=0); position: absolute;" />
<img src='slide_3.jpg' id="image_3" style="opacity: 0; filter: alpha(opacity=0); position: absolute;" />
<img src='slide_4.jpg' id="image_4" style="opacity: 0; filter: alpha(opacity=0); position: absolute;" />
</div>
</body>
У меня была мысль как-то перенести параметр :write: : document.getElementById(' ... ').style.opacity в исходный текст кода у ТС (который у Deff во втором сообщении) таким образом, чтобы было как бы выплывание фоновой картинки из другой, а не обесцвечивание до фона страницы и переключение на другую. Это возможно? |
e-partner,
слайдер блоками с opacity |
Цитата:
но пока что хочется, чтобы одна картинка выплывала из другой, при этом хочется без подключения библиотек JQuary, чтобы все работало быстро, без проблем у некоторых юзеров и у меня. А еще, рони, как у вас сделать, чтобы слайдер работал только в одну сторону? (вправо скажем) |
Цитата:
function q(a, n) {
//(r ^= 1) && a.reverse();
$.when.apply(null, a.map(function(k, c) {
var b = (n/a.length) * c;
return k.css({
"z-index": 100
}).delay(b).animate({
opacity: 0
}, {
easing: "easeOutCirc",
duration: 300
})
})).done(function() {
a.forEach(function(a) {
a.remove()
});
setTimeout(m, 1E3)
})
}
var op = [100,1];//!!!
function m() {
//Math.random() < .2 && op.reverse();
var e = n(a[1].src, a[0].src, op[0], op[1]);
q(e,1200);
a.push(a.shift())
}
|
| Часовой пояс GMT +3, время: 03:19. |