光滑的滑块在弹性容器中不起作用

Posted

技术标签:

【中文标题】光滑的滑块在弹性容器中不起作用【英文标题】:Slick slider not working in a flex container 【发布时间】:2018-02-08 07:26:40 【问题描述】:

我正在尝试将光滑的轮播 (http://kenwheeler.github.io/slick/) 在列中垂直居中。所以我在列(光滑滑块的容器)上使用display: flex; align-items: center;,但它破坏了滑块。

所以我尝试使用绝对位置或使用 flexbox 使轮播居中,但它们都破坏了光滑的滑块。

我希望有人为此问题提供 css/js/jquery 解决方案:)

这里有一个问题:https://jsfiddle.net/victor_allegret/g3dsd78w/

(抱歉,我在向堆栈溢出 sn-p 添加 slick 时遇到问题)

HTML:

<div class='flex-container'>

 <div class='single-item'>

  <div><h3>1</h3></div>
  <div><h3>2</h3></div>
  <div><h3>3</h3></div>
  <div><h3>4</h3></div>
  <div><h3>5</h3></div>
  <div><h3>6</h3></div>

 </div>

</div>

CSS:

.flex-container 
 /* Using flexbox */
 display: flex;
 align-items: center;
 /*----*/
 margin: 0 auto;
 padding: 40px;
 height: 500px;
 width: 80%;
 color: #333;
 background: #419be0;


.slick-slide 
 text-align: center;
 color: #419be0;
 background: white;

JS:

$(".single-item").slick(
 dots: true
);

【问题讨论】:

【参考方案1】:

像这样? With absolute position.

.abs-container 
  position:absolute;

  height:140px;
  width:300px;
  top:50%;
  left:50%;
  margin:-70px 0 0 -150px;

  color: #333;
  background: #419be0;

And this with FlexBox.

.flex-container 
    position:absolute;
    top:0px;
    bottom:0px;
    width:100%;
    height:100%;

  /* Using flexbox */
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: center;
    align-content: stretch;
    align-items: center;
  /*----*/

  color: #333;
  background: #419be0;

.flex-child 
    width: 300px;
    order: 0;
    flex: 0 1 auto;
    align-self: center;

HTML

<div class='flex-container'>
    <div class='flex-child'>
      <div class='single-item'>
      .
      .
      .

【讨论】:

我在使用 flexbox 和 position: absolute; top: 50% 时遇到了同样的问题。两者都打破了滑块我不知道为什么:/ 您在我的回答中看到了编辑后的 ​​JSFiddle 吗?它似乎有效:jsfiddle.net/StepBaro/g3dsd78w/2 真的很抱歉,我尝试了您的解决方案,但没有在绝对包装器上添加高度和宽度。所以现在它工作了非常感谢!但我仍然想知道为什么它不能只在父级上使用 display: flex; align-items: center; @VictorAllegret 可能是因为插件引用了自己的容器来检索大小,“display: flex”失败。我们应该清楚插件的结构才能理解问题。 父元素上的 position: absoute; top: 0px; width:100%; height:100% 对我有用。向父级添加另一个祖先,至少有 position:relative 可以避免有条件的 top:0px 尊重弹性显示。

以上是关于光滑的滑块在弹性容器中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

对于 QML,为啥 LayoutMirroring 在 Slider 中不起作用?

浮动在弹性容器中不起作用

UISlider 在 UITableViewCell 中不起作用

MPVolumeView 的滑块 setVolumeThumbImage:forState: 在 iOS5 上不起作用

ExtJS 滑块在视图中不可见

使用光滑滑块作为另一个滑块的导航,该滑块在ajax加载方法调用时打开