css書寫規范

在書寫css樣式的時候總是無意中就寫亂了,無論是命名或者是樣式的書寫順序,這里做一個總結,提醒自己在書寫css的時候時刻注意,大家可以參考哈。

1. 樣式屬性順序

單個樣式規則下的屬性在書寫時,應按功能進行分組,組之間需要有一個空行。
同時要以Positioning Model > Box Model > Typographic > Visual 的順序書寫,提高代碼的可讀性。

  1. Positioning Model 布局方式、位置,相關屬性包括:position, top, z-index, display, float等
  2. Box Model 盒模型,相關屬性包括:width, height, padding, margin,border,overflow
  3. Typographic 文本排版,相關屬性包括:font, line-height, text-align
  4. Visual 視覺外觀,相關屬性包括:color, background, list-style, transform, animation

2. CSS選擇器命名規則

  • 分類式命名法(在前端組件化下尤為重要)

    1. 布局(grid)(.g-):將頁面分割為幾個大塊,通常有頭部、主體、主欄、側欄、尾部等!
    2. 模塊(module)(.m-):通常是一個語義化的可以重復使用的較大的整體!比如導航、登錄、注冊等
    3. 元件(unit)(.u-):通常是一個不可再分的較為小巧的個體,通常被重復用于各種模塊中!比如按鈕、輸 入框、loading等!
    4. 功能(function)(.f-):為方便一些常用樣式的使用,我們將這些使用率較高的樣式剝離出來,按需使用,通常這些選擇器具有固定樣式表現,比如清除浮動等!不可濫用!
    5. 狀態(.z-):為狀態類樣式加入前綴,統一標識,方便識別,她只能組合使用或作為后代出現(.u-ipt.z-dis{},.m-list li.z-sel{})
    6. javascript(.j-):.j-將被專用于JS獲取節點,請勿使用.j-定義樣式
  • 不要使用 " _ " 下劃線來命名css
    能良好的區分javascript變量名
    輸入的時候少按一個shift鍵
    瀏覽器兼容性問題(比如使用_tips的選擇器命名,在IE6是無效的)
  • id采用駝峰式命名(不要亂用id)
  • scss中的變量、函數、混合、placeholder采用駝峰式命名
  • 相同語義的不同類命名方法:
    直接加數字或字母區分即可(如:.m-list、.m-list2、.m-list3等,都是列表模塊,但是是完全不一樣的模塊)。其他舉例:.f-fw0、.f-fw1、.s-fc0、.s-fc1、.m-logo2、.m-logo3、u-btn、u-btn2等等。
  • 命名方式(BEM):類-體(例:g-head)、類-體-修飾符(例:u-btn-active)
  • 后代選擇器:體-修飾符即可(例:.m-page .cut{})注:后代選擇器不要在頁面布局中使用,因為污染的可能性較大;

3. 最佳寫法

    /* 這是某個模塊 */ .m-nav{}/* 模塊容器 */ .m-nav li,.m-nav a{}/* 先共性 優化組合 */ .m-nav li{}/* 后個性 語義化標簽選擇器 */ .m-nav a{}/* 后個性中的共性 按結構順序 */ .m-nav a.a1{}/* 后個性中的個性 */ .m-nav a.a2{}/* 后個性中的個性 */ .m-nav .z-crt a{}/* 交互狀態變化 */ .m-nav .z-crt a.a1{} .m-nav .z-crt a.a2{} .m-nav .btn{}/* 典型后代選擇器 */ .m-nav .btn-1{}/* 典型后代選擇器擴展 */ .m-nav .btn-dis{}/* 典型后代選擇器擴展(狀態) */ .m-nav .btn.z-dis{}/* 作用同上,請二選一(如果可以不兼容IE6時使用) */ .m-nav .m-sch{}/* 控制內部其他模塊位置 */ .m-nav .u-sel{}/* 控制內部其他元件位置 */ .m-nav-1{}/* 模塊擴展 */ .m-nav-1 li{} .m-nav-dis{}/* 模塊擴展(狀態) */ .m-nav.z-dis{}/* 作用同上,請二選一(如果可以不兼容IE6時使用) */

4. 統一語義理解和命名

  • 布局(.g-)

    語義命名簡寫
    文檔docdoc
    頭部headhd
    主體bodybd
    尾部footft
    主欄mainmn
    主欄子容器maincmnc
    側欄sidesd
    側欄子容器sidecsdc
    盒容器wrap/boxwrap/box
  • 模塊(.m-)、元件(.u-)

    語義命名簡寫
    導航navnav
    子導航subnavsnav
    面包屑crumbcrm
    菜單menumenu
    選項卡tabtab
    標題區head/titlehd/tt
    內容區body/contentbd/ct
    列表listlst
    表格tabletb
    表單formfm
    熱點hothot
    排行toptop
    登錄loginlog
    標志logologo
    廣告advertisead
    搜索searchsch
    幻燈slidesld
    提示tipstips
    幫助helphelp
    新聞newsnews
    下載downloaddld
    注冊registreg
    投票votevote
    版權vcopyrightcprt
    結果resultrst
    標題titlett
    按鈕buttonbtn
    輸入inputipt
  • 功能(.f-)

    語義命名簡寫
    清除浮動clearbothcb
    左浮動floatleftfl
    內聯inlineblockib
    文本居中textaligncentertac
    垂直居中verticalalignmiddlevam
    溢出隱藏overflowhiddenoh
    完全消失displaynonedn
    字體大小fontsizefz
    字體粗細fontweightfs
  • 皮膚(.s-)

    語義命名簡寫
    字體顏色fontcolorfc
    背景顏色backgroundcolorbgc
    邊框顏色bordercolorbdc
  • 狀態(.z-)

    語義命名簡寫
    選中selectedsel
    當前currentcrt
    顯示showshow
    隱藏hidehide
    打開openopen
    關閉close vclose
    出錯errorerr
    不可用disableddis

5. 注意事項

  1. 一律小寫,中劃線
  2. 盡量不用縮寫
  3. 不要隨便使用id
  4. 去掉小數點前面的0: 0.9rem => .9rem
  5. 使用簡寫:margin: 0 1rem 3rem

本文大部分內容參考自網易前端規范:http://nec.netease.com/standard/css-sort.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370074.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370074.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370074.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 協程,關于android:Kotlin協程實現原理SuspendCoroutineContext

明天咱們來聊聊Kotlin的協程Coroutine。如果你還沒有接觸過協程,舉薦你先瀏覽這篇入門級文章What? 你還不曉得Kotlin Coroutine?如果你曾經接觸過協程,置信你都有過以下幾個疑難:協程到底是個什么貨色?協程的suspend有什么作用&…

清空easyui checkbox選中項

$(#dg).datagrid(unselectAll);轉載于:https://www.cnblogs.com/douhuan/p/7116744.html

python 編輯excel需要什么包_Python 中操作EXCEL表格的包

今天,馬云爸爸又來貢獻金句了,比王健林公公一億一個小目標還高,“一個月掙一二十個億很難受!!!”,作為在傳統企業主要為電商部門提供數據分析的數據分析師,體驗太深刻了。雙11前后&a…

用Java處理大文件

最近,我不得不處理一組包含逐筆歷史匯率市場數據的文件,并很快意識到使用傳統的InputStream都無法將它們讀取到內存中,因為每個文件的大小都超過4 GB。 Emacs甚至無法打開它們。 在這種特殊情況下,我可以編寫一個簡單的bash腳本&…

java IO(一):File類

1.File類簡介 File類位于java.io包中。它面向文件層次級別操作、查看文件,而字節流、字符流操作數據時顯然比之更底層。 學習File類包括以下幾個重點:文件路徑、文件分隔符、創建文件(目錄)、刪除文件(目錄)、查看文件內容(輸出目錄內文件)、判斷文件(是…

android listview 開發,android開發之ListView實現

今天又初步學習了一下ListView控件,看看效果如下:LisViewActivity.java源碼:package com.jinhoward.UI_listview;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.os.Bundl…

input ios問題 小程序_微信小程序開發常見問題匯總

原標題:微信小程序開發常見問題匯總1、域名必須是https非https的域名不被微信小程序允許。2、input組件placeholder字體顏色卸載placeholder-class里面的color并不生效,需要寫在placeholder-style里面就可以了。3、wx.navigateTo無法跳轉到帶tabbar的頁面…

https://github.com/

https://github.com/ qq郵箱 轉載于:https://www.cnblogs.com/chang1/p/7133251.html

Less 的用法

1. node.js node.js是一個前端的框架 自帶一個包管理工具npm node.js 的安裝 官網:http://nodejs.cn/ 在命令行檢驗是否安裝成功 切換到項目目錄,初始化了一個package.json文件 安裝與卸載jQuery包(例子) 安裝 卸載 安裝淘寶…

淺談springboot整合ganymed-ssh2遠程訪問linux

環境介紹 技術棧 springbootmybatis-plusmysqlganymed-ssh2 軟件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 SSH(遠程連接工具)連接原理:ssh服務是一個守護進程(demon),系統后臺監聽客戶…

優化Neo4j Cypher查詢

上周,我花了很多時間嘗試使用實時系統中的數據來優化大約20個執行失敗的Cypher查詢(36866ms至155575ms)。 經過一番嘗試和錯誤,以及來自Michael的大量投入,我能夠大致確定對查詢進行哪些操作才能使它們性能更好-最后&a…

python 多文件知識

對于一個大型的項目,會存在很多個py文件,本文記錄與多文件有關的內容。 1. python 如何在一個.py文件中調用另一個.py文件的類 如果是在同一個 module中(也就是同一個py 文件里),直接用就可以如果在不同的module里,例如a.py里有 class A:b.py 里有 class…

android pick file,LFilePicker---文件選擇利器,各種樣式有它就夠了

LFilePicker在 Android 開發中如果需要選擇某個文件,可以直接調取系統的文件管理器進行選擇,但是無法保證各個廠商的手機界面一致,而且解析Uri 還比較繁瑣,如果還需要多選呢?需要文件類型過濾呢?老板說界面…

老筆記整理二:網頁小問題匯總

最近有一些小問題。想在這里寫出來。一是方便大家排錯,再是自己也整理一下。 1。很傻的小問題。。。參數提交方式有一個應該是form而不是from。(英語老師,我對不起你。。。) 2。用超鏈接傳參數,在?后面不能…

在JVM之下–類加載器

在許多開發人員中,類加載器是Java語言的底層,并且經常被忽略。 在ZeroTurnaround上 ,我們的開發人員必須生活,呼吸,飲食,喝酒,并且幾乎與類加載器保持親密關系,才能生產JRebel技術&a…

matplotlib繪制餅狀圖

源自http://blog.csdn.net/skyli114/article/details/77508430?ticketST-41707-PzNbUDGt6R5KYl3TkWDg-passport.csdn.net pyplot使用plt.pie()來繪制餅圖 1 import matplotlib.pyplot as plt 2 labels frogs, hogs, dogs, logs 3 sizes 15, 20, 45, 10 # [15,20,45,10…

自適應寬度元素單行文本省略用法探究

單行文本省略是現代網頁設計中非常常用的技術,幾乎每個站點都會用到。單行文本省略適用于顯示摘要信息的場景,如列表標題、文章摘要等。在響應式開發中,自適應寬度元素單行文本省略容易失效不起作用,對網頁開發這造成困擾。因此&a…

P3390 【模板】矩陣快速冪

題目背景 矩陣快速冪 題目描述 給定n*n的矩陣A,求A^k 輸入輸出格式 輸入格式: 第一行,n,k 第2至n1行,每行n個數,第i1行第j個數表示矩陣第i行第j列的元素 輸出格式: 輸出A^k 共n行,每行n個數&…

c#精彩編程200例百度云_永安市教育局被授予“人工智能編程教育試驗區”

11月28日,“第二屆人工智能與機器人教育大會青少年人工智能與編程教育主題論壇”在廈門召開。永安市教育局被中國教育發展戰略學會人工智能與機器人教育專委會授予“人工智能編程教育試驗區”牌匾,巴溪灣小學、西門小學、三中、一中附屬學校、實驗小學等…

python中+=和=+的區別

本文原創,版權屬作者個人所有,如需轉載請聯系作者本人。Q&微:155122733 -------------------------------------------------------------------------------------------------------- a1 代表在原值上更改 aa1相當于先定義一個變量&…