使用div更改活动的Slick Carousel

3
我们正在使用slick carousel,使得只有<div class='item__wrapper'>一次只显示1个幻灯片。下面有三个items,点击item时,应更新slick carousel。 问题
  1. 当将item__boxes作为slick轮播时,所有的样式都错了,所以我们不能这么做:$('.item__boxes).slick({});
  2. 在单击item__boxes中的第一个、第二个或第三个item时,item__wrapper总是设置为slide 3
问题
  • 如何设置item__boxes,使得在点击该item时它符合我们的目标?例如,在item__boxes中点击第二个item,将item__wrapper设置为第二个幻灯片。
目标/期望结果:
  1. 在点击第一个item时,在item__wrapper中设置第一张幻灯片为活动幻灯片
  2. 在点击第二个item时,在item__wrapper中设置第二张幻灯片为活动幻灯片
  3. 在点击第三个item时,在item__wrapper中设置第三张幻灯片为活动幻灯片
  4. 实现所有目标,即1-3,而不执行$('.item__boxes).slick({});
代码:

$('.item__wrapper').slick({
 
          infinite: true,
          speed: 1500,
          dots: false,
          prevArrow: false,
          nextArrow: false
});

$('.item__boxes').on('click', function() {
 
 var slickIndex = $(this).attr('data-slick-index');
 $('.item__wrapper').slick('slickGoTo', slickIndex);
});
.filter {
  width: 100%;
  height: 100%;
  padding: 45px;
  margin-right: -45px;
}
.item {
  display: none;
  position: relative;
}
.item.active {
  display: block;
}
.item1 {
  background-image: url("https://placeimg.com/1000/480/nature");
}
.item2 {
  background-image: url("https://placeimg.com/640/480/arch");
}
.item3 {
  background-image: url("https://placeimg.com/640/480/tech");
}
.item__wrapper {
  max-width: 60%;
  position: relative;
  background-size: cover;
  background-repeat: no-repeat;
  background-color: rgba(238, 238, 238, 0.5);
}
.item__img img {
  top: 0px;
  position: absolute;
  width: 100% !important;
  opacity: 0.5;
}
.item__text {
  top: 0px;
  position: relative;
  min-height: 100%;
  line-height: 1.4;
  padding-right: 70px;
  z-index: 5;
  display: flex;
  flex-direction: column;
  align-items: top;
  justify-content: center;
}
.item__boxes {
  display: flex;
  position: relative;
  opacity: 0.9;
}
.item__boxes > div {
  border: 1px solid;
}
.col-padding {
  padding: 16px 16px 5px 16px;
}
.col-m-12 {
  width: 100%;
}
@media (min-width: 1024px) {
  .col-t-6 {
    width: 50%;
  }
}
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.css"/>

<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick-theme.css"/>
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
    
<div class="item__wrapper">
   <div class="item active" id='item1'>
     <div class="item__text">
      <div class="filter">
       <h3>Some title 1</h3>
       <p>Efficiently communicate sticky quality vectors after compelling growth strategies. Compellingly scale future-proof content rather than enterprise users. Uniquely build scalable applications vis-a-vis performance based functionalities. Monotonectally procrastinate.</p>
      </div>
     </div> 
    </div>
   <div class="item active" id="item2" >
        <div class="item__text">
      <div class="filter">
       <h3>Some title 2</h3>
       <p>Efficiently communicate sticky quality vectors after compelling growth strategies. Compellingly scale future-proof content rather than enterprise users. Uniquely build scalable applications vis-a-vis performance based functionalities. Monotonectally procrastinate.</p>
      </div>
     </div> 
    </div>
   <div class="item active"  id="item3" >
        <div class="item__text">
      <div class="filter">
       <h3>Some title 3</h3>
       <p>Efficiently communicate sticky quality vectors after compelling growth strategies. Compellingly scale future-proof content rather than enterprise users. Uniquely build scalable applications vis-a-vis performance based functionalities. Monotonectally procrastinate.</p>
      </div>
     </div> 
    </div>
 
   
</div>
<div class="item__boxes">
     <div class="box col-m-12 col-t-6 col-padding" data-slick-index="-1">
      <div>Some Title</div>
      <div>Enthusiastically incubate diverse initiatives without multifunctional strategic theme areas.</div>
    </div>
    <div class="box col-m-12 col-t-6 col-padding" data-slick-index="0">
     <div>Globally Title</div>
     <div>Globally impact integrated infomediaries via seamless mindshare. </div>
    </div>
    <div class="box col-m-12 col-t-6 col-padding" data-slick-index="1">
     <div>Distinctively Title</div>
     <div>Distinctively strategize long-term high-impact ideas whereas client-centered leadership skills.</div>
    </div>
 </div>

1个回答

5

试试这个。

$('.item__wrapper').slick({
  infinite: true,
  speed: 1500,
  dots: false,
  prevArrow: false,
  nextArrow: false
});

$('[data-slide]').click(function(e){
  var slideno = $(this).data('slide');
  $('.item__wrapper').slick('slickGoTo', slideno);
});
.filter {
  width: 100%;
  height: 100%;
  padding: 45px;
  margin-right: -45px;
}
.item {
  display: none;
  position: relative;
}
.item.active {
  display: block;
}
.item1 {
  background-image: url("https://placeimg.com/1000/480/nature");
}
.item2 {
  background-image: url("https://placeimg.com/640/480/arch");
}
.item3 {
  background-image: url("https://placeimg.com/640/480/tech");
}
.item__wrapper {
  max-width: 60%;
  position: relative;
  background-size: cover;
  background-repeat: no-repeat;
  background-color: rgba(238, 238, 238, 0.5);
}
.item__img img {
  top: 0px;
  position: absolute;
  width: 100% !important;
  opacity: 0.5;
}
.item__text {
  top: 0px;
  position: relative;
  min-height: 100%;
  line-height: 1.4;
  padding-right: 70px;
  z-index: 5;
  display: flex;
  flex-direction: column;
  align-items: top;
  justify-content: center;
}
.item__boxes {
  display: flex;
  position: relative;
  opacity: 0.9;
}
.item__boxes > div {
  border: 1px solid;
}
.col-padding {
  padding: 16px 16px 5px 16px;
}
.col-m-12 {
  width: 100%;
}
@media (min-width: 1024px) {
  .col-t-6 {
    width: 50%;
  }
}
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.css"/>

<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick-theme.css"/>
<script type="text/javascript" src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.9.0/slick.min.js"></script>
    
<div class="item__wrapper">
   <div class="item active" id='item1'>
     <div class="item__text">
      <div class="filter">
       <h3>Some title 1</h3>
       <p>Efficiently communicate sticky quality vectors after compelling growth strategies. Compellingly scale future-proof content rather than enterprise users. Uniquely build scalable applications vis-a-vis performance based functionalities. Monotonectally procrastinate.</p>
      </div>
     </div> 
    </div>
   <div class="item" id="item2" >
        <div class="item__text">
      <div class="filter">
       <h3>Some title 2</h3>
       <p>Efficiently communicate sticky quality vectors after compelling growth strategies. Compellingly scale future-proof content rather than enterprise users. Uniquely build scalable applications vis-a-vis performance based functionalities. Monotonectally procrastinate.</p>
      </div>
     </div> 
    </div>
   <div class="item"  id="item3" >
        <div class="item__text">
      <div class="filter">
       <h3>Some title 3</h3>
       <p>Efficiently communicate sticky quality vectors after compelling growth strategies. Compellingly scale future-proof content rather than enterprise users. Uniquely build scalable applications vis-a-vis performance based functionalities. Monotonectally procrastinate.</p>
      </div>
     </div> 
    </div>
 
   
</div>
<div class="item__boxes">
     <div class="box col-m-12 col-t-6 col-padding" data-slide="0">
      <div>Some Title</div>
      <div>Enthusiastically incubate diverse initiatives without multifunctional strategic theme areas.</div>
    </div>
    <div class="box col-m-12 col-t-6 col-padding" data-slide="1">
     <div>Globally Title</div>
     <div>Globally impact integrated infomediaries via seamless mindshare. </div>
    </div>
    <div class="box col-m-12 col-t-6 col-padding" data-slide="2">
     <div>Distinctively Title</div>
     <div>Distinctively strategize long-term high-impact ideas whereas client-centered leadership skills.</div>
    </div>
 </div>


我真傻,现在我看到问题了。在我的初始JS中,我错误地使用了item__boxes,而应该使用单独的<div class="box col-m-12 col-t-6 col-padding">元素。 - usernameabc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接