CSS常用技巧之CSS書(shū)寫(xiě)技巧和CSS HACK技巧
什么是CSS Hack?
不同的瀏覽器對(duì)CSS的解析結(jié)果是不同的,因此會(huì)導(dǎo)致相同的CSS輸出的頁(yè)面效果不同,這就需要CSS Hack來(lái)解決瀏覽器局部的兼容性問(wèn)題。而這個(gè)針對(duì)不同的瀏覽器寫(xiě)不同的CSS 代碼的過(guò)程,就叫CSS Hack。
CSS Hack常見(jiàn)的有三種形式:CSS屬性Hack、CSS選擇符Hack以及IE條件注釋Hack, Hack主要針對(duì)IE瀏覽器。
1、屬性級(jí)Hack:比如IE6能識(shí)別下劃線”_”和星號(hào)” * “,IE7能識(shí)別星號(hào)” * “,但不能識(shí)別下劃線”_”,而firefox兩個(gè)都不能認(rèn)識(shí)。
2、選擇符級(jí)Hack:比如IE6能識(shí)別*html .class{},IE7能識(shí)別*+html .class{}或者*:first-child+html .class{}。
3、IE條件注釋Hack:IE條件注釋是微軟從IE5開(kāi)始就提供的一種非標(biāo)準(zhǔn)邏輯語(yǔ)句。比如針對(duì)所有IE:<!–[if IE]><!–您的代碼–><![endif]–>,針對(duì)IE6及以下版本:<!–[if lt IE 7]><!–您的代碼–><![endif]–>,這類Hack不僅對(duì)CSS生效,對(duì)寫(xiě)在判斷語(yǔ)句里面的所有代碼都 會(huì)生效。
PS:條件注釋只有在IE瀏覽器下才能執(zhí)行,這個(gè)代碼在非IE瀏覽下被當(dāng)做注釋視而不見(jiàn)。可以通過(guò)IE條件注釋載入不同的CSS、JS、HTML和服務(wù)器代碼等。
不同的瀏覽器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,對(duì)CSS的解析認(rèn)識(shí)不一樣,因此會(huì)導(dǎo)致生成的頁(yè)面效果不一樣,得不到我們所需要的頁(yè)面效果。這個(gè)時(shí)候我們就需要針對(duì)不同的瀏覽器去寫(xiě)不同的CSS,讓它能夠同時(shí)兼容不同的瀏覽器,能在不同的瀏覽器中也能得到我們想要的頁(yè)面效果。這個(gè)針對(duì)不同的瀏覽器寫(xiě)不同的CSS code的過(guò)程,就叫CSS hack,也叫寫(xiě)CSS hack。
由于不同的瀏覽器對(duì)CSS的支持及解析結(jié)果不一樣,還由于CSS中的優(yōu)先級(jí)的關(guān)系。我們就可以根據(jù)這個(gè)來(lái)針對(duì)不同的瀏覽器來(lái)寫(xiě)不同的CSS。
比如 IE6能識(shí)別下劃線“_”和星號(hào)“ * ”,IE7能識(shí)別星號(hào)“ * ”,但不能識(shí)別下劃線“_”,而firefox兩個(gè)都不能認(rèn)識(shí)。等等
書(shū)寫(xiě)順序,一般是將識(shí)別能力強(qiáng)的瀏覽器的CSS寫(xiě)在后面。下面列舉常用的CSS hack方法
1:!important
!important作用是提高指定樣式規(guī)則的應(yīng)用優(yōu)先權(quán)。
IE7以及所有標(biāo)準(zhǔn)瀏覽器能識(shí)別!important
區(qū)別IE6與IE7與其他瀏覽器
以下為引用的內(nèi)容:
.browserTest
{
border:20px solid #60A179 !important;
border:20px solid #00F;
}
在Mozilla中或者IE7瀏覽時(shí)候,能夠理解!important的優(yōu)先級(jí),因此顯示#60A179的顏色:
在IE6中瀏覽時(shí)候,不能夠理解!important的優(yōu)先級(jí),因此顯示#00F的顏色:
2:*
IE都能識(shí)別*;標(biāo)準(zhǔn)瀏覽器(如火狐)不能識(shí)別*
區(qū)別IE6與火狐
以下為引用的內(nèi)容:
.browserTest
{
border:20px solid #60A179;
*border:20px solid #00F;
}
區(qū)別IE7與火狐
以下為引用的內(nèi)容:
.browserTest
{
border:20px solid #60A179;
*border:20px solid #00F;
}
區(qū)別IE7,IE6與火狐
.browserTest
{
border:20px solid #60A179;
*border:20px solid #00F !important;
*border:20px solid ###;
}
3:_
IE6支持下劃線,IE7和firefox均不支持下劃線
區(qū)別IE7,IE6與火狐
以下為引用的內(nèi)容:
.browserTest
{
border:20px solid #60A179;
*border:20px solid #00F;
_border:20px solid ###;
}
/*不管是什么方法,書(shū)寫(xiě)的順序都是firefox的寫(xiě)在前面,IE7的寫(xiě)在中間,IE6的寫(xiě)在最后面*/
4:*+html 與 *html
*+html 與 *html 是IE特有的標(biāo)簽, firefox 暫不支持。而*+html 又為 IE7特有標(biāo)簽
以下為引用的內(nèi)容:
.browserTest { width: 120px; } /* FireFox fixed */
*html .browserTest { width: 80px;} /* ie6 fixed */
*+html .browserTest { width: 60px;} /* ie7 fixed */
注意:
*+html 對(duì)IE7的HACK 必須保證HTML頂部有如下聲明:
以下為引用的內(nèi)容:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
以下是一些常用的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)然不是萬(wàn)能)
4)若需給a標(biāo)簽內(nèi)內(nèi)容加上樣式, 需要設(shè)置 display: block;(常見(jiàn)于導(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。
以下為引用的內(nèi)容:
<div id=”float”></div>
相應(yīng)的css為
#float
{
float:left;
margin:5px;/*IE下理解為10px*/
display:inline;/*IE下再理解為5px*/
}
Block元素的特點(diǎn)是:總是在新行上開(kāi)始,高度,寬度,行高,邊距都可以控制(塊元素);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, 最好事先聲明, 以避免不必要的麻煩;(常見(jiàn)于導(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)最小寬度。
10:萬(wàn)能float閉合
將以下代碼加入Global CSS 中,給需要閉合的div加上
以下為引用的內(nèi)容:
<style>
/* Clear Fix */
.clearfix:after
{
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
*html .clearfix{
height:1%;
}
*+html .clearfix{
height:1%;
}
.clearfix
{
display:inline-block;
}
/* Hide from IE Mac */
.clearfix {display:block;}
/* End hide from IE Mac */
/* end of clearfix */
</style>
/**********************************************/
<div id="wrap">
<div class="column_left">
<h1>Float left</h1>
</div>
<div class="column_right">
<h1>Float right</h1>
</div>
</div>
#wrap{ border:6px #ccc solid; overflow:auto; _height:1%;}
.column_left{ float:left; width:20%; padding:10px;}
.column_right{ float:right; width:75%; padding:10px; border-left:6px #eee solid;}
相關(guān)文章
- 這篇文章主要介紹了10個(gè)必備的CSS技巧總結(jié),隨看隨記,敬請(qǐng)收藏~需要的朋友可以參考下2015-06-29
- CSS是網(wǎng)頁(yè)設(shè)計(jì)師的基礎(chǔ),對(duì)CSS的了解能使他們能夠設(shè)計(jì)出更加美觀別致的網(wǎng)頁(yè)。使用CSS技巧來(lái)巧妙地處理CSS是非常令設(shè)計(jì)師著迷的事情。在CSS的深海世界里有很多有意思的東西2013-04-09
- 最常用和實(shí)用的CSS技巧,不論是前臺(tái)美工還是后臺(tái)成員人員都需要注意的地方。2010-01-05
- 層疊樣式表(CSS)是現(xiàn)代的網(wǎng)站設(shè)計(jì)不可或缺的重要組成部分,就像10年前那樣,沒(méi)有它網(wǎng)站就會(huì)顯得是丑陋的。隨著時(shí)間的推移,網(wǎng)絡(luò)中的CSS的教程質(zhì)量已有顯著的提高。2009-10-27
網(wǎng)頁(yè)制作中應(yīng)用的50個(gè)CSS技巧(國(guó)外)
幾乎可以肯定的CSS是最好的一個(gè)網(wǎng)頁(yè)設(shè)計(jì)的發(fā)展,因?yàn)榈谝淮螆D形的Web瀏覽器通過(guò)了關(guān)于大規(guī)模,凡表創(chuàng)建笨重,緩慢加載網(wǎng)頁(yè),創(chuàng)建的CSS更加精簡(jiǎn)和實(shí)用的網(wǎng)頁(yè)。2009-08-03CSS技巧:IE6用import導(dǎo)入CSS的問(wèn)題
網(wǎng)頁(yè)制作Webjx文章簡(jiǎn)介:本文描述了一個(gè)在IE6下用import導(dǎo)入CSS的問(wèn)題! 在ie 6中可以先寫(xiě)CSS再加import比如 p {} @import url("base.css");2009-04-02書(shū)寫(xiě)CSS的5個(gè)小技巧讓你的樣式更規(guī)范
CSS在書(shū)寫(xiě)過(guò)程中會(huì)一些小技巧,會(huì)省時(shí)省力,比如按字母順序來(lái)排列css、先標(biāo)記 后css等等,本文整理了一些,感興趣的朋友可以參考下希望對(duì)大家書(shū)寫(xiě)css有所幫助2013-08-13- 這篇文章主要介紹了CSS Hack技術(shù)介紹及常用的Hack技巧集錦,本文講解了什么是CSS Hack、常用的CSS Hack、IE6對(duì)!important的支持、IE6下的多選擇符等內(nèi)容,需要的朋友可以參考2014-10-08
CSS hack技巧之IE6,IE7,firefox顯示不同效果
區(qū)別不同瀏覽器的CSS hack寫(xiě)法2010-03-06IE6、IE7和FF的最簡(jiǎn)單的hack技巧-CSS教程-網(wǎng)頁(yè)制作-網(wǎng)頁(yè)教學(xué)網(wǎng)
關(guān)于CSS HACK的文章在webjx.com中提及的也很多。 CSSer必須掌握的關(guān)于IE6、IE7和FF的最簡(jiǎn)單的hack技巧。 FF瀏覽器 .test{ height:20px; background-co2008-10-17

