CSS 邏輯屬性

 

針對可以抽取出共性的抽象概念(如開始位置,或行),

這些邏輯抽象概念需要在不同書寫模式下映射到左或右、上或下等物理的概念上,

CSS 邏輯屬性則提供此種操作方式。

以下列出在相同語系之下,物理屬性相同於邏輯屬性之列表

 

一、margin

margin 屬性 margin 邏輯屬性
margin-top margin-block-start
margin-right margin-inline-end
margin-bottom margin-block-end
margin-left margin-inline-start
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <style>
        .origin {
            width: 100px;
            height: 100px;
            border: 1px red solid;
            margin-top: 10px;
            margin-right: 10px;
            margin-bottom: 10px;
            margin-left: 10px;
        }

        .logic {
            width: 100px;
            height: 100px;
            border: 1px red solid;
            margin-block-start: 10px;
            margin-inline-end: 10px;
            margin-block-end: 10px;
            margin-inline-start: 10px;
        }
    </style>
</head>
<body>
    <div class="origin">
        <p>origin</p>
    </div>
    <div class="logic">
        <p>logic</p>
    </div>
</body>
</html>

其畫面為

 

二、border

border 屬性 border 邏輯屬性
border-top border-block-start
border-right border-inline-end
border-bottom border-block-end
border-left border-inline-start

 

三、padding

padding 屬性 padding 邏輯屬性
padding-top padding-block-start
padding-right padding-inline-end
padding-bottom padding-block-end
padding-left padding-inline-start

 

四、positon

positon 屬性 positon 邏輯屬性
top inset-block-start
right inset-inline-end
bottom inset-block-end
left inset-inline-start

 

五、width、height

width、height 屬性 width、height 邏輯屬性
width inline-size
height block-size
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <style>
        .origin {
            width: 100px;
            height: 100px;
            border: 1px red solid;
        }

        .logic {
            inline-size: 100px;
            block-size: 100px;
            border: 1px red solid;
        }
    </style>
</head>
<body>
    <div class="origin">
        <p>origin</p>
    </div>
    <div class="logic">
        <p>logic</p>
    </div>
</body>
</html>

其畫面為

 

六、float

float 屬性 float 邏輯屬性
left inline-start
right block-end

 

七、text-align

width、height 屬性 width、height 邏輯屬性
left start
right end
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <style>
        .origin {
            width: 100px;
            height: 100px;
            border: 1px red solid;
            text-align: right;
        }

        .logic {
            inline-size: 100px;
            block-size: 100px;
            border: 1px red solid;
            text-align: end;
        }
    </style>
</head>
<body>
    <div class="origin">
        <p>origin</p>
    </div>
    <div class="logic">
        <p>logic</p>
    </div>
</body>
</html>

其畫面為

 

小結:

由各列表可以得知,邏輯屬性對於垂直方向屬性的關鍵字為 block,水平方向屬性的關鍵字為 inline。

 

對於不同語系的國家,書寫順序會可能有很大的差異,意思就是 block 跟 inline 的方向不同。例如:

在英語國家 padding-inline-start = padding-left

在阿拉伯padding-inline-start = padding-right

在日本 padding-inline-start = padding-top

這就意味著舊的邏輯屬性,在某些國家裏會變得不合常理。

引用自CSS的邏輯屬性與盒子模型

參考資料:

CSS Logical Properties and Values Level 1