首頁 web前端 css教學 你的 CSS 邏輯合理嗎?

你的 CSS 邏輯合理嗎?

Dec 16, 2024 am 04:50 AM

看看這個 CSS 片段。這是怎麼回事?

根據您的網站受眾,可能存在零個或三個錯誤。在解釋哪些錯誤之前,讓我們先設定一些上下文。

視角問題

當您踏上船時,您不會聽到“左”或“右”等術語。這是因為船的左/右側取決於觀察者的視角。相反,他們使用“左舷”和“右舷”,這些明確的術語始終指船的同一側,無論您的位置或說話者的位置如何:

Is Your CSS Logical?
圖像由 Pearson Scott Foresman 創建並發佈到公共領域。來源

同樣的原則也適用於位置的解剖學術語,它允許醫生和獸醫明確地描述身體部位的位置,無論患者或醫生的相對位置如何。

CSS國際化

如果您的 Web 應用程式在全球範圍內使用,您必須設計它們以適應各種語言需求。例如,英語和西班牙語等語言是從左到右 (LTR) 書寫的;阿拉伯語和希伯來語是從右到左 (RTL) 書寫的;蒙古文和傳統日語是從上到下書寫的。

所以,當你使用這樣的 CSS 宣告時:

您的意思是(1)您想要在段落的物理左側添加空格,還是(2)您想要在內容開始之前添加一些空格?對於完全國際化的 UI,正確的答案總是 (2).

邏輯解決方案

您可以為 LTR 和 RTL 語言建立單獨的樣式表並有條件地載入它們。甚至還有像 webpack-rtl 外掛程式這樣的工具,可以根據原始 LTR 樣式表自動產生 RTL 樣式表。

但是,最好的解決方案是有條件地應用 CSS 樣式,如下所示:

您可以在 CSS 中執行此操作,但語法要簡單得多:

這個 margin-inline-start 屬性是一個 邏輯 CSS 屬性,它會依照使用者的書寫方向動態調整。邏輯屬性的工作原理類似於左舷/右舷的類比;它們在不同的書寫系統中以明確的方式描述佈局。

邏輯屬性使用這兩個術語定義佈局方向

  • 內嵌:與行內的文字流平行。
  • 區塊:垂直於一行內的文字流。

此圖顯示了 CSS 支援的所有書寫模式的邏輯位置與實體位置的比較:

Is Your CSS Logical?

使用邏輯屬性,本文開頭所示的初始範例可以改寫如下:

更新現有 CSS 樣式表以使用邏輯屬性一開始可能看起來令人畏懼。然而,大部分工作只是簡單地用 inline-start 替換 left,用 inline-end 替換 right,用 block-start 替換 top,用 block-end 替換bottom。有些屬性需要不同的重新命名;例如,border-bottom-left-radius 變成 border-end-start-radius,height 變成 block-size,等等

這種努力是值得的,因為這是一個面向未來的解決方案,可確保每個人都可以訪問您的網站。例如,我參與的 EasyAdmin 專案已經更新了其樣式表以使用邏輯屬性。

邏輯屬性參考

這是所有邏輯屬性的參考表,可協助您更新自己的項目:

Physical Property Logical Property
border-bottom border-block-end
border-bottom-color border-block-end-color
border-bottom-left-radius border-end-start-radius
border-bottom-right-radius border-end-end-radius
border-bottom-style border-block-end-style
border-bottom-width border-block-end-width
border-left border-inline-start
border-left-color border-inline-start-color
border-left-style border-inline-start-style
border-left-width border-inline-start-width
border-right border-inline-end
border-right-color border-inline-end-color
border-right-style border-inline-end-style
border-right-width border-inline-end-width
border-top border-block-start
border-top-color border-block-start-color
border-top-left-radius border-start-start-radius
border-top-right-radius border-start-end-radius
border-top-style border-block-start-style
border-top-width border-block-start-width
bottom inset-block-end
container-intrinsic-height contain-intrinsic-block-size
container-intrinsic-width contain-intrinsic-inline-size
height block-size
left inset-inline-start
margin-bottom margin-block-end
margin-left margin-inline-start
margin-right margin-inline-end
margin-top margin-block-start
max-height max-block-size
max-width max-inline-size
min-height min-block-size
min-width min-inline-size
overscroll-behavior-x overscroll-behavior-inline
overscroll-behavior-y overscroll-behavior-block
overflow-x overflow-inline
overflow-y overflow-block
padding-bottom padding-block-end
padding-left padding-inline-start
padding-right padding-inline-end
padding-top padding-block-start
right inset-inline-end
top inset-block-start
width inline-size

了解更多

  • MDN:CSS 邏輯屬性與值

✨ 如果您喜歡這篇文章或我的其他文章並想支持我的工作,請考慮在 GitHub 上贊助我?


以上是你的 CSS 邏輯合理嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1246
24
如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

HTML數據屬性指南 HTML數據屬性指南 Apr 11, 2025 am 11:50 AM

您想了解的有關HTML,CSS和JavaScript中數據屬性的所有信息。

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

當您看上去時,CSS梯度變得更好 當您看上去時,CSS梯度變得更好 Apr 11, 2025 am 09:16 AM

我關注的一件事是Lea Verou' s conic-Gradient()Polyfill的功能列表是最後一項:

靜態表單提供商的比較 靜態表單提供商的比較 Apr 16, 2025 am 11:20 AM

讓我們嘗試在這裡造成一個術語:“靜態表單提供商”。你帶上html

如何在WordPress主題中構建VUE組件 如何在WordPress主題中構建VUE組件 Apr 11, 2025 am 11:03 AM

內聯式模板指令使我們能夠將豐富的VUE組件構建為對現有WordPress標記的逐步增強。

php是A-OK用於模板 php是A-OK用於模板 Apr 11, 2025 am 11:04 AM

PHP模板通常會因促進Subpar代碼而變得不良說唱,但這並不是這樣的情況。讓我們看一下PHP項目如何執行基本的

三種代碼 三種代碼 Apr 11, 2025 pm 12:02 PM

每次啟動一個新項目時,我都會將我正在查看的代碼分為三種類型,或者如果您願意的話。我認為這些類型可以應用於

See all articles