Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.05.2015, 11:54
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Ресайз слайдер при изменении ширины окна [РЕШЕНО]
Написан плагин слайдера на jQuery, сам плагин простой и ничего особенного, но задался вопросом как сделать его еще и резиновым, в самом плагине все данные размеров высчитываются в самом начале и больше не затрагиваются. Как можно это более правильно реализовать?

Или возможно разметкой в CSS это все сделать?

(function($) {

	$.fn.slide = function() {
		var el = this,
			lengthSlides = $(this).find('.slider-item').length,
			widthSlide = $(this).find('.slider-item').width(),
			widthSlides = widthSlide * lengthSlides,
			currentSlide = 1;

		$(this).find('.sliderItemWrapper').width(widthSlides);

		var init = function() {
			var inter = setInterval(nextSlide, 3000);
			$(el).hover(function() {
				clearInterval(inter);
			}, function() {
				inter = setInterval(nextSlide, 3000);
			});
			$(el).find('.slider_left').click(prevSlide);
			$(el).find('.slider_right').click(nextSlide);
		}

		var nextSlide = function() {
			if ( currentSlide == lengthSlides ) 
				currentSlide = 0;
			$(el).find('.sliderItemWrapper').animate({
				'left': - (currentSlide * widthSlide)
			}, 700);
			currentSlide++;
		}

		var prevSlide = function() {
			currentSlide--;
			if ( currentSlide == 0 )
				currentSlide = lengthSlides;
			$(el).find('.sliderItemWrapper').animate({
				'left': - ((currentSlide - 1) * widthSlide)
			}, 700);
		}

		init();
	};
})(jQuery);


<div class="sliderWrapper">
		<div id="slider">
			<div class="slider_left"></div>
			<div class="slider_right"></div>
			<ul class="sliderItemWrapper">
				<li class="slider-item">
					<a href="#">
						<img src="assets/porsche.jpg" alt="porsche-356" class="slider-img" />
					</a>
				</li>
				<li class="slider-item">
					<a href="#">
						<img src="assets/porsche.jpg" alt="porsche-356" class="slider-img" />
					</a>
				</li>
				<li class="slider-item">
					<a href="#">
						<img src="assets/porsche.jpg" alt="porsche-356" class="slider-img" />
					</a>
				</li>
				<li class="slider-item">
					<a href="#">
						<img src="assets/porsche.jpg" alt="porsche-356" class="slider-img" />
					</a>
				</li>
			</ul>
		</div>
	</div>

Последний раз редактировалось falkone, 20.05.2015 в 20:43. Причина: Вопрос решен, спасибо Рони
Ответить с цитированием
  #2 (permalink)  
Старый 20.05.2015, 14:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

Сообщение от falkone
Ресайз слайдер при изменении ширины окна
а что именно должно изменится?
Ответить с цитированием
  #3 (permalink)  
Старый 20.05.2015, 17:01
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

область слайдера и изображения в нем должны уменьшатся/увеличиваться при изменении ширины окна. max-width допустим 1024px и min-width 320px допустим.

Пробовал через .resize() сделать, но ничего не вышло в конечном итоге.

Вся проблема в том, что размеры холста просчитываются в самом начале при загрузке и во время работы слайдера к ним больше не обращаемся, дальше работает только var nextSlide = function() и var prevSlide = function()
Ответить с цитированием
  #4 (permalink)  
Старый 20.05.2015, 17:03
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Смотрел код готовых слайдеров с данным функционалом, но там столько функционала навешано, что в итоге очень запутано все.
Ответить с цитированием
  #5 (permalink)  
Старый 20.05.2015, 17:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

falkone,
а css текущее? -- конечно лучше бы сразу весь макет )))
Ответить с цитированием
  #6 (permalink)  
Старый 20.05.2015, 17:35
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

Прикрепил архив с исходником.
Вложения:
Тип файла: zip jQuery-plugin.zip (191.6 Кб, 6 просмотров)
Ответить с цитированием
  #7 (permalink)  
Старый 20.05.2015, 19:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,081

falkone,
вариант
строка 11 первый пост добавить
$(window).resize(function() {
            var w = $(window).width()- 40;
            $(el).width(w);
            $(el).css({left: 0})
            $(el).find('.slider-item, img').width(w) ;
            $('.sliderWrapper').width(w)
   			widthSlide = w;
			widthSlides = widthSlide * lengthSlides ;
            $(el).find('.sliderItemWrapper').width(widthSlides);
}).resize()


css margin: 20px auto;

.sliderWrapper {
	width: 1000px;
	margin: 20px auto;
	overflow: hidden;
	position: relative;
}

на всякий случай вместо зип лучше в песочницу сразу
http://plnkr.co/edit/?p=preview или сюда
Ответить с цитированием
  #8 (permalink)  
Старый 20.05.2015, 20:35
Аспирант
Отправить личное сообщение для falkone Посмотреть профиль Найти все сообщения от falkone
 
Регистрация: 27.09.2014
Сообщений: 42

рони,
Когда увидел твое сообщение в теме, сразу понял, что будет помощь в решении, так как давно заметил тебя во многих темах и дельные правильные ответы от тебя!

Большое спасибо, все работает как часы) Немножко подправил на максимальную ширину слайдера и все супер! Еще раз спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Привязать закрытие окна bootstrap при наатии только на определенную кнопку voron121 Библиотеки/Тулкиты/Фреймворки 0 15.08.2014 02:23
не вызывается функция при изменении option soft4you Общие вопросы Javascript 1 23.07.2014 17:41
Событие закрытия окна при window.open un3solka Events/DOM/Window 4 24.07.2013 19:46
Вывод данных единожды, при открытии окна? Ggorsh Events/DOM/Window 1 28.04.2009 01:04
Завершение процесса воспроизведения видео при закрытии окна IE skif Общие вопросы Javascript 0 11.03.2009 08:11