版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
歡迎閱讀本文檔,希望本文檔能對(duì)您有所幫助!歡迎閱讀本文檔,希望本文檔能對(duì)您有所幫助!感謝閱讀本文檔,希望本文檔能對(duì)您有所幫助!感謝閱讀本文檔,希望本文檔能對(duì)您有所幫助!歡迎閱讀本文檔,希望本文檔能對(duì)您有所幫助!感謝閱讀本文檔,希望本文檔能對(duì)您有所幫助!CSS對(duì)瀏覽器器的兼容性具有很高的價(jià)值,通常情況下IE和Firefox存在很大的解析差異,這里介紹一下兼容要點(diǎn)。常見兼容問題:1.DOCTYPE影響CSS處理2.FF:div設(shè)置margin-left,margin-right為auto時(shí)已經(jīng)居中,IE不行3.FF:body設(shè)置text-align時(shí),div需要設(shè)置margin:auto(主要是margin-left,margin-right)方可居中4.FF:設(shè)置padding后,div會(huì)增加height和width,但I(xiàn)E不會(huì),故需要用!important多設(shè)一個(gè)height和width5.FF:支持!important,IE則忽略,可用!important為FF特別設(shè)置樣式6.div的垂直居中問題:vertical-align:middle;將行距增加到和整個(gè)DIV一樣高line-height:200px;然后插入文字,就垂直居中了缺點(diǎn)是要控制內(nèi)容不要換行7.cursor:pointer可以同時(shí)在IEFF中顯示游標(biāo)手指狀,hand僅IE可以8.FF:鏈接加邊框和背景色,需設(shè)置display:block,同時(shí)設(shè)置float:left保證不換行。參照menubar,給a和menubar設(shè)置高度是為了避免底邊顯示錯(cuò)位,若不設(shè)height,可以在menubar中插入一個(gè)空格。9.在mozillafirefox和IE中的BOX模型解釋不一致導(dǎo)致相差2px解決方法:div{margin:30px!important;margin:28px;}注意這兩個(gè)margin的順序一定不能寫反,據(jù)阿捷的說法!important這個(gè)屬性IE不能識(shí)別,但別的瀏覽器可以識(shí)別。所以在IE下其實(shí)解釋成這樣:div{maring:30px;margin:28px}重復(fù)定義的話按照最后一個(gè)來執(zhí)行,所以不可以只寫margin:XXpx!important;10.IE5和IE6的BOX解釋不一致IE5下div{width:300px;margin:010px010px;}div的寬度會(huì)被解釋為300px-10px(右填充)-10px(左填充)最終div的寬度為280px,而在IE6和其他瀏覽器上寬度則是以300px+10px(右填充)+10px(左填充)=320px來計(jì)算的。這時(shí)我們可以做如下修改div{width:300px!important;width:340px;margin:010px010px}關(guān)于這個(gè)是什么我也不太明白,只知道IE5和firefox都支持但I(xiàn)E6不支持,如果有人理解的話,請(qǐng)告訴我一聲,謝了!:)11.ul標(biāo)簽在Mozilla中默認(rèn)是有padding值的,而在IE中只有margin有值所以先定義ul{margin:0;padding:0;}就能解決大部分問題注意事項(xiàng):1、float的div一定要閉合。例如:(其中floatA、floatB的屬性已經(jīng)設(shè)置為float:left;)<#divid=”floatA”></#div><#divid=”floatB”></#div><#divid=”NOTfloatC”></#div>這里的NOTfloatC并不希望繼續(xù)平移,而是希望往下排。這段代碼在IE中毫無問題,問題出在FF。原因是NOTfloatC并非float標(biāo)簽,必須將float標(biāo)簽閉合。在<#divclass=”floatB”></#div><#divclass=”NOTfloatC”></#div>之間加上<#divclass=”clear”></#div>這個(gè)div一定要注意聲明位置,一定要放在最恰當(dāng)?shù)牡胤剑冶仨毰c兩個(gè)具有float屬性的div同級(jí),之間不能存在嵌套關(guān)系,否則會(huì)產(chǎn)生異常。并且將clear這種樣式定義為為如下即可:.clear{clear:both;}此外,為了讓高度能自動(dòng)適應(yīng),要在wrapper里面加上overflow:hidden;當(dāng)包含float的box的時(shí)候,高度自動(dòng)適應(yīng)在IE下無效,這時(shí)候應(yīng)該觸發(fā)IE的layout私有屬性(萬惡的IE啊!)用zoom:1;可以做到,這樣就達(dá)到了兼容。例如某一個(gè)wrapper如下定義:.colwrapper{overflow:hidden;zoom:1;margin:5pxauto;}2、margin加倍的問題。設(shè)置為float的div在ie下設(shè)置的margin會(huì)加倍。這是一個(gè)ie6都存在的bug。解決方案是在這個(gè)div里面加上display:inline;例如:<#divid=”imfloat”></#div>相應(yīng)的css為#IamFloat{float:left;margin:5px;display:inline;}3、關(guān)于容器的包涵關(guān)系很多時(shí)候,尤其是容器內(nèi)有平行布局,例如兩、三個(gè)float的div時(shí),寬度很容易出現(xiàn)問題。在IE中,外層的寬度會(huì)被內(nèi)層更寬的div擠破。一定要用Photoshop或者Firework量取像素級(jí)的精度。4、關(guān)于高度的問題如果是動(dòng)態(tài)地添加內(nèi)容,高度最好不要定義。瀏覽器可以自動(dòng)伸縮,然而如果是靜態(tài)的內(nèi)容,高度最好定好。(似乎有時(shí)候不會(huì)自動(dòng)往下?lián)伍_,不知道具體怎么回事)5、最狠的手段-!important;如果實(shí)在沒有辦法解決一些細(xì)節(jié)問題,可以用這個(gè)方法.FF對(duì)于”!important”會(huì)自動(dòng)優(yōu)先解析,然而IE則會(huì)忽略.如下.tabd1{background:url(/res/images/up/tab1.gif)no-repeat0px0px!important;background:url(/res/images/up/tab1.gif)no-repeat1px0px;}值得注意的是,一定要將xxxx!important這句放置在另一句之上,上面已經(jīng)提過[2008年9月16日新增]屏蔽IE瀏覽器(也就是IE下不顯示)*:lang(zh)select{font:12px!important;}select:empty{font:12px!important;}這里select是選擇符,根據(jù)情況更換。第二句是MAC上safari瀏覽器獨(dú)有的。僅IE7與IE5.0可以識(shí)別*+htmlselect{…}當(dāng)面臨需要只針對(duì)IE7與IE5.0做樣式的時(shí)候就可以采用這個(gè)HACK。僅IE7可以識(shí)別*+htmlselect{…!important;}當(dāng)面臨需要只針對(duì)IE7做樣式的時(shí)候就可以采用這個(gè)HACK。IE6及IE6以下識(shí)別*htmlselect{…}這個(gè)地方要特別注意很多博客都寫成了是IE6的HACK其實(shí)IE5.x同樣可以識(shí)別這個(gè)HACK。其它瀏覽器不識(shí)別。html>bodyselect{…}這句與上一句的作用相同。僅IE6不識(shí)別,屏蔽IE6select{display:none;}這里主要是通過CSS注釋分開一個(gè)屬性與值,注釋在冒號(hào)前。僅IE6與IE5不識(shí)別,屏蔽IE6與IE5select{display:none;}這里與上面一句不同的是在選擇符與花括號(hào)之間多了一個(gè)CSS注釋。不屏蔽IE5.5僅IE5不識(shí)別,屏蔽IE5select{…}這一句是在上一句中去掉了屬性區(qū)的注釋。只有IE5不識(shí)別,IE5.5可以識(shí)別。盒模型解決方法selct{width:IE5.x寬度;voice-family:”\”}\”";voice-family:inherit;width:正確寬度;}盒模型的清除方法不是通過!important來處理的。這點(diǎn)要明確。清除浮動(dòng)select:after{content:”.”;display:block;height:0;clear:both;visibility:hidden;}在Firefox中,當(dāng)子級(jí)都為浮動(dòng)時(shí),那么父級(jí)的高度就無法完全的包住整個(gè)子級(jí),那么這時(shí)用這個(gè)清除浮動(dòng)的HACK來對(duì)父級(jí)做一次定義,那么就可以解決這個(gè)問題。截字省略號(hào)select{-o-text-overflow:ellipsis;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;}這個(gè)是在越出長(zhǎng)度后會(huì)自行的截掉多出部分的文字,并以省略號(hào)結(jié)尾,很好的一個(gè)技術(shù)。只是目前Firefox并不支持。只有Opera識(shí)別@mediaalland(min-width:0px){select{……}}針對(duì)Opera瀏覽器做單獨(dú)的設(shè)定。以上都是寫CSS中的一些HACK,這些都是用來解決局部的兼容性問題,如果希望把兼容性的內(nèi)容也分離出來,不妨試一下下面的幾種過濾器。這些過濾器有的是寫在CSS中通過過濾器導(dǎo)入特別的樣式,也有的是寫在HTML中的通過條件來鏈接或是導(dǎo)入需要的補(bǔ)丁樣式。IE5.x的過濾器,只有IE5.x可見@mediatty{i{content:”\”;}}@import‘ie5win.css’;IE5/MAC的過濾器,一般用不著IE的if條件HackOnlyIE<![endif]-->所有的IE可識(shí)別CSSHACK(ie6-ie7-fox兼容)DIV+CSS2009-09-2709:13閱讀39評(píng)論0字號(hào):大大中中小小區(qū)別IE6與FF:background:orange;*background:blue;區(qū)別IE6與IE7:background:green!important;background:blue;區(qū)別IE7與FF:background:orange;*background:green;區(qū)別FF,IE7,IE6:background:orange;*background:green!important;*background:blue;注:IE都能識(shí)別*;標(biāo)準(zhǔn)瀏覽器(如FF)不能識(shí)別*;IE6能識(shí)別*,但不能識(shí)別!important,IE7能識(shí)別*,也能識(shí)別!important;FF不能識(shí)別*,但能識(shí)別!important;IE6IE7FF*√√×!important×√√另外再補(bǔ)充一個(gè),下劃線”_“,IE6支持下劃線,IE7和firefox均不支持下劃線。(推薦)于是大家還可以這樣來區(qū)分IE6,IE7,F(xiàn)F:background:orange;*background:green;_background:blue;注:不管是什么方法,書寫的順序都是firefox的寫在前面,IE7的寫在中間,IE6的寫在最后面。一、CSSHACK以下兩種方法幾乎能解決現(xiàn)今所有HACK.1,!important隨著IE7對(duì)!important的支持,!important方法現(xiàn)在只針對(duì)IE6的HACK.(注意寫法.記得該聲明位置需要提前.)<stylegt;#wrapper{width:100px!important;/*IE7+FF*/width:80px;/*IE6*/}</stylegt;2,IE6/IE77對(duì)FireFox*+html與*html是IE特有的標(biāo)簽,firefox暫不支持.而*+html又為IE7特有標(biāo)簽.<style>#wrapper{#wrapper{width:120px;}/*FireFox*/*html#wrapper{width:80px;}/*ie6fixed*/*+html#wrapper{width:60px;}/*ie7fixed,注意順序*/}</style>注意:*+html對(duì)IE7的HACK必須保證HTML頂部有如下聲明:<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd">二、萬能float閉合(非常重要!)關(guān)于clearfloat的原理可參見[HowToClearFloatsWithoutStructuralMarkup]將以下代碼加入GlobalCSS中,給需要閉合的div加上><style>/*ClearFix*/.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.clearfix{display:inline-block;}/*HidefromIEMac*/.clearfix{display:block;}/*EndhidefromIEMac*//*endofclearfix*/</style>關(guān)于閉合浮動(dòng)元素(clearingfloat)的方法現(xiàn)在已經(jīng)很多了,個(gè)人認(rèn)為簡(jiǎn)單實(shí)用的方法就是使用:after偽類動(dòng)態(tài)的嵌入一個(gè)用于清除浮動(dòng)的元素,可惜代碼量太大了,看上去不夠簡(jiǎn)潔?,F(xiàn)在看到有個(gè)方法超級(jí)簡(jiǎn)單。介紹一下這個(gè)方法。原文在:http://annevankesteren.nl/2005/03/clearing-floats這一方面的原理是,外圍元素之所以不能很好的延伸,問題出在了overflow上,因?yàn)閛verflow不可見(見W3C的解釋)?,F(xiàn)在只要將給外圍元素添加一個(gè)“overflow:auto”,就可以解決問題,結(jié)果是除了IE,真的可以解決。下來就要解決ID的問題了,再加上“_height:1%”,這個(gè)問題就完全解決了。下面的例子作為比較1、沒有閉合浮動(dòng)元素;2、非IE下閉合浮動(dòng)元素;3、完全閉合元素。相關(guān)代碼如下:XHTML代碼:ExampleSourceCode[]<divid="wrap"><divclass="column_left"><h1>Floatleft</h1></div><divclass="column_right"><h1>Floatright</h1></div></div>CSS樣式:ExampleSourceCode[]#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;}三、其他兼容技巧(再次啰嗦)1,FF下給div設(shè)置padding后會(huì)導(dǎo)致width和height增加,但I(xiàn)E不會(huì).(可用!important解決)2,居中問題.1).垂直居中.將line-height設(shè)置為當(dāng)前div相同的高度,再通過vertical-align:middle.(注意內(nèi)容不要換行.)2).水平居中.margin:0auto;(當(dāng)然不是萬能)3,若需給a標(biāo)簽內(nèi)內(nèi)容加上樣式,需要設(shè)置display:block;(常見于導(dǎo)航標(biāo)簽)4,FF和IE對(duì)BOX理解的差異導(dǎo)致相差2px的還有設(shè)為float的div在ie下margin加倍等問題.5,ul標(biāo)簽在FF下面默認(rèn)有l(wèi)ist-style和padding.最好事先聲明,以避免不必要的麻煩.(常見于導(dǎo)航標(biāo)簽和內(nèi)容列表)6,作為外部wrapper的div不要定死高度,最好還加上overflow:hidden.以達(dá)到高度自適應(yīng).7,關(guān)于手形光標(biāo).cursor:pointer.而hand只適用于IE.1針對(duì)firefoxie6ie7的css樣式現(xiàn)在大部分都是用!important來hack,對(duì)于ie6和firefox測(cè)試可以正常顯示,但是ie7對(duì)!important可以正確解釋,會(huì)導(dǎo)致頁面沒按要求顯示!找到一個(gè)針對(duì)IE7不錯(cuò)的hack方式就是使用“*+html”,現(xiàn)在用IE7瀏覽一下,應(yīng)該沒有問題了。現(xiàn)在寫一個(gè)CSS可以這樣:#1{color:#333;}/*Moz*/*html#1{color:#666;}/*IE6*/*+html#1{color:#999;}/*IE7*/那么在firefox下字體顏色顯示為#333,IE6下字體顏色顯示為#666,IE7下字體顏色顯示為#999。2css布局中的居中問題主要的樣式定義如下:body{TEXT-ALIGN:center;}#center{MARGIN-RIGHT:auto;MARGIN-LEFT:auto;}說明:首先在父級(jí)元素定義TEXT-ALIGN:center;這個(gè)的意思就是在父級(jí)元素內(nèi)的內(nèi)容居中;對(duì)于IE這樣設(shè)定就已經(jīng)可以了。但在mozilla中不能居中。解決辦法就是在子元素定義時(shí)候設(shè)定時(shí)再加上“MARGIN-RIGHT:auto;MARGIN-LEFT:auto;”需要說明的是,如果你想用這個(gè)方法使整個(gè)頁面要居中,建議不要套在一個(gè)DIV里,你可以依次拆出多個(gè)div,只要在每個(gè)拆出的div里定義MARGIN-RIGHT:auto;MARGIN-LEFT:auto;就可以了。3盒模型不同解釋.#box{width:600px;//forie6.0-w\idth:500px;//forff+ie6.0}#box{width:600px!important//forffwidth:600px;//forff+ie6.0width/**/:500px;//forie6.0-}4浮動(dòng)ie產(chǎn)生的雙倍距離#box{float:left;width:100px;margin:000100px;//這種情況之下IE會(huì)產(chǎn)生200px的距離display:inline;//使浮動(dòng)忽略}這里細(xì)說一下block,inline兩個(gè)元素,Block元素的特點(diǎn)是:總是在新行上開始,高度,寬度,行高,邊距都可以控制(塊元素);Inline元素的特點(diǎn)是:和其他元素在同一行上,...不可控制(內(nèi)嵌元素);#box{display:block;//可以為內(nèi)嵌元素模擬為塊元素display:inline;//實(shí)現(xiàn)同一行排列的的效果diplay:table;5IE與寬度和高度的問題IE不認(rèn)得min-這個(gè)定義,但實(shí)際上它把正常的width和height當(dāng)作有min的情況來使。這樣問題就大了,如果只用寬度和高度,正常的瀏覽器里這兩個(gè)值就不會(huì)變,如果只用min-width和min-height的話,IE下面根本等于沒有設(shè)置寬度和高度。比如要設(shè)置背景圖片,這個(gè)寬度是比較重要的。要解決這個(gè)問題,可以這樣:#box{width:80px;height:35px;}html>body#box{width:auto;height:auto;min-width:80px;min-height:35px;}6頁面的最小寬度min-width是個(gè)非常方便的CSS命令,它可以指定元素最小也不能小于某個(gè)寬度,這樣就能保證排版一直正確。但I(xiàn)E不認(rèn)得這個(gè),而它實(shí)際上把width當(dāng)做最小寬度來使。為了讓這一命令在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í)際上通過Javascript的判斷來實(shí)現(xiàn)最小寬度。7清除浮動(dòng).hackbox{display:table;//將對(duì)象作為塊元素級(jí)的表格顯示}或者.hackbox{clear:both;}或者加入:after(偽對(duì)象),設(shè)置在對(duì)象后發(fā)生的內(nèi)容,通常和content配合使用,IE不支持此偽對(duì)象,非Ie瀏覽器支持,所以并不影響到IE/WIN瀏覽器。這種的最麻煩的#box:after{content:".";display:block;height:0;clear:both;visibility:hidden;}8DIV浮動(dòng)IE文本產(chǎn)生3象素的bug左邊對(duì)象浮動(dòng),右邊采用外補(bǔ)丁的左邊距來定位,右邊對(duì)象內(nèi)的文本會(huì)離左邊有3px的間距.#box{float:left;width:800px;}#left{float:left;width:50%;}#right{width:50%;}*html#left{margin-right:-3px;//這句是關(guān)鍵}HTML代碼<divid="box"><divid="left"></div><divid="right"></div></div>9屬性選擇器(這個(gè)不能算是兼容,是隱藏css的一個(gè)bug)p[id]{}div[id]{}這個(gè)對(duì)于IE6.0和IE6.0以下的版本都隱藏,FF和OPera作用屬性選擇器和子選擇器還是有區(qū)別的,子選擇器的范圍從形式來說縮小了,屬性選擇器的范圍比較大,如p[id]中,所有p標(biāo)簽中有id的都是同樣式的.10IE捉迷藏的問題當(dāng)div應(yīng)用復(fù)雜的時(shí)候每個(gè)欄中又有一些鏈接,DIV等這個(gè)時(shí)候容易發(fā)生捉迷藏的問題。有些內(nèi)容顯示不出來,當(dāng)鼠標(biāo)選擇這個(gè)區(qū)域是發(fā)現(xiàn)內(nèi)容確實(shí)在頁面。解決辦法:對(duì)#layout使用line-height屬性或者給#layout使用固定高和寬。頁面結(jié)構(gòu)盡量簡(jiǎn)單。11高度不適應(yīng)高度不適應(yīng)是當(dāng)內(nèi)層對(duì)象的高度發(fā)生變化時(shí)外層高度不能自動(dòng)進(jìn)行調(diào)節(jié),特別是當(dāng)內(nèi)層對(duì)象使用margin或paddign時(shí)。例:<divid="box">p對(duì)象中的內(nèi)容</div>CSS:#box{background-color:#eee;}#boxp{margin-top:20px;margin-bottom:20px;text-align:center;}解決方法:在P對(duì)象上下各加2個(gè)空的div對(duì)象CSS代碼:.1{height:0px;overflow:hidden;}或者為DIV加上border屬性。12float的div閉合;清除浮動(dòng);自適應(yīng)高度;①例如:<#divid=”floatA”><#divid=”floatB”><#divid=”NOTfloatC”>這里的NOTfloatC并不希望繼續(xù)平移,而是希望往下排。(其中floatA、floatB的屬性已經(jīng)設(shè)置為float:left;)這段代碼在IE中毫無問題,問題出在FF。原因是NOTfloatC并非float標(biāo)簽,必須將float標(biāo)簽閉合。在<#divclass=”floatB”><#divclass=”NOTfloatC”>之間加上<#divclass=”clear”>這個(gè)div一定要注意位置,而且必須與兩個(gè)具有float屬性的div同級(jí),之間不能存在嵌套關(guān)系,否則會(huì)產(chǎn)生異常。并且將clear這種樣式定義為為如下即可:.clear{clear:both;}②作為外部wrapper的div不要定死高度,為了讓高度能自動(dòng)適應(yīng),要在wrapper里面加上overflow:hidden;當(dāng)包含float的box的時(shí)候,高度自動(dòng)適應(yīng)在IE下無效,這時(shí)候應(yīng)該觸發(fā)IE的layout私有屬性(萬惡的IE?。?用zoom:1;可以做到,這樣就達(dá)到了兼容。例如某一個(gè)wrapper如下定義:.colwrapper{overflow:hidden;zoom:1;margin:5pxauto;}③對(duì)于排版,我們用得最多的css描述可能就是float:left.有的時(shí)候我們需要在n欄的floatdiv后面做一個(gè)統(tǒng)一的背景,譬如:<divid=”page”><divid=”left”></div><divid=”center”></div><divid=”right”></div></div>比如我們要將page的背景設(shè)置成藍(lán)色,以達(dá)到所有三欄的背景顏色是藍(lán)色的目的,但是我們會(huì)發(fā)現(xiàn)隨著leftcenterright的向下拉長(zhǎng),而page居然保存高度不變,問題來了,原因在于page不是float屬性,而我們的page由于要居中,不能設(shè)置成float,所以我們應(yīng)該這樣解決<divid=”page”><divid=”bg”style=”float:left;width:100%”><divid=”left”></div><divid=”center”></div><divid=”right”></div></div></div>再嵌入一個(gè)floatleft而寬度是100%的DIV解決之④萬能float閉合(非常重要!)關(guān)于clearfloat的原理可參見[HowToClearFloatsWithoutStructuralMarkup],將以下代碼加入GlobalCSS中,給需要閉合的div加上class="clearfix"即可,屢試不爽./*ClearFix*/.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.clearfix{display:inline-block;}/*HidefromIEMac*/.clearfix{display:block;}/*EndhidefromIEMac*//*endofclearfix*/或者這樣設(shè)置:.hackbox{display:table;//將對(duì)象作為塊元素級(jí)的表格顯示}13如何對(duì)齊文本與文本輸入框加上vertical-align:middle;<styletype="text/css"><!--input{width:200px;height:30px;border:1pxsolidred;vertical-align:middle;}--></style>14IE6下為什么圖片下有空隙產(chǎn)生解決這個(gè)BUG的方法也有很多,可以是改變html的排版,或者設(shè)置img為display:block或者設(shè)置vertical-align屬性為vertical-align:top|bottom|middle|text-bottom都可以解決.15怎么樣才能讓層顯示在FLASH之上解決的辦法是給FLASH設(shè)置透明<paramname="wmode"value="transparent"/>16怎樣使一個(gè)層垂直居中于瀏覽器中這里我們使用百分比絕對(duì)定位,與外補(bǔ)丁負(fù)值的方法,負(fù)值的大小為其自身寬度高度除以二<styletype="text/css"><!--div{position:absolute;top:50%;lef:50%;margin:-100px00-100px;width:200px;height:200px;border:1pxsolidred;}--></style>第一篇DIVCSS設(shè)計(jì)時(shí)IE6、IE7、FF與兼容性有關(guān)的特性
在網(wǎng)站設(shè)計(jì)的時(shí)候,應(yīng)該注意css樣式兼容不同瀏覽器問題,特別是對(duì)完全使用DIVCSS設(shè)計(jì)的網(wǎng)站,就應(yīng)該更注意IE6IE7FF對(duì)CSS樣式的兼容,不然,你的網(wǎng)頁可能出現(xiàn)意料之外的效果!
例子:
所有瀏覽器通用height:100px;IE6專用_height:100px;
IE6專用*height:100px;IE7專用*+height:100px;IE7、FF共用height:100px!important;
一、CSS兼容
以下兩種方法幾乎能解決現(xiàn)今所有兼容.
1,!important(不是很推薦,用下面的一種感覺最安全)
隨著IE7對(duì)!important的支持,!important方法現(xiàn)在只針對(duì)IE6的兼容.(注意寫法.記得該聲明位置需要提前)<style>
#wrapper{
width:100px!important;/*IE7+FF*/
width:80px;/*IE6*/
}
</style>2,IE6/IE77對(duì)FireFox<from針對(duì)firefoxie6ie7的css樣式>
*+html與*html是IE特有的標(biāo)簽,firefox暫不支持.而*+html又為IE7特有標(biāo)簽.
<style>
#wrapper{width:120px;}/*FireFox*/
*html#wrapper{width:80px;}/*ie6fixed*/*+html#wrapper{width:60px;}/*ie7fixed,注意順序*/</style>注意:*+html對(duì)IE7的兼容必須保證HTML頂部有如下聲明:
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""/TR/html4/loose.dtd">二、萬能float閉合(非常重要)
可以用這個(gè)解決多個(gè)div對(duì)齊時(shí)的間距不對(duì),將以下代碼加入GlobalCSS中,給需要閉合的div加上class=”clearfix”即可,屢試不爽.
<style>
/*ClearFix*/
.clearfix:after{
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
.clearfix{
display:inline-block;
}
/*HidefromIEMac\*/
.clearfix{display:block;}
/*EndhidefromIEMac*/
/*endofclearfix*/
</style>三、其他兼容技巧(相當(dāng)有用)
1,FF下給div設(shè)置padding后會(huì)導(dǎo)致width和height增加,但I(xiàn)E不會(huì).(可用!important解決)
2,居中問題.
1).垂直居中.將line-height設(shè)置為當(dāng)前div相同的高度,再通過vetical-align:middle.(注意內(nèi)容不要換行.)
2).水平居中.margin:0auto;(當(dāng)然不是萬能)
3,若需給a標(biāo)簽內(nèi)內(nèi)容加上樣式,需要設(shè)置display:block;(常見于導(dǎo)航標(biāo)簽)
4,FF和IE對(duì)BOX理解的差異導(dǎo)致相差2px的還有設(shè)為float的div在ie下margin加倍等問題.
5,ul標(biāo)簽在FF下面默認(rèn)有l(wèi)ist-style和padding.最好事先聲明,以避免不必要的麻煩.(常見于導(dǎo)航標(biāo)簽和內(nèi)容列表)
6,作為外部wrapper的div不要定死高度,最好還加上overflow:hidden.以達(dá)到高度自適應(yīng).
7,關(guān)于手形光標(biāo).cursor:pointer.而hand只適用于IE.
第二篇針對(duì)firefoxie6ie7的css樣式
什么是瀏覽器兼容:當(dāng)我們使用不同的瀏覽器(FirefoxIE7IE6)訪問同一個(gè)網(wǎng)站,或者頁面的時(shí)候,會(huì)出現(xiàn)一些不兼容的問題,有的顯示出來正常,有的顯示出來不正常,我們?cè)诰帉慍SS的時(shí)候會(huì)很惱火,剛修復(fù)了這個(gè)瀏覽器的問題,結(jié)果另外一個(gè)瀏覽器卻出了新問題。而兼容就是一種辦法,能讓你在一個(gè)CSS里面獨(dú)立的寫支持不同瀏覽器的樣式。這下就和諧了。呵呵!
微軟發(fā)布的IE7瀏覽器的兼容性確實(shí)給一些網(wǎng)頁制作人員添加了一個(gè)沉重的負(fù)擔(dān),雖然IE7已經(jīng)走向標(biāo)準(zhǔn)化,但還是有許多和FF不同的地方,所以需要用到IE7的兼容,有許多朋友問過IE7的兼容是什么,其實(shí)我也不知道。暫時(shí)還沒找到IE7專用的兼容。除了前面那片文章,《針對(duì)firefoxie6ie7的css樣式》中的兼容方式也是很好用的。
有一點(diǎn)邏輯思想的人都會(huì)知道可以用IE和FF的兼容結(jié)合起來使用,下面介紹三個(gè)兼容,例如:(適合新手,呵呵,高手就在這里路過吧。)第一個(gè)兼容,IEFF所有瀏覽器公用(其實(shí)也不算是兼容)height:100px;第二個(gè)兼容IE6專用_height:100px;第三個(gè)兼容IE6IE7公用*height:100px;介紹完了這三個(gè)兼容了,下面我們?cè)賮砜纯慈绾卧谝粋€(gè)樣式里分別給一個(gè)屬性定義IE6IE7FF專用的兼容,看下面的代碼,順序不能錯(cuò)哦:height:100px;*height:120px;_height:150px;下面我簡(jiǎn)單解釋一下各瀏覽器怎樣理解這三個(gè)屬性:
在FF下,第2、3個(gè)屬性FF不認(rèn)識(shí),所以它讀的是height:100px;
在IE7下,第三個(gè)屬性IE7不認(rèn)識(shí),所以它讀第1、2個(gè)屬性,又因?yàn)榈诙€(gè)屬性覆蓋了第一個(gè)屬性,所以IE7最終讀出的是第2個(gè)屬性*height:120px;
在IE6下,三個(gè)屬性IE6都認(rèn)識(shí),所以三個(gè)屬性都可以讀取,又因?yàn)榈谌齻€(gè)屬性覆蓋掉前2個(gè)屬性,所以IE6最終讀取的是第三個(gè)屬性。
1針對(duì)firefoxie6ie7的css樣式
現(xiàn)在大部分都是用!important來兼容,對(duì)于ie6和firefox測(cè)試可以正常顯示,但是ie7對(duì)!important可以正確解釋,會(huì)導(dǎo)致頁面沒按要求顯示!找到一個(gè)針對(duì)IE7不錯(cuò)的兼容方式就是使用“*+html”,現(xiàn)在用IE7瀏覽一下,應(yīng)該沒有問題了現(xiàn)在寫一個(gè)CSS可以這樣:#1{color:#333;}/*Moz*/*html#1{color:#666;}/*IE6*/*+html#1{color:#999;}/*IE*/那么在firefox下字體顏色顯示為#333IE6下字體顏色顯示為#666,IE7下字體顏色顯示為#999。
2css布局中的居中問題
主要的樣式定義如下:body{TEXT-ALIGN:center;}#center{MARGIN-RIGHT:auto;MARGIN-LEFT:auto;}說明:
首先在父級(jí)元素定義TEXT-ALIGN:center;這個(gè)的意思就是在父級(jí)元素內(nèi)的內(nèi)容居中;對(duì)于IE這樣設(shè)定就已經(jīng)可以了。
但在mozilla中不能居中。解決辦法就是在子元素定義時(shí)候設(shè)定時(shí)再加上:“MARGIN-RIGHT:auto;MARGIN-LEFT:auto;”
需要說明的是,如果你想用這個(gè)方法使整個(gè)頁面要居中,建議不要套在一個(gè)DIV里,你可以依次拆出多個(gè)div,只要在每個(gè)拆出的div里定義MARGIN-RIGHT:auto;MARGIN-LEFT:auto;就可以了。
3盒模型不同解釋
#box{
width:600px;
//forie6.0
-width:500px;
//forff+ie6.0
}
#box{
width:600px!important//forff
width:600px;//forff+ie6.0
width/**/:500px;//forie6.0-}4浮動(dòng)ie產(chǎn)生的雙倍距離#box{float:left;width:100px;margin:000100px;//這種情況之下IE會(huì)產(chǎn)生200px的距離display:inline;//使浮動(dòng)忽略}這里細(xì)說一下block,inline兩個(gè)元素,Block元素的特點(diǎn)是:總是在新行上開始,高度,寬度,行高,邊距都可以控制(塊元素);Inline元素的特點(diǎn)是:和其他元素在同一行上,…不可控制(內(nèi)嵌元素);#box{display:block;//可以為內(nèi)嵌元素模擬為塊元素display:inline;//實(shí)現(xiàn)同一行排列的的效果iplay:table;5IE與寬度和高度的問題
IE不認(rèn)得min-這個(gè)定義,但實(shí)際上它把正常的width和height當(dāng)作有min的情況來使。這樣問題就大了,如果只用寬度和高度,正常的瀏覽器里這兩個(gè)值就不會(huì)變,如果只用min-width和min-height的話,IE下面根本等于沒有設(shè)置寬度和高度。比如要設(shè)置背景圖片,這個(gè)寬度是比較重要的。要解決這個(gè)問題,可以這樣:#box{width:80px;height:35px;}html>body#box{width:auto;height:auto;min-width:80px;min-height:35px;}6頁面的最小寬度
min-width是個(gè)非常方便的CSS命令,它可以指定元素最小也不能小于某個(gè)寬度,這樣就能保證排版一直正確。但I(xiàn)E不認(rèn)得這個(gè),而它實(shí)際上把width當(dāng)做最小寬度來使。為了讓這一命令在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í)際上通過Javascript的判斷來實(shí)現(xiàn)最小寬度。
7清除浮動(dòng).兼容box{display:table;//將對(duì)象作為塊元素級(jí)的表格顯示}或者.兼容box{clear:both;}或者加入:after(偽對(duì)象),設(shè)置在對(duì)象后發(fā)生的內(nèi)容,通常和content配合使用,IE不支持此偽對(duì)象,非Ie瀏覽器支持,所以并不影響到IE/WIN瀏覽器。這種的最麻煩的。#box:after{content:“.”;display:block;height:0;clear:both;visibility:hidden;}8DIV浮動(dòng)IE文本產(chǎn)生3象素的bug
左邊對(duì)象浮動(dòng),右邊采用外補(bǔ)丁的左邊距來定位,右邊對(duì)象內(nèi)的文本會(huì)離左邊有3px的間距.#box{float:left;width:800px;}#left{float:left;width:50%;}#right{width:50%;}*html#left{margin-right:-3px;//這句是關(guān)鍵}HTML代碼:<DIVid=box><DIVid=left></DIV><DIVid=right></DIV></DIV>9屬性選擇器(這個(gè)不能算是兼容,是隱藏css的一個(gè)bug)p[id]{}div[id]{}p[id]{}div[id]{}這個(gè)對(duì)于IE6.0和IE6.0以下的版本都隱藏,FF和OPera作用。
屬性選擇器和子選擇器還是有區(qū)別的,子選擇器的范圍從形式來說縮小了,屬性選擇器的范圍比較大,如p[id]中,所有p標(biāo)簽中有id的都是同樣式的.
10IE捉迷藏的問題
當(dāng)div應(yīng)用復(fù)雜的時(shí)候每個(gè)欄中又有一些鏈接,DIV等這個(gè)時(shí)候容易發(fā)生捉迷藏的問題。
有些內(nèi)容顯示不出來,當(dāng)鼠標(biāo)選擇這個(gè)區(qū)域是發(fā)現(xiàn)內(nèi)容確實(shí)在頁面。
解決辦法:對(duì)#layout使用line-height屬性或者給#layout使用固定高和寬。頁面結(jié)構(gòu)盡量簡(jiǎn)單。
11高度不適應(yīng)
高度不適應(yīng)是當(dāng)內(nèi)層對(duì)象的高度發(fā)生變化時(shí)外層高度不能自動(dòng)進(jìn)行調(diào)節(jié),特別是當(dāng)內(nèi)層對(duì)象使用margin或paddign時(shí)。例:<divid="box"><p>p對(duì)象中的內(nèi)容</p></div>CSS:#box{background-color:#eee;}#boxp{margin-top:20px;margin-bottom:20px;text-align:center;}解決方法:在P對(duì)象上下各加2個(gè)空的div對(duì)象CSS代碼:.1{height:0px;overflow:hidden;}或者為DIV加上border屬性。
第三篇CSSHack匯總快查
屏蔽IE瀏覽器(也就是IE下不顯示)*:lang(zh)select{font:12px
!important;}/*FF可見,特別聲明:由于Opera最新的更新,此句目前已經(jīng)成為FF的專用HACK*/select:empty{font:12px
!important;}/*safari可見*/這里select是選擇符,根據(jù)情況更換。第二句是MAC上safari瀏覽器獨(dú)有的。
僅IE7識(shí)別*+html
{…}當(dāng)面臨需要只針對(duì)IE7做樣式的時(shí)候就可以采用這個(gè)HACK。
IE6及IE6以下識(shí)別*html
{…}這個(gè)地方要特別注意很多人都寫了是IE6的HACK其實(shí)IE5.x同樣可以識(shí)別這個(gè)HACK。其它瀏覽器不識(shí)別。html/**/>body
select{……}這句與上一句的作用相同。
僅IE6不識(shí)別select{display/*IE6不識(shí)別*/:none;}這里主要是通過CSS注釋分開一個(gè)屬性與值,流釋在冒號(hào)前。
僅IE6與IE5不識(shí)別select/**/{display/*IE6,IE5不識(shí)別*/:none;}這里與上面一句不同的是在選擇符與花括號(hào)之間多了一個(gè)CSS注釋。
僅IE5不識(shí)別select/*IE5不識(shí)別*/{display:none;}這一句是在上一句中去掉了屬性區(qū)的注釋。只有IE5不識(shí)別
盒模型解決方法selct{width:IE5.x寬度;voice-family:"\"}\"";voice-family:inherit;width:正確寬度;}盒模型的清除方法不是通過!important來處理的。這點(diǎn)要明確。
清除浮動(dòng)select:after{content:".";display:block;height:0;clear:both;visibility:hidden;}在Firefox中,當(dāng)子級(jí)都為浮動(dòng)時(shí),那么父級(jí)的高度就無法完全的包住整個(gè)子級(jí),那么這時(shí)用這個(gè)清除浮動(dòng)的HACK來對(duì)父級(jí)做一次定義,那么就可以解決這個(gè)問題。
截字省略號(hào)
這個(gè)是在越出長(zhǎng)度后會(huì)自行的截掉多出部分的文字,并以省略號(hào)結(jié)尾,很好的一個(gè)技術(shù)。只是目前Firefox并不支持。
只有Opera識(shí)別@mediaalland(min-width:0px){select{……}
}針對(duì)Opera瀏覽器做單獨(dú)的設(shè)定。
以上都是寫CSS中的一些兼容,建議遵循正確的標(biāo)簽嵌套(divulli嵌套結(jié)構(gòu)關(guān)系),這樣可以減少你使用兼容的頻率,不要進(jìn)入理解誤區(qū),并不是一個(gè)頁面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位租車協(xié)議書模板15篇
- 協(xié)議合同酒店
- 以創(chuàng)新管理模式推動(dòng)發(fā)展在企業(yè)管理經(jīng)驗(yàn)交流會(huì)上的發(fā)言
- 酒后頭痛病因介紹
- 山東省濟(jì)寧市微山縣第二中學(xué)2024-2025學(xué)年高一12月月考?xì)v史試題
- (范文)發(fā)酵罐項(xiàng)目立項(xiàng)報(bào)告
- 房屋與室內(nèi)環(huán)境檢測(cè)技術(shù)-模塊三房屋實(shí)體查驗(yàn)與檢18課件講解
- 2024秋新滬科版物理八年級(jí)上冊(cè)課件 第六章 熟悉而陌生的力 第4節(jié) 探究:滑動(dòng)摩擦力大小與哪里因素有關(guān)
- 《2024產(chǎn)業(yè)互聯(lián)網(wǎng)發(fā)展報(bào)告》教學(xué)應(yīng)用說明
- 電力及電機(jī)拖動(dòng)試題及參考答案
- 建設(shè)精神病醫(yī)院
- 荒漠區(qū)生態(tài)治理工程(尼龍網(wǎng)沙障、植物固沙)施工方案
- 道路交通法規(guī)(陜西交通職業(yè)技術(shù)學(xué)院)知到智慧樹答案
- 2024版光伏發(fā)電站清洗維護(hù)合同3篇
- 《文明禮儀概述培訓(xùn)》課件
- 保險(xiǎn)金信托課件
- 新時(shí)代科學(xué)家精神學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 大型項(xiàng)目設(shè)備運(yùn)輸整體方案
- 人教版(2024年新教材)七年級(jí)上冊(cè)英語各單元語法知識(shí)點(diǎn)復(fù)習(xí)提綱
- 陜煤集團(tuán)筆試題庫及答案
- 33 《魚我所欲也》對(duì)比閱讀-2024-2025中考語文文言文閱讀專項(xiàng)訓(xùn)練(含答案)
評(píng)論
0/150
提交評(píng)論