フロントの人の雑多メモ

【bxSlider】スライドの高さを揃える方法

【bxSlider】スライドの高さを揃える方法

jQueryのスライダープラグイン「bxSlider」でバラバラな高さのスライドの高さを揃える方法をご紹介します。

サンプル

普通に作ると高さがバラバラですが

この文章はダミーです。
この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。
この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。

このように、高さを揃えることができます。

この文章はダミーです。
この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。
この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。

やり方

こんなHTMLだとすると

<div class="bxslider_wrap">
	<div class="bxslider">
		<div class="slide">この文章はダミーです。</div>
		<div class="slide">この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。</div>
		<div class="slide">この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。</div>
	</div>
</div>

CSSに以下を追記するだけ。

.bxslider {
	display: flex;
}

.bxsliderをFlexboxにすると、子要素の高さが揃います。

上のサンプルの全体のCSSとしてはこんな感じです。

/* ↓ 左右のスライドをチラ見せするための記述 ↓ */
.bxslider_wrap {
	overflow: hidden;
}
.bx-wrapper {
	max-width: 360px!important;
	margin-left: auto;
	margin-right: auto;
	background: none;
	border: none;
	box-shadow: none;
}
.bx-viewport {
	overflow: visible!important;
}
/* ↑ 左右のスライドをチラ見せするための記述 ↑ */

/* 高さを揃える記述 */
.bxslider {
	display: flex;
}

/* スライドのスタイル */
.bxslider .slide {
	margin: 0 10px;
	padding: 20px;
	box-sizing: border-box;
	border: 2px solid #ddd;
}

スライド内の要素も中央揃え

スライド内の要素も縦方向中央揃えにして、こんなスライダーにするには

この文章はダミーです。
この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。
この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。

CSSをこのようにします。

.bxslider {
	display: flex;
}
.bxslider .slide {
	display: flex; /* Flexboxにする */
	flex-direction: column; /* 子要素を縦並びに */
	justify-content: center; /* 縦方向中央揃え */
	align-items: center; /* 横方向中央揃え (不要なら消す) */
}

.bxsliderに加え .slide もFlexboxにして、子要素を中央に配置します。

テキストボックスでも高さ揃え

よくあるこういうレイアウトで高さを揃えるサンプル。

この文章はダミーです。

この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。

この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。

この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。

こんなHTMLだとすると

<div class="bxslider_wrap">
	<div class="bxslider">
		<div class="slide">
			<p><img src="img01.jpg"></p>
			<div class="txt_area">
				<p>この文章はダミーです。</p>
			</div>
		</div>
		<div class="slide">
			<p><img src="img02.jpg"></p>
			<div class="txt_area">
				<p>この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。</p>
			</div>
		</div>
		<div class="slide">
			<p><img src="img03.jpg"></p>
			<div class="txt_area">
				<p>この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。</p>
			</div>
		</div>
		<div class="slide">
			<p><img src="img04.jpg"></p>
			<div class="txt_area">
				<p>この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。この文章はダミーです。文字の大きさ、量、字間、行間等を確認するために入れています。</p>
			</div>
		</div>
	</div>
</div>

このようなCSSにします。

/* ↓ 左右のスライドをチラ見せするための記述 ↓ */
.bxslider_wrap {
	overflow: hidden;
}
.bx-wrapper {
	max-width: 360px!important;
	margin-left: auto;
	margin-right: auto;
	background: none;
	border: none;
	box-shadow: none;
}
.bx-viewport {
	overflow: visible!important;
}
/* ↑ 左右のスライドをチラ見せするための記述 ↑ */

/* 高さを揃える記述 */
.bxslider {
	display: flex;
}
/* スライドのスタイル */
.bxslider .slide {
	display: flex; /* Flexboxにする */
	flex-direction: column; /* 子要素を縦並びに */
	margin: 0 10px;
	background: #fff;
	border: 2px solid #ddd;
}
.bxslider .slide .txt_area {
	flex-grow: 1; /* .txt_areaを下まで伸ばす */
	padding: 10px;
}

肝心なのは20行目、24、25行目、31行目です。

.slideをFlexboxにして、その子要素を縦並びに。 .txt_areaは下まで伸びるようにして、高さを揃えています。

テキトーに色々並べてしまいましたが、Flexboxを駆使すればレイアウトの幅が広がります。

色々試してみて、思い通りのレイアウトを実現させてみてください。

コメント

「できました!」などの報告もお待ちしております。

内容を確認の上、個人情報などは省いて掲載させていただきます。

直接送信されます。確認の上、「送信」してください。

シェア

Twitterでシェア Facebookでシェア LINEでシェア はてなブックマークでシェア