【问题标题】:Slick-Slider image inside a div container not resize based windows sizediv容器内的Slick-Slider图像不调整基于窗口大小
【发布时间】:2018-11-09 07:33:11
【问题描述】:

我在我的网站上使用 slick-slider 来显示 6 个最新帖子。通常,slick-slider 内容上,有图片、帖子标题、类别、分享等(我参考iflscience homepage)。

问题是,如果将图像放在 slick-slider 之后,图像大小将响应窗口大小。

我正在使用 2 个 slideToShow 设置,它将在 slick-slider 低于一定宽度后响应 1 个 slideToShow

<div class="container-body">
  <div class="slider your-class">
    <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
  </div>
</div>

但如果我创建一个容器来扭曲最新的帖子内容,则图像大小不会响应窗口大小。

<div class="container-body">
  <div class="slider your-class">
    <div>
      <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    </div>
    <div>
      <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    </div>
    <div>
      <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    </div>
    <div>
      <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    </div>
    <div>
      <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    </div>
    <div>
      <img src="https://www.w3schools.com/bootstrap/la.jpg"/>
    </div> 
  </div>
</div>

我希望“div”内的图像像我没有使用“div”时一样动态变化。

我尝试创建一个脚本来使用height: auto 动态更改图像宽度,但有时它不起作用,这取决于我们调整大小的速度。

我明白,div 的大小将取决于图像大小,所以光滑的滑块高度根本不会改变。但是我没有任何线索可以解决它。

【问题讨论】:

  • 宽度:100%;显示:内联块;
  • Hai Joe Warner,感谢您的回答,因为我每张幻灯片都使用 2 张图片,所以我认为它无法使用它。此外,当尺寸减小到某个值以下时,它将使用 1 张图像。谢谢
  • 是的,你可以,我会进一步回答

标签: javascript jquery css slick.js


【解决方案1】:

https://developer.mozilla.org/en-US/docs/Web/CSS/display

Div的默认displayblockimg默认位置是inline我们可以通过将容器设置为内联或内联块并将宽度设置为100%来解决这个问题

我有一个循环来设置 img-con 的宽度和 img 容器的宽度。

document.querySelectorAll('.con').forEach(el => {
  el.style.width = `${el.children.length * 100}%`;
  Array.from(el.children).forEach(img => {
    img.style.width = `${100 / el.children.length}%`
  })
})
.slider {
  overflow: hidden;
  padding: 0 10px;
  width: 50%;
}

.img-con {
  width: 100%;
  display: inline-block;
  position: relative;
  float: left;
}

.con {
  display: inline-block;
  height: auto;
}

.img-con>img {
  width: 100%;
  position: absolute;
  top: 0;
}

.img-con:before {
  content: '';
  width: 100%;
  padding-bottom: 64%;
  display: block;
}

.container-body {
  display: flex;
  flex-direction: row;
}
<div class="container-body">
  <div class="slider your-class active">
    <div class="con">
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
    </div>
  </div>

  <div class="slider your-class active">
    <div class="con">
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
      <div class="img-con">
        <img src="https://www.w3schools.com/bootstrap/la.jpg" />
      </div>
    </div>
  </div>
</div>

【讨论】:

  • 我试过了,我使用 2 个 slidesToShow,当我从右侧调整窗口大小时,右侧的图像会移动并覆盖左侧,但根本没有响应调整大小。对不起,如果我错过了什么:D,谢谢乔
  • 是的,我很抱歉乔:D
  • 不用担心,我已经使用 flex 进行了更新,请告诉我这是否是您正在寻找的内容
  • 它工作得非常完美,乔。非常感谢 最后考虑。由于你使用 50vw,当#slideToShow 为 1 时,图像只有 50% 的页面并留有空白。我们可以使用 50vw 的任何替代方案,以便它响应 #slideToShow,还是我们必须使用脚本来确定它?谢谢乔
  • 我已经并排设置了两个滑块以匹配该站点。是的,有办法,但是我的午休时间已经结束了,等我有时间我会更新
猜你喜欢
  • 2013-05-28
  • 2012-11-28
  • 2021-03-11
  • 2013-05-13
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
相关资源
最近更新 更多