Имеется аккордион и в нем slick слайдер. Первый элемент раскрыт при загрузке, остальные скрыты. При клике на какой-либо из других элементов, текущий должен сворачиваться, а новых разворачиваться. Но получается так что в самом начале слайдер вроде бы инициализируется, но так как блок скрыт, при развороте блока, слайдер перекашивает, так как у него ни ширины и сдвига нет, а инициализировать при открытии если то все резко дергается.
$('.slider').slick();
$('.header').on('click', function (event) {
if (!$(this).parent().hasClass('active')) {
$('.item.active').find('.body').slideUp(800, function () {
$('.item').removeClass('active');
$(event.target).closest('.item').addClass('active');
var posTargetZone = $(event.target).closest('.item').offset().top;
var sliderBody = $(event.target).closest('.item').find('.body');
sliderBody.slideDown(800, function () {
$('html, body').animate({ scrollTop: posTargetZone }, 300);
});
});
}
});
body {
padding: 0;
margin: 0;
}
.container {
padding-left: 15px;
padding-right: 15px;
}
.item {
margin-bottom: 30px;
}
.item:not(.active) .body {
display: none;
}
.header {
height: 80px;
background-color: #aa66aa;
display: flex;
align-items: center;
padding: 0 50px;
cursor: pointer;
}
.body {
}
.slick-arrow {
z-index: 1;
}
.slick-prev {
left: 30px;
}
.slick-next {
right: 30px;
}
.description {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 20px;
text-align: center;
margin-top: 10px;
}
.desc-item {
background-color: #777;
color: #fff;
padding: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.css" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick-theme.min.css" rel="stylesheet"/>
<div class="container">
<div class="item active">
<div class="header"><span>Заголовок 1</span></div>
<div class="body">
<div class="slider">
<div>
<img src="https://picsum.photos/1000/500" alt="">
<div class="description">
<div class="desc-item">123</div>
<div class="desc-item">456</div>
<div class="desc-item">789</div>
</div>
</div>
<div>
<img src="https://picsum.photos/1000/500" alt="">
<div class="description">
<div class="desc-item">123</div>
<div class="desc-item">456</div>
<div class="desc-item">789</div>
</div>
</div>
<div>
<img src="https://picsum.photos/1000/500" alt="">
<div class="description">
<div class="desc-item">123</div>
<div class="desc-item">456</div>
<div class="desc-item">789</div>
</div>
</div>
</div>
</div>
</div>
<div class="item">
<div class="header"><span>Заголовок 2</span></div>
<div class="body">
<div class="slider">
<div>
<img src="https://picsum.photos/1000/500" alt="">
<div class="description">
<div class="desc-item">123</div>
<div class="desc-item">456</div>
<div class="desc-item">789</div>
</div>
</div>
<div>
<img src="https://picsum.photos/1000/500" alt="">
<div class="description">
<div class="desc-item">123</div>
<div class="desc-item">456</div>
<div class="desc-item">789</div>
</div>
</div>
<div>
<img src="https://picsum.photos/1000/500" alt="">
<div class="description">
<div class="desc-item">123</div>
<div class="desc-item">456</div>
<div class="desc-item">789</div>
</div>
</div>
</div>
</div>
</div>
<div class="item">
<div class="header"><span>Заголовок 3</span></div>
<div class="body">
<div class="slider">
<div>
<img src="https://picsum.photos/1000/500" alt="">
<div class="description">
<div class="desc-item">123</div>
<div class="desc-item">456</div>
<div class="desc-item">789</div>
</div>
</div>
<div>
<img src="https://picsum.photos/1000/500" alt="">
<div class="description">
<div class="desc-item">123</div>
<div class="desc-item">456</div>
<div class="desc-item">789</div>
</div>
</div>
<div>
<img src="https://picsum.photos/1000/500" alt="">
<div class="description">
<div class="desc-item">123</div>
<div class="desc-item">456</div>
<div class="desc-item">789</div>
</div>
</div>
</div>
</div>
</div>
</div>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей