成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇帶你了解五個需要避免的CSS錯誤

開發 前端
CSS語言是web的一個重要組成部分。它使我們有能力繪制元素在屏幕、網頁或其他媒體中的展示方式。在這篇文章中,我們將總結出5個最常見的錯誤以及如何避免它們。

大家好,我是刷碗智,今天帶來 Jose Granja 大佬的文章,希望對大家有所幫助。文本觀點,僅供參與,非標準答案。

正如我們今天所知,CSS語言是web的一個重要組成部分。它使我們有能力繪制元素在屏幕、網頁或其他媒體中的展示方式。

它簡單、強大,而且是聲明式的。我們可以很容易地實現復雜的事情,如暗黑/光明模式。然而,對它有很多誤解和錯誤的使用。這些會把CSS標記變成復雜的不可讀且不可擴展的代碼。

我們如何才能防止這種情況的發生?通過遵循最佳實踐,避免最常見的錯誤。在這篇文章中,我們將總結出5個最常見的錯誤以及如何避免它們。

1. 不預先設計

不經過思考,立馬動手,這樣可能會更快的完成任務,這也給了我們一種速度和成就感。但,從長遠來看,這會有相反的效果。

在寫代碼之前,必須要先想清楚。我們將采取什么方式來設計組件?我們想以原子的方式建立我們的組件嗎?我們是否愿意創建一個可組合的實用系統?我們想要一個已經內置的UI庫嗎?我們希望我們的CSS是全局作用域的還是按組件作用域的?

有一個明確的目標將幫助我們選擇最好的工具。這將使我們免于冗余和違反DRY。 有許多有效的方法來設計一個應用程序。最常見的無效的是即興創作。

我們的代碼必須是可預測的,易于擴展和維護。

看個例子:

  1. /* ❌ 到處添加離散值 */ 
  2. .card { 
  3.   color: #edb361; 
  4.   background-color: #274530; 
  5.   padding: 1rem; 
  6.  
  7. /* ✅ 定義基于主題的屬性 */ 
  8. :root { 
  9.   --primary-bg-color: #274530; 
  10.   --accent-text-color: #edb361; 
  11.   --spacing-unit: 0.5; 
  12.  
  13. .card { 
  14.   color: var(--accent-text-color); 
  15.   background-color: var(--primary-bg-color); 
  16.   padding: calc(var(--spacing-unit) * 2rem); 

在上面的例子中,我們可以看到當使用CSS變量進行主題設計時,一切都變得可讀和清晰。第一個 .card 定義看起來完全是隨機的,這個組件不容易被擴展。

2. CSS Code Smells

Code Smell中文譯名一般為“代碼異味”,或“代碼味道”,它是提示代碼中某個地方存在錯誤的一個暗示,開發人員可以通過這種smell(異味)在代碼中追捕到問題。

Code smells 不是bug。它們也不會妨礙系統的正常工作。它們只是一些不好的做法,會使我們的代碼更難閱讀和維護。

在這里,列舉一些最常見的以及如何克服它們:

:: 符號

在偽元素和偽類中使用 :: 符號是很常見的。這是舊的CSS規范的一部分,瀏覽器繼續支持它作為一種回退。然而,我們應該在偽元素中使用 ::,比如 ::before, ::after, ::frist-line...,在偽類中使用:,比如:link, :visited, :first-child...

使用字符串連接類

使用Sass預處理器來幫助處理我們的CSS代碼庫是非常流行的。有時在嘗試DRY時,我們通過連接&操作符來創建類。

  1. .card { 
  2.   border: 0.5 solid rem #fff; 
  3.    
  4.   /* ❌ failed attempt to be dry */ 
  5.   &-selected { 
  6.     border-color: #000; 
  7.   } 

在開發人員試圖在代碼庫中搜索.card-selected類之前,似乎沒有什么問題。開發者將很難找到這個類。

不正確地使用縮寫

CSS的簡寫非常好,可以讓我們避免代碼過于冗長。但是,有時我們并沒有刻意地使用它們。大多數情況下,background 簡寫是偶然使用的。

  1. /* ❌ 由于我們只是在設置一個屬性,所以不需要使用簡寫。*/ 
  2. .foo { 
  3.   background: #274530; 
  4.  
  5. /* ✅ 使用正確的CSS屬性 */ 
  6. .foo { 
  7.   background-color: #274530; 

!important 的錯誤使用

!important 規則用于覆蓋特定性規則。它的使用主要集中在覆蓋一個不能以任何其他方式覆蓋的樣式。

它通常用于更具體的選擇器可以完成任務的場景。

  1. <div class="inner"
  2.   <p>This text is in the inner div.</p> 
  3. </div> 
  4.  
  5.  
  6. <style> 
  7.   .inner { 
  8.     color: blue; 
  9.   } 
  10.    
  11.   /* ❌ 重寫 color */ 
  12.   .inner { 
  13.     color: orange !important; 
  14.   } 
  15. </style> 
  16.  
  17.  
  18. <style> 
  19.   .inner { 
  20.     color: blue; 
  21.   } 
  22.    
  23.   /* ✅ 使用一個更具體的選擇器規則,該規則將優先于更一般的規則。 */ 
  24.   .inner p { 
  25.     color: orange; 
  26.   } 
  27. </style> 
  28.   

強制使用屬性值

在CSS代碼庫中出現一個神奇的數字是很常見的。它們帶來了相當多的混亂。有時,我們可能會在代碼中發現長的數字,因為開發者是為了覆蓋一個他不確定的屬性。

  1. /* ❌ Brute 強制使這個元素位于z軸的最前面 */ 
  2. .modal-confirm-dialog { 
  3.   z-index: 9999999; 
  4.  
  5. /* ✅ 提前計劃并定義所有可能的用例 */ 
  6. .modal-confirm-dialog { 
  7.   z-index: var(--z-index-modal-type); 

3.不對CSS類名進行作用域劃分

由于CSS語言的特性,很容易出現元素在無意中被一個糟糕的類名定型的情況。這個問題非常頻繁,所以有相當多的解決方案來解決這個問題。

在我看來,最好的兩個是:

  • 使用命名約定
  • CSS Modules

命名約定

最流行的命名方式是BEM 101。它代表了 Block、Element、Modifier方法。

  1. [block]__[element]--[modifier] 
  2. /* Example */ 
  3. .menu__link--blue { 
  4.   ... 

其目的是通過讓開發者了解HTML和CSS之間的關系來創建獨特的名稱。

CSS Modules

我對BEM方法最大的擔心是,它很耗時,而且要依靠開發人員來實現。CSS模塊發生在預處理器一側,這使得它沒有錯誤。它為我們的CSS模塊類名生成了隨機的前綴/名稱。

4. 使用 px 單位

像素的使用相當頻繁,因為它起初看起來很容易和直觀的使用。事實恰恰相反。很久以來,像素已經不再基于硬件了。它們只是基于一個光學參考單元。

px是一個絕對單位。這意味著什么呢?那就是我們不能適當地縮放以滿足更多的人。

我們應該用什么來代替?相對單位是要走的路。我們可以依靠這些來更好地表達我們的動態布局。例如,我們可以使用ch來表達一個基于字符數的div寬度。

  1. .article-column { 
  2.   /* ✅  我們的元素將最多容納20個繼承的字體大小的字符。 */ 
  3.   max-width: 20ch; 

通常情況下,px最常用的替換單位是rem和em。它們以一種從框到文本的相對方式來表示字體的相對大小。

  • rem 表示相對于根 font-size 的大小。
  • em 表示相對于元素大小的大小。

通過使用 rem,我們將能夠根據用戶偏好的字體大小來表達布局。

在上面的截圖中,我們可以看到基于 rem 單元的布局如何能夠擴展并適應不同的默認字體大小。

5. 忽略瀏覽器支持

當開始開發一個網站時,定義我們的目標客戶是至關重要的。跳過這一步,直接進行編碼是很常見的。

為什么它至關重要?它幫助我們了解我們的應用程序將在哪種設備上使用。之后,我們可以定義我們將支持哪些瀏覽器和哪些版本。

只要我們能提供適當的后備方案,我們仍然可以致力于接受像subgrid這樣的后期功能。定義一個漸進的功能體驗總是一個好主意。當一個特性得到更多的支持時,我們可以逐步拋棄它的后備方案。

像caniuse.com或browserslist.dev這樣的工具在這方面很有幫助。像postcss這樣的工具自帶的autoprefixer功能將幫助我們的CSS得到更廣泛的支持。

總結

我們已經看到了如何改進我們的CSS代碼。遵循一些簡單的指導原則,我們可以實現一個聲明式、可重用和可讀的代碼庫。我們應該在CSS中投入和在Javascript中一樣多的精力。

作者:Jose Granja 譯者:前端小智

來源:medium原文:https://levelup.gitconnected.com/top-5-css-mistakes-to-avoid-963f76892954

 

責任編輯:姜華 來源: 大遷世界
相關推薦

2022-05-05 07:40:07

maskCSS

2021-05-20 06:57:16

RabbitMQ開源消息

2021-01-25 05:39:54

Css前端Border

2021-04-07 06:11:37

Css前端CSS定位知識

2020-11-03 19:18:28

CSS對齊文本

2021-05-31 09:30:36

Css前端CSS 特效

2021-08-11 07:02:21

npm包管理器工具

2020-11-17 11:10:21

CSS選擇器HTML

2021-05-11 10:01:54

avaScript錯誤處理

2022-12-23 10:26:09

CSShas()

2023-06-28 15:04:59

CSSHTML

2021-05-20 09:02:59

CSS單位長度

2023-08-01 14:34:12

HTMLCSS

2022-02-15 09:31:43

透明度CSS

2022-03-04 09:31:41

CSS前端屬性選擇器

2020-12-18 05:40:37

CSS clearHtml

2020-11-27 08:51:29

CSSOpacity透明度

2022-02-18 08:54:21

docker操作系統Linux

2023-05-12 08:19:12

Netty程序框架

2021-07-28 10:02:54

建造者模式代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲美女一区 | 艹逼网 | 亚洲欧美中文字幕 | 亚洲精品久久国产高清情趣图文 | 亚洲人成人一区二区在线观看 | 日韩av成人在线观看 | 久久网站黄 | 亚洲一区二区三区四区在线观看 | 久久精品亚洲精品国产欧美 | 亚洲成av| 亚洲国产成人av好男人在线观看 | 久久99精品久久久水蜜桃 | 日韩在线免费 | 综合激情av | wwwww在线观看 | 亚洲精久久久 | 欧美 日韩 视频 | 日韩一区三区 | 一区二区三区四区不卡 | 国产亚洲精品美女久久久久久久久久 | 日韩av网址在线观看 | 中文字幕国产精品 | 99re视频在线 | av网站在线免费观看 | 国产一区二区三区精品久久久 | 一区二区三区精品视频 | 欧美激情在线一区二区三区 | 狠狠操婷婷| 欧美日韩国产精品 | 国产一级片久久久 | 欧美区日韩区 | www.黄色在线观看 | 毛片a级毛片免费播放100 | 最近日韩中文字幕 | 久久一本 | 黑色丝袜三级在线播放 | 日日碰碰 | 九九亚洲| 综合久久综合久久 | www.色.com| 日韩在线高清 |