Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 1000 сообщений
Cообщения с меткой

карусель - Самое интересное в блогах

Следующие 30  »
rss_rss_hh_new

[Из песочницы] Карусель на Vanilla.JS

Понедельник, 24 Апреля 2017 г. 14:59 (ссылка)

Прочитав эту статью решил запилить свою карусель с блэк-джеком и jQuery хотя нет, без него ибо 2017 год и он не особо и нужен. Создадим функцию, которая принимает объект с параметрами и делает слайдер. Некоторые моменты будут опущены, такие как: вендорные префиксы, таймер смены и т.д.

Первое что мы сделаем — разметка для карусели, на классах, а не id, дабы можно было использовать несколько раз один и тот же модуль на странице, ну и специфичность не была 3-его порядка.



HTML


Prev
Next




















У нас есть:




  • Блок — обертка для карусели, который скрывает все, что вылезает за его рамки;

  • Контейнер для самих слайдов, которые будут располагаться в строчку, с помощью flexbox, можем себе это позволить;

  • Блоки слайдов, которые скрывают все, что вылезает за их границы;

  • Блок – хелпер для выравнивания картинки по вертикали. И, внутри него уже будем располагать картинки.



В CSS используем БЭМ нотификацию, ибо не засоряем глобальную область. Сделаем его чуть-чуть адаптивным.



CSS
.b-carousel {
width: 100%;
overflow: hidden;
position: relative;

box-sizing: border-box;
border: 1px solid;
}

.b-carousel__prev,
.b-carousel__next {
position: absolute;
top: 50%;
left: 20px;
width: 50px;
height: 50px;
background: #fff;
transform: translateY(-50%) translateZ(0);
cursor: pointer;
text-indent: 100%;
white-space: nowrap;
overflow: hidden;
z-index: 3;
}

.b-carousel__next {
left: auto;
right: 20px;
}

.b-carousel__wrap {
display: flex;
transition: transform .5s;
will-change: transform;
position: relative;
z-index: 1;
height: 100%;
}

.b-carousel__item {
flex: 0 0 100%;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
}

.b-carousel__img {
width: 100%;
display: block;
}




Transform: translateZ(0) у контролов — хак для вынесения их на отдельный композитный слой, чтобы при смещении контейнера со слайдами не было перерисовки кнопок. А у обертки свойство will-change. Оно для броузера, чтобы он знал, что с блоком будут происходить какие-то действия.



Да начнем писать код. Создадим функцию, которая принимает объект с параметрами:



function Carousel(setting) {

/* Scope privates methods and properties */
let privates = {};

/* Privates properties */
privates.setting = setting;

privates.sel = {
"main": document.querySelector(privates.setting.main),
"wrap": document.querySelector(privates.setting.wrap),
"children": document.querySelector(privates.setting.wrap).children,
"prev": document.querySelector(privates.setting.prev),
"next": document.querySelector(privates.setting.next)
};

privates.opt = {
"position": 0,
"max_position": document.querySelector(privates.setting.wrap).children.length
};

// Control
if(privates.sel.prev !== null) {
privates.sel.prev.addEventListener('click', () => {
this.prev_slide();
});
}

if(privates.sel.next !== null) {
privates.sel.next.addEventListener('click', () => {
this.next_slide();
});
}

}


Методы для управления ей:



/* Public methods */
// Prev slide
this.prev_slide = () => {
--privates.opt.position;

if(privates.opt.position < 0) {
privates.sel.wrap.classList.add('s-notransition');
privates.opt.position = privates.opt.max_position - 1;
}

privates.sel.wrap.style["transform"] = `translateX(-${privates.opt.position}00%)`;
};


// Next slide
this.next_slide = () => {
++privates.opt.position;

if(privates.opt.position >= privates.opt.max_position) {
privates.opt.position = 0;
}

privates.sel.wrap.style["transform"] = `translateX(-${privates.opt.position}00%)`;
};


Методы next_slide и prev_slide будут двигать обертку с помощью transform, дабы не было перерисовки блока, и анимация происходила на GPU.



Делаем карусель:



new Carousel({
"main": ".js-carousel",
"wrap": ".js-carousel__wrap",
"prev": ".js-carousel__prev",
"next": ".js-carousel__next"
});


Если нужна поддержка IE, то заменяем стрелочную функцию на:
Ну бросьте, все это знают

Если не все знают





Это все! Меньше кода — меньше трафика (jQuery 3.2 ~85kB). Контроль над параметрами и можем использовать несколько раз на странице.



Демо:







Если понравилась статья, то в скором времени будет продолжение с цикличной анимацией, touch-событиями и еще многими вкусными плюшками!
Original source: habrahabr.ru.

https://habrahabr.ru/post/327246/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
tambov_wolf

Есть женщины ...

Понедельник, 13 Марта 2017 г. 20:25 (ссылка)


tumblr_nwp6qzUvrF1tpmgf1o1_1280 (570x244, 1882Kb)

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
tanuuusa

Не видела такого!!!Ледяная карусель

Четверг, 09 Февраля 2017 г. 10:19 (ссылка)

Смотреть видео в полной версии
Смотреть это видео


Ледяная карусель



Здорово придумали! Только вот не опасно ли такое развлечение...Ссылка


Метки:   Комментарии (5)КомментироватьВ цитатник или сообщество
usugskiy

Без заголовка

Вторник, 31 Января 2017 г. 18:59 (ссылка)

Скидки акции карусель MOSKVA - https://vk.com/page-138647817_52524289

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
tixec7811

Без заголовка

Вторник, 31 Января 2017 г. 07:53 (ссылка)

Скидка карусель MOSKVA - https://vk.com/page-138647817_52524237

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
vuqsyy30

Без заголовка

Вторник, 31 Января 2017 г. 07:17 (ссылка)

Скидки акции карусель MOSKVA - https://vk.com/page-138647817_52524289

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Ира_Ивановна

Карусель...

Понедельник, 30 Января 2017 г. 09:37 (ссылка)

.


Листья кленов шелестели,
Был чудесный летний день.
Летним утром из постели
Никому вставать не лень.
image (2) (700x580, 218Kb)
Бутербродов насовали,
Яблок, хлеба каравай.
Только станцию назвали,
Сразу тронулся трамвай.

У заставы пересели
Bсей ватагой на другой.
В отдаленьи карусели
Забелели за рекой.
image (4) (700x371, 122Kb)

Читать далее...
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Лариса_Дунаева

Финский инженер построил ледяную карусель.

Суббота, 21 Января 2017 г. 17:51 (ссылка)



Финский инженер построил ледяную карусель.

Финский инженер создал необычный зимний аттракцион возле своего загородного дома. На озере возле поселка Лохья он построил ледяную карусель. Ее диаметр составляет 12 метров, толщина — более 20 см.



Читать далее...
Метки:   Комментарии (3)КомментироватьВ цитатник или сообщество
НАДЕЖДАСИБИРЬ

Зимнии забавы

Четверг, 19 Января 2017 г. 16:03 (ссылка)



Метки:   Комментарии (1)КомментироватьВ цитатник или сообщество
rss_novate

Архитектура: Карусель, карусель: в Хельсинки вырезали огромную карусель из льдины

Среда, 18 Января 2017 г. 20:00 (ссылка)




В восточной части Хельсинки на острове Куусилуото появился традиционный для этого времени года и местности аттракцион – огромная карусель, вырезанная из льда. Карусель может вращаться и катать на себе множество людей. Получилось, надо признать, более, чем забавно и абсолютно безопасно!

Подробнее..

http://www.novate.ru/blogs/180117/39699/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
opetrov

Без заголовка

Понедельник, 16 Января 2017 г. 09:05 (ссылка)
infopolk.ru/1/U/v-rossii/89...b63e01cc03

Треш и угар. Какие мультики показывают по ТВ


Я не только журналист, я ещё и мама. Моему сыну четыре с половиной года и он, как и большинство детей, обожает мультфильмы ...

Комментарии (0)КомментироватьВ цитатник или сообщество
anob

Без заголовка

Воскресенье, 15 Января 2017 г. 21:32 (ссылка)
infopolk.ru/1/U/v-rossii/89...5c6ab90332

Треш и угар. Какие мультики показывают по ТВ



Я не только журналист, я ещё и мама. Моему сыну четыре с половиной года и он, как и большинство детей, обожает мультфильмы ...
Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<карусель - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda