CSS Bug、CSS Hack和Filter學習筆記
1)CSS Bug:CSS樣式在各瀏覽器中解析不一致的狀況,或者說CSS樣式在瀏覽器中不能正確顯示的問題稱爲CSS bug.
2)CSS Hack: CSS中,Hack是指一種兼容CSS在不一樣瀏覽器中正確顯示的技巧方法,由於它們都屬於我的對CSS代碼的非官方的修改,或非官方的補丁。有些人更喜歡使用patch(補丁)來描述這種行爲。
3)Filter:表示過濾器的意思,它是一種對特定的瀏覽器或瀏覽器組顯示或隱藏規則或聲明的方法。本質上講,Filter是一種用來過濾不一樣瀏覽器的Hack類型。
*使用Hack帶來的一些反作用
下降了CSS代碼的可讀性,增長了代碼的負擔。
*設計CSS Hack和 Filter一般有兩種方法
1)一種是利用瀏覽器自身的Bug,來隱藏或顯示樣式或聲明;
2)另外一種是利用瀏覽器對CSS支持的不完善,如對某些規則或語法尚未造成支持,來隱藏或顯示樣式。
IE6常見CSS解析Bug及hack
1)圖片間隙
A)在元素中直接插入圖片時,圖片下方會產生約3像素的間隙(該bug出如今IE6及更低版本中)
hack1:將<img>轉爲塊狀元素,給<img>添加聲明:display:block;
hack2:將img設置vertical-align:top/middle/bottom;只要不爲baseline
2) 雙倍浮向(雙倍邊距)
描述:當Ie6及更低版本瀏覽器在解析浮動元素時,會錯誤地把浮向邊邊界加倍顯示。
hack:給浮動元素添加聲明:display:inline;
3)默認高度(IE6)
描述:在IE6及如下版本中,部分塊元素擁有默認高度(低於16px高度)
hack1:給元素添加聲明:font-size:0;
hack2:給元素添加聲明:overflow:hidden;
4)百分比bug
描述:在IE6及如下版本中在解析百分比時,會按四捨五入方式計算從而致使50%加50%大於100%的狀況。
hack:給右面的浮動元素添加聲明:clear:right; 意思:清除右浮動。
5)表單元素高度及對齊方式不一致(IE,MOZ,C,O,S)
描述:表單元素行高對齊方式不一致
hack:給表單元素添加聲明:float:left;或vertical-align:top;
2)表單元素中按鈕的解析是按怪異盒模型解析的。
3)直接去掉表單控件的邊框時用border:0;border:none;不能兼容ie7如下瀏覽器。
*透明寫法
1.opacity:0~1;IE8以上的瀏覽器
2.filter:alpha(opacity=1~100); IE9及IE9如下的瀏覽器
6)列表階梯BUG(IE6及更低版本的瀏覽器中)
bug1:在給的子元素中使用了Float:left;父元素中沒有設置浮動屬性,li階梯狀效果。
hack:給父元素設置浮動便能解決此問題
bug2:當給LI裏的A轉成塊元素,並設置了固定高度時,且給父元素寫了浮動後在IE6及更低的版本瀏覽器裏會出現垂直顯示。
hack:給a也設置左浮動即可解決。
8)鼠標指針bug
描述:cursor屬性的hand屬性值只有IE瀏覽器識別,其它瀏覽器不識別該聲明,cursor屬性的pointer屬性值IE6.0以上版本及其它內核瀏覽器都識別該聲明。
hack:如統一某元素鼠標指針形狀爲手型,應添加聲明:cursor:pointer;
擴展內容:
鼠標指針
cursor:crosshair(十字架)
pointer(手形)
move(移動)
e-resize(左右方向)
ne-resize(向右及向上移動)
nw-resize(向上及向左移動)
n-resize(向上移動)
se-resize(向下及向右)
sw-resize(向下及向左)
s-resize(向下移動)
w-resize(向左移動)
text(文本)
wait(等待狀態)
help(幫助)