@Fathummel
Front-end разработчик

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

Всем привет!
Озадачился вёрсткой адаптивного слайдера на CSS+JS без сторонних фреймворков.
По ТЗ надо сделать так:

- на разрешении для мобильных устройств идут слайды малого размера (либо какая-то часть от большого слайда)
- с увеличением разрешения в слайд добавляются новые элементы, картинки и больше текста.

Изначально применил подход, отображенный здесь: www.internet-technologies.ru/articles/article_2155.html
Т.е. идёт #wrapper с изображениями, контейнер ограничивает видимую область и далее в дело вступает JS:

<div id="contentContainer">
  <div id="wrapper">
    <div id="itemOne" class="content">
    </div>
    <div id="itemTwo" class="content">
    </div>
    <div id="itemThree" class="content">
    </div>
    <div id="itemFour" class="content">
    </div>
  </div>
</div>
<div id="navLinks">
    <ul>
        <li class="itemLinks" data-pos="0px"></li> <!--Для примера, атрибут ставится в зависимости от ширины слайда-->
        <li class="itemLinks" data-pos="-550px"></li>
        <li class="itemLinks" data-pos="-1100px"></li>
        <li class="itemLinks" data-pos="-1650px"></li>
    </ul>
</div>


Но как сделать такую вещь адаптивной, т.е. как выводить разные изображения в слайдер (или активировать разные части слайда)? Проблема в том, что по технологии, описанной в ссылке выше, координаты для перемещения задаются один раз, атрибутами data у ссылок. И как их поставить в медиазапросах - я не знаю.

Или есть способ активизировать участок JS кода в зависимости от ширины экрана, что позволит добавить нужные классы с изображениями?
  • Вопрос задан
  • 1983 просмотра
Пригласить эксперта
Ответы на вопрос 2
Krasnodar_etc
@Krasnodar_etc
fundraiseup
Выкидывайте смело data-pos. А лучше замените его значения на 1-4. Вы можете записать в переменную position = list.offsetWidth - это будет ширина одного вашего слайда (Подробнее). Вот вам и магия. Например, по клике на 3-ю кнопку считывается всё так же data-pos = 3 уменьшается на 1 (не объясняю это, пробуйте, поймёте) и умножается на position . Таким образом JS-у теперь пофиг, какой ширины ваши слайды (главное, чтоб одинаковой) и заменить картинку не проблема.

Вставляете её ведь фоном? Медиа запрос и в фоне прописываете картинку поменьше. Или с размерами и zoom играйтесь, короче, как угодно )
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы