2018.02.14WEB - HTML CSS

自分用CSSチートシート

フレックスボックス

between / left / center / right
そして2~6個までの div と li 対応

/* ---flex--- */
.flex-between,
.flex-left,
.flex-center,
.flex-right {
	display: -webkit-box;
	display: -ms-flexbox;
	display: -webkit-flex;
	display: flex;
	-webkit-box-pack:justify;
	-ms-flex-pack:justify;
	-flex-pack:justify;
	-ms-flex-wrap:wrap;
	flex-wrap: wrap;
}
/* ---between--- */
.flex-between {
	-webkit-justify-content: space-between;
	justify-content: space-between;
}
/* ---left--- */
.flex-left {
	-webkit-justify-content: flex-start;
	justify-content: flex-start;
}
/* ---center--- */
.flex-center {
	-webkit-justify-content: center;
	justify-content: center;
}
/* ---right--- */
.flex-right {
	-webkit-justify-content: flex-end;
	justify-content: flex-end;
}
.flex-two > div,
.flex-two > li {
	width: 48.7%;
	margin: 0 1.3%;
}
.flex-three > div,
.flex-three > li {
	width: 31.5%;
	margin: 0 1.375%;
}
.flex-four > div,
.flex-four > li {
	width: 23%;
	margin: 0 1.33%;
}
.flex-five > div,
.flex-five > li {
	width: 18%;
	margin: 0 1.25%;
}
.flex-six > div,
.flex-six > li {
	width: 15%;
	margin: 0 1%;
}
.flex-two > div:first-of-type,
.flex-three > div:first-of-type,
.flex-four > div:first-of-type,
.flex-five > div:first-of-type,
.flex-two > div:nth-of-type(odd),
.flex-three > div:nth-of-type(3n + 1),
.flex-four > div:nth-of-type(4n + 1),
.flex-five > div:nth-of-type(5n + 1),
.flex-six > div:nth-of-type(6n + 1),
.flex-two > li:first-of-type,
.flex-three > li:first-of-type,
.flex-four > li:first-of-type,
.flex-five > li:first-of-type,
.flex-six > li:first-of-type,
.flex-two > li:nth-of-type(odd),
.flex-three > li:nth-of-type(3n + 1),
.flex-four > li:nth-of-type(4n + 1),
.flex-five > li:nth-of-type(5n + 1),
.flex-six > li:nth-of-type(6n + 1) {
	margin-left: 0;
}
.flex-two > div:nth-of-type(2n),
.flex-three > div:nth-of-type(3n),
.flex-four > div:nth-of-type(4n),
.flex-five > div:nth-of-type(5n),
.flex-six > div:nth-of-type(6n),
.flex-two > li:nth-of-type(2n),
.flex-three > li:nth-of-type(3n),
.flex-four > li:nth-of-type(4n),
.flex-five > li:nth-of-type(5n),
.flex-six > li:nth-of-type(6n) {
	margin-right: 0;
}
<ul class="flex-between flex-three">
	<li>text</li>
	<li>text</li>
	<li>text</li>
</ul>

サムネイルを背景画像にし、 cover で

これにより、大きさの違う画像を指定した場合でも比率そのまま、レスポンシブも楽に。

/* ---thumb--- */
.thumb {
	display: block;
	position: relative;
	width: 100%;
}
.thumb:before {
	content:"";
	display: block;
	padding-top: 100%; /* thumbの幅に対する高さの比率。埋め込み動画16:9のとき 9/16*100=56.25 */
}
.thumb > div {
	position: absolute;
	top: 0;
	left: 0;
	bottom: 0;
	right: 0;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	background-color: transparent;
}
<div class="thumb">
  <div style="background-image:url(ここに画像URL);"></div>
</div>

天地左右・もしくは天地のみ中央

position : absolute を使うやり方。
display : table の中に display : table-cell を指定して vartical-align : middle にするやり方や、
フレックスボックスの align-items : center にするやり方もあるけど、ブロック要素なら以下が汎用性がきく気がするので。

天地左右中央

親 {
	position: relative;
}
子 {
	position: absolute;
	top: 50%;
	left: 50%;
	-webkit-transform: translate(-50%, -50%);
	-moz-transform: translate(-50%, -50%);
	-ms-transform: translate(-50%, -50%);
	transform: translate(-50%, -50%);
}

天地中央

親 {
	position: relative;
}
子 {
	position: absolute;
	top: 50%;
	-webkit-transform: translateY(-50%);
	-moz-transform: translateY(-50%);
	-ms-transform: translateY(-50%);
	transform: translateY(-50%);
}