Отслеживание второго активного слайда
Имеется слайдер owl carousel 1.3 с 6 слайдами. Отображаются по 3. Активные слайды имеют класс active. Каким образом можно отследить второй активный слайд и применять css только к нему (требуется прописать display:block для кнопки внутри слайда)? Через nth-child работает почти как надо, но он слайды считает только при загрузке страницы, при перелистывании слайдов css не обновляет.
![]() <script type="text/javascript"> $(document).ready(function() { $(".owl-zk").owlCarousel({ items:3, addClassActive:true, navigation: true, navigationText: ['<img src="/left.png" alt="" />', '<img src="/right.png" alt="" />'], pagination: false }); });</script> |
Может селектор неправильно присваиваете? попробуйте вместо "nth-child" "nth-of-type"
|
Цитата:
$(selector).owlCarousel({ options }).on('translated.owl.carousel', function(e) { e.item.index - индекс текущего слайдера }) |
j0hnik,
Не работает:) laimas, Читал документацию, сейчас пытаюсь присвоить стиль к активному элементу:) |
sergey24,
активный, это, по идее, индекс слайдера с нулевой позицией относительно окна слайдера, но от общего числа слайдов. А если из группы трех взять второй, это выделить средний, надо полагать? Поэтому не текущий активный нужен, а текущий + 1. |
laimas,
Всё очень плохо:write: |
sergey24,
скачайте новую версию owlCarousel тогда можно будет сделать с помощью api которое показал laimas, только немного уточнить его код. выборка нужна не по индексу слайдера а по фильтрации активных блоков https://owlcarousel2.github.io/OwlCarousel2/ |
Цитата:
|
Цитата:
|
Цитата:
|
Может кодом кто-нибудь помочь?:(
|
laimas,
количество блоков всегда разное(клоны слева и справа про запас) , api говорит показываю блок 1 , а по порядку блок в этот момент или 3 или 7 |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Что-то тут не сходится, надобности никогда в этом не было, но как нибудь спецом проверю индекс текущего и его класс. |
laimas,
не понимаю, что вы написали |
рони,
Обновился до 2 версии. Сейчас буду копать код, который предоставил laimas. |
laimas,
вероятно event.page.index нужен а не event.item.index |
owlCarousel css для центрального блока
sergey24,
вариант без индекса центральный блок красный, css строка 42 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/owl.carousel.js"></script> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.carousel.css"> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.theme.default.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.theme.green.css" /> <style type="text/css"> .owl-carousel .item { height: 10rem; background-color: #4DC7A0; padding: 1rem; position:relative; } .owl-carousel .owl-prev{ position:absolute; top:0; left:0; display:block; height:99%; width:90px; background-color: #FF00FF; } .owl-carousel .owl-next{ position:absolute; top:0; right:0; display:block; height:99%; width:90px; background-color: #FF00FF; } .prev:after, .next:after{ content: attr(class); } .prev,.next{ display: inline-block; } .red .item{ background-color: #FF0000; } </style> <title>Owl Carousel 2.1.0 Responsive by Geyan</title> <script> $(function() { $(".owl-carousel").owlCarousel({ loop: true, startPosition: -1, items: 3, nav: true, navText: ['<img src="/left.png" alt="" />', '<img src="/right.png" alt="" />'], dots: false }).on("translated.owl.carousel", setCls); function setCls() { $(".owl-item").removeClass("red").filter(".active").eq(1).addClass("red") } setCls() }); </script> </head> <body> <div class="owl-carousel"> <div class="item"> <h4>1</h4> </div> <div class="item"> <h4>2</h4> </div> <div class="item"> <h4>3</h4> </div> <div class="item"> <h4>4</h4> </div> <div class="item"> <h4>5</h4> </div> <div class="item"> <h4>6</h4> </div> <div class="item"> <h4>7</h4> </div> <div class="item"> <h4>8</h4> </div> <div class="item"> <h4>9</h4> </div> <div class="item"> <h4>10</h4> </div> <div class="item"> <h4>11</h4> </div> <div class="item"> <h4>12</h4> </div> </div> </body> </html> |
Цитата:
Цитата:
Три элемента в отображении: Если верить первому утверждению, то индекс в данном случае бесполезен, как он будет бесполезен и для второго утверждения. Если верить второму утверждению, то нет проблем, при этом не важно сколько слайдеров в отображении. То есть то, что первое в блоке, это текущий индекс. Кроме этого есть информация и о страницах, включая и о текущей, не думаю что этого мало и надо шарить фильтром по классу среди всех элементов. |
Owl Carousel центральный блок и event.item.index
laimas,
ок! не очень понимаю ваши обьяснения, но был неправ, event.item.index использовать можно. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/owl.carousel.js"></script> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.carousel.css"> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.theme.default.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.theme.green.css" /> <style type="text/css"> .owl-carousel .item { height: 10rem; background-color: #4DC7A0; padding: 1rem; position:relative; } .owl-carousel .owl-prev{ position:absolute; top:0; left:0; display:block; height:99%; width:90px; background-color: #FF00FF; } .owl-carousel .owl-next{ position:absolute; top:0; right:0; display:block; height:99%; width:90px; background-color: #FF00FF; } .prev:after, .next:after{ content: attr(class); } .prev,.next{ display: inline-block; } .red .item{ background-color: #FF0000; } </style> <title>Owl Carousel 2.1.0 Responsive by Geyan</title> <script> $(function() { $(".owl-carousel").owlCarousel({ items: 3, nav: true, navText: ['<img src="/left.png" alt="" />', '<img src="/right.png" alt="" />'], dots: false }).on("translated.owl.carousel", setCls); function setCls(event) { var num = event && event.item ? event.item.index + 1 : 1 ; $(".owl-item").removeClass("red").eq(num).addClass("red") } setCls() }); </script> </head> <body> <div class="owl-carousel"> <div class="item"> <h4>1</h4> </div> <div class="item"> <h4>2</h4> </div> <div class="item"> <h4>3</h4> </div> <div class="item"> <h4>4</h4> </div> <div class="item"> <h4>5</h4> </div> <div class="item"> <h4>6</h4> </div> <div class="item"> <h4>7</h4> </div> <div class="item"> <h4>8</h4> </div> <div class="item"> <h4>9</h4> </div> <div class="item"> <h4>10</h4> </div> <div class="item"> <h4>11</h4> </div> <div class="item"> <h4>12</h4> </div> </div> </body> </html> |
Цитата:
Следующий шаг - все это фигня, на повестке дня стоит слайдер, в котором, при изменении, активный слайд рассыпается на частицы спадающие вниз или рассыпается на частицы сторона противоположная движению с постепенным размытием, аки хвост за кометой. Пока идею не запатентовал можно предлагать решения, если конечно комп от такого слайдера не скиснет. :) |
Цитата:
|
Цитата:
|
рони,
кстати, надо обрабатывать событие начала трансляции, убирая класс у активного слайда, иначе "моргает", не кажется? |
слайдер падающие блоки
Цитата:
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> #slider{ position: relative; width: 500px; height: 300px; background-color: #000000; margin: 0; padding: 0; overflow: hidden; } #slider div{ margin: 0; padding: 0; position: absolute; background-color: #0000FF; background-repeat: no-repeat; } </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css"> <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"> </script> <script> $(function() { var slider = $("#slider"); var height = slider.height(); var width = slider.width(); function load_img(next, src, x, y) { var w = width / x | 0; var h = height / y | 0; slider.height(height = h * y); slider.width(width = w * x); slider.css({ backgroundSize: width + "px " + height + "px", backgroundImage: "url(" + next + ")" }); var n = 0, arr = Array(x * y); $.each(arr, function(i, el) { !n && y--; arr[i] = $("<div>", { css: { left: n * w, top: y * h, width: w, height: h, backgroundImage: "url(" + src + ")", backgroundPosition: -n * w + "px " + -y * h + "px", backgroundSize: width + "px " + height + "px" } }).prependTo(slider); n = ++n % x }); return arr } function show(arr) { $.when.apply(null, arr.map(function(el) { var time = Math.floor(Math.random() * 1000+800); return el.css({ "z-index": 100 }).delay(time).animate({ top: height }, { easing: "easeOutCirc", duration: 1200}) }) ).done(function() { arr.forEach( function(el) { el.remove() }); setTimeout(go, 1000); }); } var arrSrc = ["http://wallpapershome.ru/images/pages/pic_h/7086.jpg", "http://wallpapershome.ru/images/pages/pic_h/8983.jpg", "http://www.kinomania.ru/images/wallpapers_film/w1920x1080_15585.jpg"]; function preload(arr,foo) { var count = 0; function l() { if(++count == arr.length) foo(); } return arr.map(function(src) { var img = new Image(); img.onload = l; img.src = src; return img }) } function go() { var arr = load_img(arrSrc[1].src, arrSrc[0].src, 25, 15); show(arr); arrSrc.push(arrSrc.shift()); } arrSrc = preload(arrSrc,go); }); </script> </head> <body> <div id="slider"></div> </body> </html> |
Цитата:
|
рони,
все таки есть надежда прикупить самолет. :D Это не частицы, физика частиц, это иное. Хотя, например, в 3D моделировании частицей может быть и объект. Я имел ввиду элементарные частицы, вплоть до пикселя. Неужто не наблюдали как комета рассыпается? :) А это просто эффект, но тормоза уже наблюдаются. ;) |
|
Цитата:
var arr = load_img(arrSrc[1].src, arrSrc[0].src, 25, 15); останови комп :lol: |
Нет рони, это не то. Сперва откалываются большие куски, потом они распадаются на более мелкие, и так до самых малых частиц. Скорости их будут различны, физика поведения тоже, и чем далее от объекта, тем более "размазан" хвост.
Не потянет такого слайдера даже мой восьмиядерный комп в режиме реального времени. :) А смена цвета у активного слайда все равно будет заметна, так как он движется с тем же цветом, что будет назначен в конце движения другому. Надо при начале движения удалять цвет у активного. |
рони,
laimas, Спасибо большое Вам за помощь, всё работает! |
рони,
Маленькая проблемка. При загрузке сайта, если включен "loop", то класс присваивается клонированному слайду, можно ли как-то подправить? ![]() |
Цитата:
|
рони,
Цитата:
|
sergey24,
пост 21 работает , запустите код там снова, добавил loop |
sergey24,
startPosition - уточните сами если нужно |
рони,
Если отрицательный startPosition писать, то слайдер клонов не трогает, а переходит в конец списка. В 21 посте при загрузке отлично всё срабатывает и ставит куда надо стиль, но если листаем влево, то и стиль присваивается левому (из 3) слайду. Если листаем вправо, то правому:) Сейчас соединить пытаюсь:) |
Часовой пояс GMT +3, время: 12:24. |