当我调整浏览器大小时,react-slick 幻灯片的宽度不会改变

Posted

技术标签:

【中文标题】当我调整浏览器大小时,react-slick 幻灯片的宽度不会改变【英文标题】:The width of react-slick slide does not change when I resize the browser 【发布时间】:2019-05-29 13:44:16 【问题描述】:

我通过 react-slick 创建了一张推荐幻灯片。

我的代码是:

 const settings = 
      dots: true,
      adaptiveHeight: true,
      swipeToSlide: true,
      infinite: true,
      speed: 500,
      slidesToShow: 1,
      slidesToScroll: 1,
      autoPlay: true,
      className: 'sample'
    ;

一切正常。但是,当我调整浏览器的大小时,幻灯片的宽度不会改变。我检查了我的 console.log,slick-track 的宽度总是 9900px。我认为调整浏览器大小时应该更改宽度。

谁能帮我解决这个问题?我认为在 reactjs 中调整浏览器大小时重新渲染元素有问题:(。

谢谢

【问题讨论】:

检查库的问题部分。这似乎是一个非常基本的问题。肯定有人会解决的。 您是否在任何地方设置宽度?我看到您将高度设置为自适应,但是(而且我不是反应专家)我认为您需要将宽度设置为百分比。 @JohnLord 我没有设置宽度。宽度将设置为 slick-track 的内联样式。当我们调整浏览器大小时,宽度会动态改变以使幻灯片响应 @humanbean 我仔细检查了,但是在库中,它没有提到设置滑块的宽度。我检查了其他的演示,当我调整浏览器的大小时,演示的宽度会动态改变:(。我对这种情况没有想法 【参考方案1】:

如果您的目标是在调整浏览器大小时更改 react-slick 选项,请使用响应式选项。

var settings = 
  dots: true,
  infinite: false,
  speed: 500,
  slidesToShow: 4,
  slidesToScroll: 4,
  initialSlide: 0,
  responsive: [
    
      breakpoint: 1024, // width to change options
      settings: 
        slidesToShow: 3,
        slidesToScroll: 3,
        infinite: true,
        dots: true
      
    ,
    
      breakpoint: 600,
      settings: 
        slidesToShow: 2,
        slidesToScroll: 2,
        initialSlide: 2
      
    
  ]

https://react-slick.neostack.com/docs/example/responsive/

【讨论】:

以上是关于当我调整浏览器大小时,react-slick 幻灯片的宽度不会改变的主要内容,如果未能解决你的问题,请参考以下文章

当我在视图中添加两张幻灯片时,React-slick 在 DOM 中显示 5 个幻灯片元素

FlexSlider 2 在窗口调整大小时调整大小

react-slick 最后一张幻灯片在加载时首先显示

调整浏览器大小时如何调用useEffect

Flexslider 视口高度在调整大小时无响应

使用 react-slick 更改当前幻灯片