web-dev-qa-db-ja.com

コンテンツスリックスライダーを垂直に揃える

私は自分のコンテンツを垂直に揃えるのに苦労してきましたが、実際には修正していません。私はadaptiveHeightパラメーターを試しましたが、実際には私が望んでいたことをしませんでした。

フィドル: http://jsfiddle.net/fmo50w7n/4

コードは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
        } 
    }]
});
10
Sandro

この解決策は私のために働きます:

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

ここの例を参照してください:

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

20
Simon

テキスト、コンテンツを段落または見出しに配置する必要があると思います。これにより、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/

1
Alexscended