【问题标题】:Vertical align content slickslider垂直对齐内容滑块
【发布时间】:2016-05-26 08:20:57
【问题描述】:

我一直在努力让我的内容垂直对齐,但真的没有解决它。我尝试了adaptiveHeight参数,但它确实没有达到我想要的效果。

小提琴:http://jsfiddle.net/fmo50w7n/400

这就是代码的样子 HTML:

<section class="slider">
    <div style="width:500px;height:200px">slide1</div>
    <div style="width:500px;height:300px;">slide2</div>
    <div style="width:500px;height:100px;">slide3</div>
</section>

CSS:

$c1: #3a8999;
$c2: #e84a69;

.slider {
    width: auto;
    margin: 30px 50px 50px;
}

.slick-slide {
    background: $c1;
    color: white;
    padding: 40px 0;
    font-size: 30px;
    font-family: "Arial", "Helvetica";
    text-align: center;
}

.slick-prev:before, 
.slick-next:before {
    color: black;    
}

.slick-dots {
    bottom: -30px;
}


.slick-slide:nth-child(odd) {
     background: $c2;
}

JS:

$(".slider").slick({
    autoplay: true,
    dots: true,
    variableWidth:true,
    responsive: [{ 
        breakpoint: 500,
        settings: {
            dots: false,
            arrows: false,
            infinite: false,
            slidesToShow: 2,
            slidesToScroll: 2
        } 
    }]
});

【问题讨论】:

  • 不确定 CSS 的可能性(滑块 CSS 是动态创建的,正如我所见,许多类都是动态添加的),所以,你可以用 jQuery 来做:jsfiddle.net/fmo50w7n/403
  • 非常感谢!像魅力一样工作!

标签: css vertical-alignment slick.js


【解决方案1】:

这个解决方案对我有用:

.slick-track {
  display: flex;
}
.slick-track .slick-slide {
  display: flex;
  height: auto;
  align-items: center;
  justify-content: center;
}

参见此处的示例:

https://codepen.io/leggomuhgreggo/pen/mEmzGN

【讨论】:

  • 也适合我!谢谢
【解决方案2】:

我认为,您需要将文本、内容放在段落或标题中,这样您就可以只与特定内容而不是整个 div 进行交流。

然后在你的 CSS 中这样做:

p {
  margin: auto;
  position: absolute;
  top: 50%; left: 50%;
  -webkit-transform: translate(-50%,-50%);
      -ms-transform: translate(-50%,-50%);
          transform: translate(-50%,-50%);
}

您可能还需要指定宽度。

这样做是改变段落生成的原点,而不是从左上角,而是从元素的中心使用 transform: translate。然后使用绝对定位和 50% 的顶部和左侧百分比将其对齐到父元素的中间。

由于我还在自学,所以我正在尽力帮助您,祝您好运。 :)

来源:https://css-tricks.com/centering-percentage-widthheight-elements/

【讨论】:

【解决方案3】:

我也一直在尝试解决这个问题。我找到了两种可以解决问题的方法。

  1. 为每张幻灯片制作一个 div 容器

.slick-slide .slidecontainer {
    display: inline-block;
    vertical-align: middle;
    float:none;
}
  1. 将 display flex 和 align-items center 添加到 slick-track。

.slick-track
{
    position: relative;
    top: 0;
    left: 0;
    display: flex;
    align-items: center;
}

第二种方法适用于大多数用例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2016-11-20
    • 1970-01-01
    相关资源
    最近更新 更多