高手總結(jié)CSS書寫技巧
這個(gè)時(shí)候我們就需要針對(duì)不同的瀏覽器去寫不同的CSS,讓它能夠同時(shí)兼容不同的瀏覽器,能在不同的瀏覽器中也能得到我們想要的頁(yè)面效果。這個(gè)針對(duì)不同的瀏覽器寫不同的CSS code的過(guò)程,就叫CSS hack,也叫寫CSS hack。
由于不同的瀏覽器對(duì)CSS的支持及解析結(jié)果不一樣,還由于CSS中的優(yōu)先級(jí)的關(guān)系。我們就可以根據(jù)這個(gè)來(lái)針對(duì)不同的瀏覽器來(lái)寫不同的CSS。
比如 IE6能識(shí)別下劃線"_"和星號(hào)" * ",IE7能識(shí)別星號(hào)" * ",但不能識(shí)別下劃線"_",而firefox兩個(gè)都不能認(rèn)識(shí)。等等
書寫順序,一般是將識(shí)別能力強(qiáng)的瀏覽器的CSS寫在后面。下面列舉常用的CSS hack方法
CSS書寫技巧-1:!important
!important作用是提高指定樣式規(guī)則的應(yīng)用優(yōu)先權(quán)。
IE7以及所有標(biāo)準(zhǔn)瀏覽器能識(shí)別!important
區(qū)別IE6與IE7與其他瀏覽器
- .browserTest
 - {
 - border:20pxsolid#60A179!important;
 - border:20pxsolid#00F;
 - }
 
在Mozilla中或者IE7瀏覽時(shí)候,能夠理解!important的優(yōu)先級(jí),因此顯示#60A179的顏色:
在IE6中瀏覽時(shí)候,不能夠理解!important的優(yōu)先級(jí),因此顯示#00F的顏色:
CSS書寫技巧-2:*
IE都能識(shí)別*;標(biāo)準(zhǔn)瀏覽器(如火狐)不能識(shí)別*
區(qū)別IE6與火狐
- .browserTest
 - {
 - border:20pxsolid#60A179;
 - *border:20pxsolid#00F;
 - }
 
區(qū)別IE7與火狐
- .browserTest
 - {
 - border:20pxsolid#60A179;
 - *border:20pxsolid#00F;
 - }
 
區(qū)別IE7,IE6與火狐
- .browserTest
 - {
 - border:20pxsolid#60A179;
 - *border:20pxsolid#00F!important;
 - *border:20pxsolid###;
 - }
 
CSS書寫技巧-3:_
IE6支持下劃線,IE7和firefox均不支持下劃線
區(qū)別IE7,IE6與火狐
- .browserTest
 - {
 - border:20pxsolid#60A179;
 - *border:20pxsolid#00F;
 - _border:20pxsolid###;
 - }
 - /*不管是什么方法,書寫的順序都是firefox的寫在前面,IE7的寫在中間,IE6的寫在***面*/
 
CSS書寫技巧-4:*+html 與 *html
*+html 與 *html 是IE特有的標(biāo)簽, firefox 暫不支持.而*+html 又為 IE7特有標(biāo)簽
- .browserTest{width:120px;}/*FireFoxfixed*/
 - *html.browserTest{width:80px;}/*ie6fixed*/
 - *+html.browserTest{width:60px;}/*ie7fixed*/
 
注意:
*+html 對(duì)IE7的HACK 必須保證HTML頂部有如下聲明:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/*****************************************************************************/
/*****************************************************************************/
以下是一些常用的CSS兼容技巧
1)火狐下給div設(shè)置padding后會(huì)導(dǎo)致width和height 增加, 但I(xiàn)E不會(huì).(可用!important解決)
2)垂直居中,將 line-height設(shè)置為當(dāng)前div相同的高度, 再通過(guò)vertical-align: middle;( 注意內(nèi)容不要換行)
3)水平居中,margin:0 auto;(當(dāng)然不是***)
4)若需給a標(biāo)簽內(nèi)內(nèi)容加上樣式, 需要設(shè)置 display: block;(常見于導(dǎo)航標(biāo)簽)
5)浮動(dòng)IE產(chǎn)生的雙倍距離
在IE下,當(dāng)一個(gè)div設(shè)置了float后,然后給他設(shè)置margin,就會(huì)出現(xiàn)加倍的margin,解決的辦法是給div設(shè)置
- display:inline。
 - <divid=”float”></div>
 - 相應(yīng)的css為
 - #float
 - {
 - float:left;
 - margin:5px;/*IE下理解為10px*/
 - display:inline;/*IE下再理解為5px*/
 - }
 
Block元素的特點(diǎn)是:總是在新行上開始,高度,寬度,行高,邊距都可以控制(塊元素);Inline元素的特點(diǎn)是:和其他元素在同一行上,...不可控制(內(nèi)嵌元素);
6)IE和FF對(duì)盒模型的解釋區(qū)別
- #browserTest{width:650px!important;width:648px;padding-left:2px;background:#fff;}
 
browserTest顯示的寬度是650px;
IE Box的總寬度是:width+padding+border+margin寬度總和;
FF Box的總寬度就是:width的寬度,padding+border+margin的寬度在含在width內(nèi)。
如果有BOX{WIDTH:"300"; PADDING:"5PX";}
則BOX在IE的寬度應(yīng)該為:310
而在FF的寬度則是300
所以在BOX有填充的情況下應(yīng)該這樣使用
BOX{WIDTH:"300" !IMPORTANT; WIDTH:"290";}
7)ul標(biāo)簽在FF下面默認(rèn)有l(wèi)ist-style和padding, ***事先聲明, 以避免不必要的麻煩;(常見于導(dǎo)航標(biāo)簽和內(nèi)容列表)
8)作為外部wrapper的div不要定死高度, ***還加上 overflow: hidden;以達(dá)到高度自適應(yīng);
9)頁(yè)面的最小寬度
min-width是個(gè)非常方便的CSS命令,它可以指定元素最小也不能小于某個(gè)寬度,這樣就能保證排版一直正確。但I(xiàn)E不認(rèn)得這個(gè), 而它實(shí)際上把width當(dāng)做最小寬度來(lái)使。為了讓這一命令在IE上也能用,可以把一個(gè)<div> 放到 <body> 標(biāo)簽下,然后為div指定一個(gè)類:
然后CSS這樣設(shè)計(jì):
- #container{min-width:600px;width:expression(document.body.clientWidth<600?"600px":"auto");}
 
***個(gè)min-width是正常的;但第2行的width使用了Javascript,這只有IE才認(rèn)得,這也會(huì)讓你的HTML文檔不太正規(guī)。它實(shí)際上通過(guò)Javascript的判斷來(lái)實(shí)現(xiàn)最小寬度。
CSS書寫技巧-10:***float閉合
將以下代碼加入Global CSS 中,給需要閉合的div加上
- <style>
 - /*ClearFix*/
 - .clearfix:after
 - {
 - content:".";
 - display:block;
 - height:0;
 - clear:both;
 - visibility:hidden;
 - }
 - *html.clearfix{
 - height:1%;
 - }
 - *+html.clearfix{
 - height:1%;
 - }
 - .clearfix
 - {
 - display:inline-block;
 - }
 - /*HidefromIEMac*/
 - .clearfix{display:block;}
 - /*EndhidefromIEMac*/
 - /*endofclearfix*/
 - </style>
 - /**********************************************/
 - <divid="wrap">
 - <divclass="column_left">
 - <h1>Floatleft</h1>
 - </div>
 - <divclass="column_right">
 - <h1>Floatright</h1>
 - </div>
 - </div>
 - #wrap{border:6px#cccsolid;overflow:auto;_height:1%;}
 - .column_left{float:left;width:20%;padding:10px;}
 - .column_right{float:right;width:75%;padding:10px;border-left:6px#eeesolid;}
 
【編輯推薦】















 
 
 



 
 
 
 