JavaScript
Понимаю, что готовый код не нужен, но все же вот пример JS.
Создание слайдера js
Никогда их не делал, решил написать свой. Хочу сделать с плавным смещением картинки(а не с заменой src и счетчиком). Как это создаётся? Если выстраиваются в ряд картинки с помощью flex, то как ограничить область видимости? Мне не нужен готовый код, просто кто знаком с принципом работы расскажите о нем. Спасибо!
- Создаешь контейнер.
- Присваиваешь контейнеру нужный размер.
- Присваиваешь контейнеру display: flex.
- Присваиваешь контейнеру overflow: hidden.
- Создаешь в контейнере элементы под картинки.
- Присваиваешь всем вложенным элементам min-width: 100%.
- Присваиваешь всем вложенным элементам transition.
- Присваиваешь отдельным вложенным элементам изображения.
- Создаешь отдельно кнопки в количестве, равном количеству картинок.
- Получаешь в JS все кнопки и элементы через querySelectorAll().
- Проходишься циклом forEach по кнопкам, получаешь индексы и присваиваешь каждой кнопке запуск события onclick.
- Внутри события onclick запускаешь еще один цикл forEach по элементам.
- Каждому элементу внутри этого цикла задаешь style.transform, равным смещению по координате x в процентах, привязанных к полученному ранее индексу.
- В результате каждая кнопка будет менять transform на [index]00%, что позволит элементам плавно двигаться внутри родителя по горизонтали.
Понимаю, что готовый код не нужен, но все же вот пример JS.
const elems = document.querySelectorAll('.container div');
const btns = document.querySelectorAll('button');
btns.forEach((e,i) => e.addEventListener('click', () => {
elems.forEach(e => e.style.transform = `translateX(-${i}00%)`);
}))
Само собой, это слайдер с привязкой к кнопкам. Чтобы слайды сами постепенно менялись, нужно добавлять, например, setInterval, который будет с задержкой постоянно сам кликать на кнопки и тем самым вызывать смещение. (function() {
let i = 1;
setInterval(() => {
btns[i++].click();
if (i === btns.length) i = 0;
}, 5000);
})();
Это создаётся при помощи кода js.
Kolya Ageev
Большое спасибо за ответ! Можно чуточку подробнее?
сначала нарисуй на бумажке:
будет у тебя окно (блок показа, может быть 1 и более картинок в показе) отображающее ленту из картинок, причем лента шире окна. Лента движется, перемещается относительно окна отображения, все картинки выходящие за пределы окна отображения скрыты, т.е. лента в слое под окном находится. Направление движения может задаваться разными способами, для начала можно реализовать однонаправленное движение. При движении и ограниченном количестве картинок, надо предусмотреть дополнение ленты - перемещать каринки из начала в конец ленты...
будет у тебя окно (блок показа, может быть 1 и более картинок в показе) отображающее ленту из картинок, причем лента шире окна. Лента движется, перемещается относительно окна отображения, все картинки выходящие за пределы окна отображения скрыты, т.е. лента в слое под окном находится. Направление движения может задаваться разными способами, для начала можно реализовать однонаправленное движение. При движении и ограниченном количестве картинок, надо предусмотреть дополнение ленты - перемещать каринки из начала в конец ленты...
Kolya Ageev
Спасибо, мне уже подсказали. Для полного представления картины мне не хватало свойства overflow:hidden; забыл про него)
Похожие вопросы
- Создание проверки заполнения полей формы js
- Создание iframe из ютуба средствами js
- Помогите определиться с выбором нового языка (JS(TS) vs Java)
- Js фреймворки, что полезного можно для себя найти?
- В чем цель фреймворков js web?
- [HTML/CSS/JS] Как сохранять изменённые в .js данные оффлайн-сервера локально?
- Почему jQuery методы популярнее js методов при общении с ДоМ?
- ПОЧЕМУ JS ТАКОЙ НЕПОНЯТНЫЙ???
- вопрос по JS. " простой ()";
- Порядок изучени JavaScripta. Путь к Node.js. Нужен совет по обучению от программистов
А в целом, все работает так как я себе и представлял, выстраиваем картинки и translate делаем. Возможно сделаю свою библиотеку, ибо изучить чужую не очень удобно, а со своим кодом работать проще.