david_martin
@david_martin
Начинающий веб программист.

Как сделать резиновый слайдер Jquery?

Есть небольшая проблема с ротатором картинок, который сделан на сайте на jquery.
Стоит задача сделать его резиновым. То есть есть максимальное и минимальное значение, в промежутке которого он должен тянуться.

Собственно HTML:
<div id="rotator">
            <ul>

            <li class='show'><a href='http://localhost/apriori/prod.php?id=30'><img src='upl/slider3.jpg'></a></li> <li><a href='http://localhost/apriori/prod.php?id=30'><img src='upl/slider2.jpg'></a></li> <li><a href='http://localhost/apriori/prod.php?id=13'><img src='upl/slider1.jpg'></a></li> 
            </ul>
          </div>


CSS:
#rotator {position:relative; border: none;  height: 530px; width: 940px; margin: 0px; padding: 0px; left: 0px; top: 0px;}
#rotator ul li {float:left; position:absolute; list-style: none; border: none; }
#rotator ul li.show {z-index:400; border: none; }


JS
function theRotator() {
	// Устанавливаем прозрачность всех картинок в 0
	$('div#rotator ul li').css({opacity: 0.0});
 
	// Берем первую картинку и показываем ее (по пути включаем полную видимость)
	$('div#rotator ul li:first').css({opacity: 1.0});
 
	// Вызываем функцию rotate для запуска слайдшоу, 5000 = смена картинок происходит раз в 5 секунд
	setInterval('rotate()',5000);
}
 
function rotate() {	
	// Берем первую картинку
	var current = ($('div#rotator ul li.show')?  $('div#rotator ul li.show') : $('div#rotator ul li:first'));
 
	// Берем следующую картинку, когда дойдем до последней начинаем с начала
	var next = ((current.next().length) ? ((current.next().hasClass('show')) ? $('div#rotator ul li:first') :current.next()) : $('div#rotator ul li:first'));	
 
	// Расскомментируйте, чтобы показвать картинки в случайном порядке
	// var sibs = current.siblings();
	// var rndNum = Math.floor(Math.random() * sibs.length );
	// var next = $( sibs[ rndNum ] );
 
	// Подключаем эффект растворения/затухания для показа картинок, css-класс show имеет больший z-index
	next.css({opacity: 0.0})
	.addClass('show')
	.animate({opacity: 1.0}, 1000);
 
	// Прячем текущую картинку
	current.animate({opacity: 0.0}, 1000)
	.removeClass('show');
};
 
$(document).ready(function() {		
	// Запускаем слайдшоу
	theRotator();
});
  • Вопрос задан
  • 4730 просмотров
Пригласить эксперта
Ответы на вопрос 2
Jaty4
@Jaty4
#rotator {position:relative; border: none; height: 530px; width: 940px; margin: 0px; padding: 0px; left: 0px; top: 0px;}
height и width убирайте из стилей, вместо них задайте max/min-height/width
и потом средствами js, в зависимости от размеров окна/блока, задавайте ему ширину/высоту
Ответ написан
Комментировать
как все у вас тут запущено. если слайдер резинится, предполагаю что только по ширине, общему контейнеру в сss задайте min-width и max-width и margin:0 auto /* выровнять по центру */
затем
var max_width = $(window).width();
if ($('#rotator').width() < max_width) {
$('rotator').width(max_width);
}

вот как-то по такой логике.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы