どうも、くまだです。
物理プロパティと論理プロパティについてのあれこれ。
LPデザインのお仕事募集中です↓↓↓
物理プロパティと論理プロパティ
物理プロパティと論理プロパティってそもそも何ぞや、という話からですが、
物理プロパティは、おそらくコーディングする人の多くが使用しているものとを思われる、marginやpadding、widthやheightなどのプロパティです。書字方向に関わらず、上下左右の方向に沿ってスタイルが適用されるイメージです。
margin-topなら上にマージンが、padding-leftなら左にパディングが、という感じです。
論理プロパティの場合、書字方向に応じて(要素の状態に応じて)論理的に方向を指定できるプロパティになります。
例えば、普通のmarginで中央寄せする場合との違いは、例えば以下のような縦書きのとき、
<p class="text">南十字へ着きますのは、ある裏町の小さな家でした。ごとごと鳴る汽車のひびきと、すすきの風との間にいっぱい日光を吸った金剛石のようになったみじかい芝草の中に入れるのでした。二人がそのあかしの前を通って行きました。この前お父さんが持ってきてあげましょうか、と言ったら眼がさめたというふうでした。すると、向こうの河岸に二本の電信ばしらが、ちょうどさっきのような小さな青い火が見える</p>
<p class="text2">南十字へ着きますのは、ある裏町の小さな家でした。ごとごと鳴る汽車のひびきと、すすきの風との間にいっぱい日光を吸った金剛石のようになったみじかい芝草の中に入れるのでした。二人がそのあかしの前を通って行きました。この前お父さんが持ってきてあげましょうか、と言ったら眼がさめたというふうでした。すると、向こうの河岸に二本の電信ばしらが、ちょうどさっきのような小さな青い火が見える</p>
.text {
writing-mode: vertical-rl;
max-width: 300px;
margin-inline: 100px 200px;
}
.text2 {
writing-mode: vertical-rl;
max-width: 300px;
margin-right: 100px;
margin-left: 200px;
}.text {
writing-mode: vertical-rl;
width: 100%;
max-width: 300px;
margin-inline: 50px 50px;
}
.text2 {
writing-mode: vertical-rl;
width: 100%;
max-width: 300px;
margin-right: 50px;
margin-left: 50px;
}〇 margin-inlineの場合

〇 普通のmarginの場合

こんな感じで、縦書きの場合margin-inlineは上下方向に余白、通常のmarginは左右に余白が付きます。もちろん、縦書きでない普通の横書きの場合でmargin-inlineを使用すれば、左右に余白が付くようになります。
論理プロパティはいろいろあるんですが、おおざっぱに覚えるなら、
- ○○-inlineならテキストの方向に対して、水平方向
- ○○-blockならテキストの方向に対して、垂直方向
という感じです。さらに、それぞれの方向の起点と終点も、
- ○○-inline-startなら起点、○○-inline-endなら終点
- ○○-block-startなら起点、○○-block-endなら終点
のようなイメージで指定できます。
物理プロパティに対する論理プロパティ
〇 widthとheight系
| 物理プロパティ | 論理プロパティ |
|---|---|
| width | inline-size |
| max-width | max-inline-size |
| min-width | min-inline-size |
| height | block-size |
| max-height | max-block-size |
| min-height | min-block-size |
〇 margin系
| 物理プロパティ | 論理プロパティ |
|---|---|
| margin-top | margin-block-start |
| margin-bottom | margin-block-end |
| margin-left | margin-inline-start |
| margin-right | margin-inline-end |
| margin-topとmargin-bottom | margin-block |
| margin-leftとmargin-right | margin-inline |
〇 padding系
| 物理プロパティ | 論理プロパティ |
|---|---|
| padding-top | padding-block-start |
| padding-bottom | padding-block-end |
| padding-left | padding-inline-start |
| padding-right | padding-inline-end |
| padding-topとpadding-bottom | padding-block |
| padding-leftとpadding-right | padding-inline |
〇 position系
| 物理プロパティ | 論理プロパティ |
|---|---|
| top | inset-block-start |
| bottom | inset-block-end |
| left | inset-inline-start |
| right | inset-inline-end |
| topとbottom | inset-block |
| leftとright | inset-inline |
〇 border系
| 物理プロパティ | 論理プロパティ |
|---|---|
| border-top | border-block-start |
| border-bottom | border-block-end |
| border-left | border-inline-start |
| border-right | border-inline-end |
| border-topとborder-bottom | border-block |
| border-leftとborder-right | border-inline |
〇 border-radius系
| 物理プロパティ | 論理プロパティ |
|---|---|
| border-top-left-radius | border-start-start-radius |
| border-top-right-radius | border-start-end-radius |
| border-bottom-left-radius | border-end-start-radius |
| border-bottom-right-radius | border-end-end-radius |
などなど。その他にもいろいろあります。
プロパティいっぱいありすぎて大変…笑
ここまで読んでくださりありがとうございました。

