在介紹它們兩個我們首先應該知道這兩個符號在CSS文件中充當的是什麼角色。在CSS文件中*是通配符選擇器,它可以選擇文檔中所有的元素,也就是說是一個通殺選擇器。body是一個普通的類型選擇器,只能夠選中body這麼一個元素。而之所大家會感覺到*和body選擇器有時候作用是相同的,主要是因為body是絕大多數布局元素的父元素,如果元素的CSS屬性居有繼承性的話,那麼兩者的效果確實一樣。例如:
body{font-size:12px;} *{font-szie:12px;}
以上兩個代碼的作用是完全一樣的,因為font-size屬性是居右繼承性的。但是大家還是要明白它們的原理是不一樣的,*選擇器確實是選擇了每一個元素並且把它們的字體大小設置為12px,body則是通過繼承將字體設置為12px的。
在很多CSS頁面的開頭都有這麼一句代碼:
*{margin:0;padding:0}
因為很多元素都有默認的內邊距或者外邊距,例如body、ul、p和標題元素h1-h6等。使用以上代碼可以很輕松的清除所有元素的外邊距margin和內邊距padding,但是也會帶來問題。例如:
<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="http://www.lvyestudy.com/" /> <title> 學習網</title> <style type="text/css"> *{margin:0px;padding:0px;} input{height:40px;} </style> </head> <body> <input type="text" name="mytest" /> </body> </html>
以上代碼可能會造成在一些浏覽器中文本框輸入的文字顯示在左上角,並不是所以浏覽器都這樣。建議還是使用以下方式來統一定義樣式:
body,ul,h1,h2,h3,h4,h5,h6,form,dl,p{ 樣式代碼 }