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

看看這個 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
揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐揭開屏幕讀取器的神秘面紗:可訪問的表格和最佳實踐Mar 08, 2025 am 09:45 AM

這是我們在形式可訪問性上進行的小型系列中的第三篇文章。如果您錯過了第二篇文章,請查看“以:focus-visible的管理用戶焦點”。在

將框陰影添加到WordPress塊和元素將框陰影添加到WordPress塊和元素Mar 09, 2025 pm 12:53 PM

CSS盒子陰影和輪廓屬性獲得了主題。讓我們查看一些在真實主題中起作用的示例,以及我們必須將這些樣式應用於WordPress塊和元素的選項。

使用智能表單框架創建JavaScript聯繫表格使用智能表單框架創建JavaScript聯繫表格Mar 07, 2025 am 11:33 AM

本教程演示了使用智能表單框架創建外觀專業的JavaScript表單(注意:不再可用)。 儘管框架本身不可用,但原理和技術仍然與其他形式的建築商相關。

使用GraphQL緩存使用GraphQL緩存Mar 19, 2025 am 09:36 AM

如果您最近開始使用GraphQL或審查了其優點和缺點,那麼您毫無疑問聽到了諸如“ GraphQl不支持緩存”或

使您的第一個自定義苗條過渡使您的第一個自定義苗條過渡Mar 15, 2025 am 11:08 AM

Svelte Transition API提供了一種使組件輸入或離開文檔(包括自定義Svelte Transitions)時動畫組件的方法。

比較5個最佳的PHP形式構建器(和3個免費腳本)比較5個最佳的PHP形式構建器(和3個免費腳本)Mar 04, 2025 am 10:22 AM

本文探討了Envato Market上可用的PHP表單構建器腳本,比較了其功能,靈活性和設計。 在研究特定選項之前,讓我們了解PHP形式構建器是什麼以及為什麼要使用一個。 PHP形式

展示,不要說展示,不要說Mar 16, 2025 am 11:49 AM

您花多少時間為網站設計內容演示文稿?當您撰寫新的博客文章或創建新頁面時,您是在考慮

NPM命令是什麼?NPM命令是什麼?Mar 15, 2025 am 11:36 AM

NPM命令為您運行各種任務,無論是一次性或連續運行的過程,例如啟動服務器或編譯代碼。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。