Заменить значение height в div
Доброго времени суток!
Подскажите, пожалуйста, как в div в style заменить значение height. Спасибо. Пример, есть элемент: <div class="slick-track" style="opacity: 1; height: 1674px; transform: translate3d(0px, -702px, 0px);"> В данном случае в style нужно (два варианта) 1) заменить height на maxheight: 498px; 2) убрать height |
var element = document.getElementsByClassName('slick-track'); element.style.height = '400px'; В таком случае в консоли ошибка "Cannot set property 'height' of undefined" |
_marisha,
<div class="slick-track" style="opacity: 1; height: 1674px; transform: translate3d(0px, -702px, 0px);"></div> <script> let {style} = document.querySelector(".slick-track"); style.height = ""; style.maxWidth = "498px" </script> |
Цитата:
element[0].style.height = '400px'; |
рони, спасибо что откликнулись )
let{style} = document.querySelector(".slick-track"); style.height = "400px"; // или style.height = ""; В таком случае ошибка в консоли Uncaught TypeError: Cannot destructure property `style` of 'undefined' or 'null'. var element = document.getElementsByClassName('slick-track'); element[0].style.height = '400px'; В таком случае ошибка Uncaught TypeError: Cannot read property 'style' of undefined |
_marisha,
рано запустили скрипт, элементов ещё нет с данным классом. ставить после инициализации слайдера. |
рони, действительно, если добавить код после подключения слайдера, то в консоли ошибок нет.
Но высота не применяется :( <script> $('.slider').slick({ arrows: false, infinite: true, autoplay: true, Speed: 3000, slidesToShow: 1, slidesToScroll: 1, pauseOnHover: true,//остановка при наведении pauseOnFocus: true, focusOnSelect: true, variableWidth: true, asNavFor: '.slider-nav' }); $('.slider-nav').slick({ vertical: true, arrows: true, infinite: true, slidesToShow: 9, slidesToScroll: 1, asNavFor: '.slider', pauseOnHover: true, pauseOnFocus: true, focusOnSelect: true, variableHeight: true, }); </script> <script> let style = document.querySelector(".slick-track"); style.height = ""; style.maxheight = "498px" </script> |
Цитата:
Цитата:
|
Скажите, пожалуйста, что сделано не так? (
|
_marisha,
фигурные скобки добавьте {} |
рони, всё равное не применяется заданная высота :( Видимо в slick слайдере не всё так просто...
let {style} = document.querySelector(".slick-track"); style.height = ""; style.maxheight = "498px" |
Цитата:
|
_marisha,
скорее всего нужных вам элементов несколько и нужен цикл, также для всего этого есть настройки в самом слайдере и css, смотрите документацию. |
Вложений: 2
Цитата:
Пример: 1) если выводится 7 элементов, тогда чтобы все элементы влезали в видимую область можно указать .slick-vertical .slick-slide{transform: translate3d(0, 20px, 0);} В таком случае все элементы становятся как нужно и активный элемент выделен белым (скрин "7 элементов") 2) а если при таком же translate3d(0, 20px, 0); выводить порядка 11 элементов, тогда не видно активного элемента (скрин "11 элементов"). Но в таком случае можно указать translate3d(0, 220px, 0), тогда активный элемент видно. Возможно ли сделать так, чтобы если у дива <div class="slick-track" style="opacity: 1; height: 1674px; transform: translate3d(0px, -702px, 0px);"></div>высота больше 400px,тогда применить .slick-vertical .slick-slide{transform: translate3d(0, 20px, 0);}. Иначе .slick-vertical .slick-slide{transform: translate3d(0, [B]220px[/B], 0);} |
Ну так работайте с объектом/элементами, в его методах при событиях нужных или инициализации. Я не помню этот слайдер наизусть, но насколько память не изменят, то у него приличное количество методов, опций, событий, вполне хватит.
|
Удалось решить вопрос следующим образом:
var $slider = $('.slick-vertical .slick-slide'); if ($slider.length > '8') { $('.slick-vertical .slick-slide').css('transform','translate3d(0, 220px, 0)'); $('.name').css('padding','8px'); $('.title_slider').css('height','480px'); } else { $('.title_slider').css('height','480px'); } |
Часовой пояс GMT +3, время: 12:41. |