通配符使用星號*表示,意思是「全部的」。css
平時使用電腦,好比要搜索C盤裏全部的網頁,可使用 *.html來搜索,.html是網頁的後綴名,*表明了全部網頁的名稱;html
也就是使用 * 加後綴名,就能夠在電腦中搜索文件。瀏覽器
在CSS中,一樣使用 * 表明全部的標籤或元素,它叫作通配符選擇器。性能
好比:* { color : red; } 這裏就把全部元素的字體設置爲紅色。測試
*會匹配全部的元素,所以針對全部元素的設置可使用*來完成,用的最多的例子以下:字體
*{margin:0px; padding:0px;}優化
這裏是設置全部元素的外邊距margin和內邊距padding都爲0。spa
不過,因爲*會匹配全部的元素,這樣會影響網頁渲染的時間,所以不少人開始中止使用*通配符選擇器,取而代之的是,把全部須要統一設置的元素,放在一塊兒,一塊設置。ssr
好比code
(1)淘寶
blockquote,body,button,dd,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,input,legend,li,ol,p,pre,td,textarea,th,ul{ margin:0; padding:0}
(2)騰訊
body,ol,ul,h1,h2,h3,h4,h5,h6,p,th,td,dl,dd,form,fieldset,legend,input,textarea,select{margin:0;padding:0}
(3)新浪
html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, h6, form, fieldset, legend, img { margin:0; padding:0; }
也就是將須要統一設置的元素使用分組選擇器一次性設置;
分組選擇器的意思就是有相同設置的元素分爲一組,使用逗號隔開,這樣設置的樣式就會對該組全部元素起做用。
*通配符選擇器的另外一個用法是,給某個元素的後代設置相同的樣式,好比要給class=」red」元素的後代設置粗體,讓具備類red的後代元素的字體加粗,
.red * { font-weight : bold; }
頁面源代碼以下:
<html> <head> <style type="text/css"> .red { color:red;} .red * { font-weight : bold; } </style> </head> <body > <div class="red"> <div> 長子div <div> 孫子div </div> </div> </div> </body> </html>
效果:
那麼,到底要不要使用通配符選擇器呢?
之因此不使用*通配符選擇器,主要是由於網頁打開速度,也就是性能緣由。
可是,對於性能,沒有必要考慮的太多,只有當性能確實是個問題的時候,咱們再優化也不晚。
這一點,對初學者十分重要,之前我寫程序,老是考慮性能,結果是浪費了時間。如今我基本都是怎麼快怎麼來,任務是有期限的,咱們必需要抓緊時間,先把功能實現,後面再想着優化。
所以,對於通配符選擇器,只要你有須要,隨時能夠拿過來用。
不過,通常公司都有封裝好的公共樣式表,直接拿來用就好了。
本文參考了不少文章,下面是文章名稱和地址,感興趣的能夠看一下。
1,CSS * 選擇器
http://www.w3school.com.cn/cssref/selector_all.asp
知識點:
(1) * 選擇器選取全部元素。
(2) * 選擇器也能選取另外一個元素中的全部元素。
2,謹慎使用CSS中的星號(*)通配符
http://dudo.org/archives/2010050520544.html
知識點
(1) 當html多層次嵌套時,樣式重複繼承和渲染的次數增多,影響效率。
結論:
(1) 不要在在深層次的頁面結構中使用它;
(2) 不要在頁面的根節點使用它;
(3) 不要在距離目標節點較遠的節點上使用它;
(4) 最好在父級元素中使用。
3,避免通配選擇器
http://www.douban.com/note/315614057/?type=like
知識點:
(1) CSS選擇器是從右到左進行規則匹配。與人們閱讀順序相反。
(2) 最右邊的規則每每決定了瀏覽器繼續左移匹配的工做量,咱們把最右邊選擇規則稱之爲關鍵選擇器。
例子:
.selected * {color: red;}瀏覽器匹配文檔中全部的元素後分別向上逐級匹配class爲selected的元素,直到文檔的根節點,所以其匹配開銷是很是大的,一般比開銷最小的ID選擇器高出1~3個數量級,因此應避免使用關鍵選擇器是通配選擇器的規則。
4,CSS通用元素選擇器的都市流言
http://shawphy.com/2010/11/css-universal-selector.html
知識點
(1) 因爲CSS規則和HTML是並行載入的,所以把CSS放在HEAD中是很是有必要的。
(2) 少使用 :last-child 。由於這個選擇器沒法索引發來,必須等DOM構件完,才能知道他是否是父元素中最後的那個元素。這種就很是慢了,慎用。
結論:只要有須要,大膽的使用 * 吧,他不會給你從性能上增長額外的麻煩。
5,關於css通配符性能問題不徹底測試
http://i.wanz.im/2012/01/03/performance_testing_about_css_universal_selector/
結論:使用*通配符選擇器的時間影響很小。