邏輯CSS屬性:綜合指南
隨著跨瀏覽器對邏輯屬性的支持達到臨界質量,現在是探索其優勢的理想時機。這些屬性對於多語言網站是無價的,可以顯著提高代碼效率和可維護性。即使對於單語言站點,精簡的語法也提供了值得的好處。
例如,以元素為中心通常涉及此繁瑣的代碼:
<code>.thing { margin-left: auto; margin-right: auto; }</code>
終點margin: 0 auto;
提供較短的替代方案,會影響所有利潤。 margin-inline
邏輯屬性提供了一個更精確的解決方案,僅針對左右邊緣。
margin-inline
屬性優雅地設定了margin-left
和margin-right
。同樣, margin-block
管理margin-top
和margin-bottom
。此簡化擴展到border
和padding
屬性。例如, border-inline
僅適用邊界,避免了個體方向規格。
該方法將焦點從物理(左,右,頂部,底部)轉移到邏輯(內聯,塊)方向。內聯處理水平定位,而塊處理垂直定位。
但是,這種關係隨著書面方向的變化而變化。
上面的示例說明了CSS邏輯屬性 - 替代傳統特性,這些特性抽象了物理方向。
CSS最初是為英語(例如英語)而設計的,並不固有地支持像阿拉伯語這樣的左右(RTL)語言。 HTML的dir
屬性解決此問題:
<div dir="rtl"> ...</div>
CSS提供了等效的( direction: rtl;
),儘管HTML屬性是魯棒性的首選。
諸如中文,日語,韓語和蒙古語之類的語言可以水平寫(LTR或RTL)或垂直寫入。儘管水平寫作很普遍,但垂直寫作在日本網站中更為常見,有時與水平文本混合在一起。垂直寫作方向各不相同:中國,日語和韓國人通常會開始右上角,而蒙古人開始左右。 CSS的writing-mode
屬性處理以下操作:
horizontal-tb
:默認LTR/RTL,自上而下。vertical-rl
:RTL,上下(中國,日語,韓語)。vertical-lr
:LTR,上下(蒙古人)。邏輯屬性提供上下文感知的CSS。間距和佈局適應writing-mode
和direction
,從而實現了跨語言的CSS重複使用。這與依靠自動翻譯,提供出色的用戶體驗並允許特定於區域的內容自定義同時,同時保持一致的視覺樣式形成對比。
下圖說明了物理特性的局限性。使用margin-left
(紅色),LTR間距是正確的,但是RTL間距是有缺陷的。邏輯屬性解決了這一點。
邏輯屬性會自動調整到語言上下文。在LTR語言中, margin-inline-start
設置了左邊的邊距;在RTL語言中,它設置了正確的邊距。對於垂直文本,它進行了相應的調整,將餘量放在讀取起點。內聯方向適應元素的writing-mode
。
許多CSS屬性具有邏輯當量。 Adrian Roselli的可視化工具有助於比較默認LTR水平設置下的物理和邏輯屬性。
以下表映射物理和邏輯屬性(使用LTR水平映射作為參考)。請記住,邏輯屬性的上下文敏感性是關鍵。
在水平模式下, inline-size
集寬度, block-size
設置的高度;在垂直模式下,這逆轉。跨瀏覽器的支持非常出色。
對於邏輯邊界特性而存在出色的跨瀏覽器支持。示例表明border-inline-start
, border-block-start
和border-block-end
。單個邊框顏色,寬度和样式屬性也具有邏輯對應物以及速記性能。
邏輯邊距和填充屬性相互反映,提供全面的跨瀏覽器支撐和速記。
邏輯定位偏移可用。 inset-block-start
映射到top
(水平), inset-inline-start
left
(LTR水平)及其行為適應不同的寫作模式。最近的野生動物園包含在內,現代瀏覽器支持這些。 inset
為所有四個偏移提供了速記。請注意, inset
是物理價值的速記,而不是邏輯屬性。
邏輯文本對齊( text-align: start
, text-align: end
)具有強大的瀏覽器支持,適應LTR/RTL上下文。
邏輯border-radius
屬性具有開發瀏覽器支持。邏輯浮點值的支持有限。提議的overflow
和resize
邏輯屬性的支持差。
對於更深入的潛水,請考慮以下資源:
text-combine-upright
(CSS-ricks):用於垂直文本操縱。雖然不需要立即進行代碼庫大修,但採用邏輯屬性提供了重要的優勢。出色的瀏覽器支持和改進的代碼清晰度使它們成為任何CSS工作流程的值得添加的。
以上是CSS邏輯屬性和值的詳細內容。更多資訊請關注PHP中文網其他相關文章!