CSS 類或 ID 命名時單詞間連接配接通常有這幾種寫法:
1)駝峰式: solutionTitle、solutionDetail
2)用橫杠連接配接: solution-title、solution-detail (CSS和ID都推薦)
3)下劃線連接配接: solution_title、solution_detail
應該采用哪種寫法呢?選擇的時候是出于個人習慣還是有别的考慮?
首先定個性,這純粹是“代碼風格”的愛好習慣問題,不是技術問題
什麼是“代碼風格”問題?有一些特征:
技術規範不會硬性規定,雖然規範有時可能會提供指導性的建議,或者有時會有行業大牛出來鼓吹最佳實踐。
個性化十分明顯,也就是蘿蔔青菜各有所愛、公說公有理婆說婆有理,永無定論。
以前用下劃線"_"(舍棄)
主要原因是在編輯器中輕按兩下可以選中;另外自己覺得下劃線好看(純個人喜好)。除此以外可能還有一點“小白式謹慎”(避免與 CSS 屬性名/值弄混、避免與減号弄混),或者我的啟蒙教材就是使用下劃線的。
現在主要使用連字元"-"(推薦)
後來逐漸接手或參與了一些别人的項目,接觸過各種代碼風格。在老外的一些項目中接觸到大量的使用連字元的命名,看多了感覺也不難看。在編輯器中也可以通過“輕按兩下并拖動”來選中,是以就逐漸過渡到了連字元。
在特殊場合用駝峰式
駝峰式寫法輸入不友善、引入了大小寫的複雜度、可讀性無優勢,一連串的字母看的頭疼,是以很少在日常開發中使用。而正因為如此,我目前主要在一些架構級的類名中使用,以便于日常開發的命名習慣區分開,避免無意中污染架構級樣式的可能性。
關于标準
有網友提到:
HTML 和 CSS 文法中,無論是屬性名和值,用到連接配接符的地方都是 - ,沒有 _,Follow 标準有益無害。
我們很容易理清一件事——給元素的 class 和 id 命名,本質上是給 HTML 标簽的 class 與 id 屬性寫入值。HTML 的 标簽屬性值 的合法性與 HTML 标簽屬性名、CSS 屬性的名/值的命名習慣有關系嗎?
說到“标準”,用橫線(-)和下劃線(_)來連接配接多個單詞作為 class 或 id 的值,都是合法的,現行規範 HTML 4.01 和 CSS 2.1 的部分章節。CSS 2.1 是這樣說的:
In CSS, identifiers (including element names, classes, and IDs in selectors) can contain only the characters [a-zA-Z0-9] and ISO 10646 characters U+00A0 and higher, plus the hyphen (-) and the underscore (_); ...
提示:CSS 1 和 2 的規範在這一點上有錯誤,沒有把下劃線加進去;直到 CSS 2.1 中,這個問題才被修正。
其它觀點
關于可讀性
賀師俊老師提出了一個容易被忽略但實際上很重要的因素:
- 比 _ 有一點好的地方是 _ 有時候會很像空格,難以分辨。而 class 裡面有沒有空格是挺重要的。比較以下三種用法:
關于編輯器
很多同學提到了不同的單詞連接配接方式對選擇操作的影響,比如輕按兩下可以直接選中用 _ 連接配接的多個單詞,但用 - 連接配接的多個單詞則無法全部選中,選區會在 - 處終止,即隻能選中一個單詞。
Sublime Text
對此,做了科普:
CSS 命名用連字元 - 不能輕按兩下選中的問題一直是一個僞命題,這是編輯器的問題,因為這個而選用下劃線 _ 實在有些牽強。在 Sublime Text 2 的全局配置檔案 Preferences.sublime-settings 中找到 word_separators 字段,删掉其中的 - 即可輕按兩下選中一連串的多個單詞。

Vim
如果使用 vim,可以設定 set iskeyword+=-,這樣就可以比對選中以 - 連接配接的關鍵詞,search 和 mark 的時候會比較友善。
UltraEdit
在 Windows 下一般用 UltraEdit 幹活,它有一種操作叫作 Ctrl + 輕按兩下。而且我們可以設定此操作的分界符,很靈活。
滑鼠選擇
如果你的編輯器不支援上述配置或操作,要想一次性選中以 - 連接配接的多個單詞,其實也是有解決方案的:輕按兩下的最後一擊先不要松開,再左右拖動就可以以單詞為機關擴張選區。(這種選擇方式幾乎适用于所有編輯器,而且 Windows 和 Mac 通吃。)
實際上我并不建議像前面幾種方法那樣在編輯器中取消 - 的分界符身份,而是推薦“輕按兩下 + 拖動”的方法來選擇任意數量的單詞。因為,某些時候你隻想選中 one-two-three 中的 one-two 或 two-three 或單個單詞,那麼這種方法顯然更自由更精确——想選少選少,想選多選多。
--- Bonus Track ---
如果你在使用 WebStorm(或它的兄弟 IDE),就不要用滑鼠點來點去了,不優雅。
你可以把光标移到某個單詞上,用 Ctrl + W(在 Mac 下是 Cmd + W)快捷鍵就可以選中目前單詞;更神奇的是,這個快捷可以連續使用,可以不斷把選區擴張到更大的文法單元:單詞 → 一串單詞 → 整個字元串(或語句) → 對象(或函數作用域) → …… → 整個檔案。(唯一不便的是,這個快捷鍵在其它程式中是關閉目前視窗的操作,容易混淆,建議在 IDE 中給這個操作配置設定其它的快捷鍵。)
HTML 規範
基本原則:符合web标準(UTF-8,HTML5),語義化html(HTML5新增要求,減少div和span等無特定語義的标簽使用),結構表現行為分離(HTML-CSS-JS代碼分離,不同行為代碼高内聚低耦合),相容性優良(早期版本浏覽器相容,移動端,PC端裝置相容)。頁面性能方面(減少請求次數,例如使用精靈圖和sass文法),代碼要求簡潔明了有序,盡可能的減小伺服器負載,保證最快的解析速度(減小repaint和reflow)
HTML5 的文檔聲明類型 :
1)DOCTYPE标簽是一種标準通用标記語言的文檔類型聲明,它的目的是要告訴标準通用标記語言解析器,它應該使用什麼樣的文檔類型定義(DTD)來解析文檔。
2)使用文檔聲明類型的作用是為了防止開啟浏覽器的怪異模式,沒有DOCTYPE文檔類型聲明會開啟浏覽器的怪異模式,浏覽器會按照自己的解析方式渲染頁面,在不同的浏覽器下面會有不同的樣式。
腳本檔案加載
js和css的位置,js放在下面,css放在上面
如果你的項目隻需要相容ie10+或者隻是在移動端通路,那麼可以使用HTML5的新屬性async,将腳本檔案放在
内
1)相容老舊浏覽器(IE9-)時:
腳本引用寫在 結束标簽之前,并帶上 async 屬性。這雖然在老舊的浏覽器中不會異步加載腳本,但它隻阻塞了