これまで、CSSのposition:absoluteを使って要素を中央配置しようとする場合、以下のようなコードを書いていた。
以下SCSSコード。
.parents {
position: relative;
.child {
position: absolute;
content: '';
background: #333;
width: 10px;
height: 10px;
top: 10px;
left: 50%;
margin-left: -5px;
}
}
一度、left:50%とした後に、要素の幅を2で割った値をmargin-leftとして設定するやり方だ。
これでももちろん問題ないのだが、将来要素の幅を変えたい時に、合わせてmargin-leftの値も再計算し設定し直す必要がある。
これでは保守性に欠けるだろう。
最近知ったのだが、transformを使ったやり方が多く用いられているらしい。
transform: translateX(-50%);
margin-leftの行を上記のコードに置き換えることで、自動的に要素の幅の半分の値を使って再配置してくれ、最終的に先程と同じ結果となる。
こちらの方が保守性が高いので積極的に使用していきたい。