position + transform
オールラウンダー的に使うならこれ。
/* 親要素(この要素のド真ん中に配置) */
.parent {
height: 500px; /* 高さは必須 */
position: relative;
}
/* 中央に配置したい子要素 */
.child {
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}
positionで中央に配置したい子要素の左上角を中央に持っていく。次にtransformで子要素の幅と高さそれぞれ半分戻す…と言う仕組み。ただし子要素内がテキストなどインライン系のものだと子要素の幅が安定しない。
例えばメインタイトルを中央にしたが、変なところで改行されたりとか。その場合は子要素に幅を指定。
幅を入れることにより、親要素目一杯ではなく左右に若干の余白も作れる。
/* 親要素(この要素のド真ん中に配置) */
.parent { position: relative; }
/* 中央に配置したい子要素 */
.child {
width: 80%; /* 左右に10%づつ余白 */
text-align: center;
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
}