權值等級的定義
第一等:代表內聯樣式,如: style=””,權值為1000。
第二等:代表ID選擇器,如:#content,權值為100。
第三等:代表類,偽類和屬性選擇器,如.content,權值為10。
第四等:代表類型選擇器和偽元素選擇器,如div p,權值為1。
Ps:通用選擇器(*),子選擇器(>)和相鄰同胞選擇器(+)并不在這四個等級中,所以他們的權值都為0,!important 優先級最高,萬不得已的情況下才用。
權重計算
#content div#main-content h2=2*100+2*1=202 #content #main-content>h2=2*100+1=201 body #content div[id="main-content"] h2=1*100+1*10+3*1=113 #main-content div.paragraph h2=1*100+1*10+2*1=112 #main-content [class="paragraph"] h2=1*100+1*10+1*1=111 div#main-content div.paragraph h2.first=1*100+2*10+3*1=123
優先規則
權值大的樣式會覆蓋權值小的樣式,上面例子的樣式會采用權值最大201的樣式,當你亂用!important,特別是后期修改樣式的時候,是不是有種心力憔悴電費感覺?
當css前后樣式項的權值一樣,后面的樣式會覆蓋前面的樣式。
Css 概念
命名風格規范
1 css文件命名:統一為小寫的英文字母(盡量少用拼音),如:index.css。
當名字需要組合拼寫時,可以在單詞間加中杠線(不要用下劃線:容易寫錯)。如:member-report.css。(推薦)
或者統一為駝峰式拼寫。如:MemberReport.css (項目啟動前統一風格)。
2 樣式名(html的class名):在讓人看懂的前提下,盡量語義化或簡寫。盡量少用拼音,和無語義的縮寫 .bt .bd 等; 風格可以統一為小寫字母,如:content。當名字需要組合時,可以采用css文件名的規范。
樣式的繼承
文本樣式
color,font-family, font-size, font-style, font-variant, font-weight, font, letter-spacing, line-height,text-align, text-indent, texttransform,word-spacing
列表相關屬性
list-style-image, list-style-position, list-style-type, list-style,
像素化 css
渲染
就是瀏覽器把HTML代碼以css定義的規則顯示在瀏覽器窗口的過程
瀏覽器對頁面呈現的處理流程
回流
當頁面的布局發生變化時,瀏覽器會回過頭來重新渲染,這就是頁面為什么會慢的一個原因,當一個點的變 化影響了布局,這就會使得要倒回去重新渲染,這個倒回去的過程稱為 reflow(回流)。
當頁面布局和幾何屬性改變時就需要回流。下述情況會發生瀏覽器回流
var s = document.body.style; s.padding = "2px"; // 回流+重繪 s.border = "1px solid red"; // 再一次 回流+重繪 s.color = "blue"; // 再一次重繪 s.backgroundColor = "#ccc"; // 再一次 重繪 s.fontSize = "14px"; // 再一次 回流+重繪 // 添加node,再一次 回流+重繪 document.body.appendChild(document.createTextNode('abc!')); 回流比重繪的代價要更高,回流的花銷跟render tree有多少節點需要重新構建有關系,假設你直接操作body,比如在body最前面插入1個元素,會導致整個render tree回流,這樣代價當然會比較高,但如果是指body后面插入1個元素,則不會影響前面元素的回流。
reflow問題也是可以優化的,減少reflow是很有必要的,比如給圖片設定好寬度和高度,這樣就可以把圖片的占位面積預定好。
重繪
一些元素需要更新屬性,而這些屬性只是影響元素的外觀,風格(景顏色,文字顏色,邊框顏色)而不會影響布局,瀏覽器就會repaint。repaint的速度明顯比reflow的速度快。
為了幫助小伙伴們更好的學習WEB前端,技術學派整理了WEB前端的相關學習視頻及學習路線圖。
關注“技術學派”后,評論轉發文章,私信回復:WEB前端
CSS樣式表是一個序列通用字符集,傳輸和存儲過程中,這些字符必須由支持 US-ASCII(例如 UTF-8, ISO 8859-x, SHIFT JIS 等)字符編碼方式編譯
When a style sheet is embedded in another document, such as in the STYLE element or "style" attribute of HTML, the style sheet shares the character encoding of the whole document.
當樣式出現在其它文檔,如 HTML 的 STYLE 標簽或標簽屬性 "style",樣式的編碼由文檔的決定。
When a style sheet resides in a separate file, user agents must observe the following priorities when determining a style sheet's character encoding (from highest priority to lowest):
An HTTP "charset" parameter in a "Content-Type" field (or similar parameters in other protocols)BOM and/or [@charset ]()or other metadata from the linking mechanism (if any)charset of referring style sheet or document (if any)Assume UTF-8
文檔外鏈樣式表的編碼可以由以下各項按照由高到低的優先級順序決定:
Authors using an [@charset ]() rule must place the rule at the very beginning of the style sheet, preceded by no characters. (If a byte order mark is appropriate for the encoding used, it may precede the [@charset ]() rule.)
[@charset ]() must be written literally, i.e., the 10 characters '[@charset ]() "' (lowercase, no backslash escapes), followed by the encoding name, followed by '";'.
推薦:
@charset "UTF-8";
.jdc{}
不推薦:
/**
* @desc File Info
* @author Author Name
* @date 2015-10-10
*/
/* @charset規則不在文件首行首個字符開始 */
@charset "UTF-8";
.jdc{}
@CHARSET "UTF-8";
/* @charset規則沒有用小寫 */
.jdc{}
/* 無@charset規則 */
.jdc{}
更多關于樣式編碼:CSS style sheet representation
樣式書寫一般有兩種:一種是緊湊格式 (Compact)
.jdc{ display: block;width: 50px;}
一種是展開格式(Expanded)
.jdc{
display: block;
width: 50px;
}
團隊約定
統一使用展開格式書寫樣式
樣式選擇器,屬性名,屬性值關鍵字全部使用小寫字母書寫,屬性字符串允許使用大小寫。
/* 推薦 */
.jdc{
display:block;
}
/* 不推薦 */
.JDC{
DISPLAY:BLOCK;
}
/* 推薦 */
.jdc {}
.jdc li {}
.jdc li p{}
/* 不推薦 */
*{}
#jdc {}
.jdc div{}
統一使用四個空格進行代碼縮進,使得各編輯器表現一致(各編輯器有相關配置)
.jdc {
width: 100%;
height: 100%;
}
每個屬性聲明末尾都要加分號;
.jdc {
width: 100%;
height: 100%;
}
左括號與類名之間一個空格,冒號與屬性值之間一個空格
推薦:
.jdc {
width: 100%;
}
不推薦:
.jdc{
width:100%;
}
逗號分隔的取值,逗號之后一個空格
推薦:
.jdc {
box-shadow: 1px 1px 1px #333, 2px 2px 2px #ccc;
}
不推薦:
.jdc {
box-shadow: 1px 1px 1px #333,2px 2px 2px #ccc;
}
為單個css選擇器或新申明開啟新行
推薦:
.jdc,
.jdc_logo,
.jdc_hd {
color: #ff0;
}
.nav{
color: #fff;
}
不推薦:
.jdc,jdc_logo,.jdc_hd {
color: #ff0;
}.nav{
color: #fff;
}
顏色值 rgb() rgba() hsl() hsla() rect() 中不需有空格,且取值不要帶有不必要的 0
推薦:
.jdc {
color: rgba(255,255,255,.5);
}
不推薦:
.jdc {
color: rgba( 255, 255, 255, 0.5 );
}
屬性值十六進制數值能用簡寫的盡量用簡寫
推薦:
.jdc {
color: #fff;
}
不推薦:
.jdc {
color: #ffffff;
}
不要為 0 指明單位
推薦:
.jdc {
margin: 0 10px;
}
不推薦:
.jdc {
margin: 0px 10px;
}
css屬性值需要用到引號時,統一使用單引號
/* 推薦 */
.jdc {
font-family: 'Hiragino Sans GB';
}
/* 不推薦 */
.jdc {
font-family: "Hiragino Sans GB";
}
建議遵循以下順序:
.jdc {
display: block;
position: relative;
float: left;
width: 100px;
height: 100px;
margin: 0 10px;
padding: 20px 0;
font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;
color: #333;
background: rgba(0,0,0,.5);
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-o-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
}
mozilla官方屬性順序推薦
CSS3 瀏覽器私有前綴在前,標準前綴在后
.jdc {
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
-o-border-radius: 10px;
-ms-border-radius: 10px;
border-radius: 10px;
}
更多關于瀏覽器私有前輟寫法:#Vendor-specific extensions
Google Code Guide
者:sunshine小小倩
轉發鏈接:https://juejin.im/post/592d4a5b0ce463006b43b6da
*請認真填寫需求信息,我們會在24小時內與您取得聯系。