瀏覽器兼容

Css兼容問題

  • 樣式在各瀏覽器中解析不一致的情況睹逃,或者說CSS樣式在瀏覽器中不能正確顯示的問題稱為CSS bug.
  • CSS Hack: CSS中寒匙,Hack是指一種兼容CSS在不同瀏覽器中正確顯示的技巧方法旋恼,修補bug的方法
  • Filter:表示過濾器的意思拓轻,它是一種對特定的瀏覽器或瀏覽器組顯示或隱藏規(guī)則或聲明的方法。本質(zhì)上講始藕,F(xiàn)ilter是hack方法中的一種女淑;
IE6常見CSS解析Bug及hack(解決方法)

1.默認高度(IE6)

描述:在IE6及以下版本中,部分塊元素擁有默認高度(低于18px高度)
hack1:給元素添加聲明:font-size:0;
hack2:給元素添加聲明:overflow:hidden;

2.圖片間隙
div中的圖片間隙

bug:在塊元素中插入圖塊狀元素片時辜御,有時圖片會將塊元素下方撐大三像素鸭你。
Hack:將<img>轉(zhuǎn)為,給<img>添加聲明:display:block;

3.雙倍浮向(雙倍邊距)
描述:當Ie6及更低版本瀏覽器在解析浮動元素時擒权,會錯誤地把浮向邊的邊界加倍顯示袱巨。

hack:給浮動元素添加聲明:display:inline;

4.表單元素行高不一致(IE,MOZ,C,O,S)

bug:表單元素行高對齊方式不一致
hack:給表單元素添加聲明:float:left;

5.按鈕元素默認大小及樣式不一 致

hack1: 統(tǒng)一大小及樣式/(用a標記模擬)
hack2:如果這個按鈕是一個圖片,直接把圖片作為按鈕的背景圖即可碳抄。

6.百分比bug
描述:在IE6及以下版本中在解析百分比時愉老,會按四舍五入方式計算從而導致50%加50%大于100%的情況。

hack:給右面的浮動元素添加聲明:clear:right;     意思:清除右浮動剖效。     
clear:left:清除左浮動
clear:both:清除兩邊的浮動

7.鼠標指針bug
描述:cursor屬性的hand屬性值只有IE8瀏覽器識別;

hack:如統(tǒng)一某元素鼠標指針形狀為手型嫉入,應添加聲明:cursor:pointer;
- auto默認
- crosshair加號
- text文本
- wait等待
- help幫助
- progress過程
- inherit繼承
- move移動
- ne-resize向上或向右移動
- pointer手形

8.透明屬性

IE瀏覽器寫法:filter:alpha(opacity=數(shù)值);取值范圍 1-100(IE8以下)
兼容其他瀏覽器寫法:opacity:數(shù)值;(數(shù)值的取值范圍0-1,0.1,0.2,0.3-----0.9)

9.當li里的A加display:block或float:left時,出現(xiàn)行高不一致璧尸,有的會多出3像素

hack1:給a加display:inline-block咒林;
hack2:給a加display:inline;
Hack3:給li加float,并加寬度爷光;

10.當li加float屬性垫竞,并且li里的A轉(zhuǎn)換成塊元素,并給a加了高度時,IE6里會出現(xiàn)每個LI單獨占一行或階梯狀的情況

hack1:不給a標簽加高度蛀序;
Hack2:給a標簽也添加float欢瞪;

11.父元素里有塊元素活烙,如果給子元素添加添加margin-top,父元素會下來

Hack1:給父元素添加overflow:hidden;
Hack2:給子元素添加float遣鼓;
Hack3:給父元素加邊框啸盏;

或者用其他的方法達到我們想要的效果:如給父元素加padding-top.
12.Fliter(過濾器)方法兼容瀏覽器

- _下劃線:IE6瀏覽器的兼容符號; (只有IE6瀏覽器識別此符號譬正,其他瀏覽器不識別)
        語法:選擇器{_屬性:屬性值宫补;}

- *或+:兼容所有IE7以下瀏覽器;(只有IE7及以下版本瀏覽器識別此符號曾我,其他瀏覽器不識別)
        語法:選擇器{*屬性:屬性值; +屬性:屬性值; }

- \0:IE8及以上瀏覽器的兼容符號粉怕;
        語法:選擇器{屬性:屬性值\0;}

- \9:兼容所有IE瀏覽器;
        語法:選擇器{屬性:屬性值\9}(只有IE瀏覽器識別此符號抒巢,其他瀏覽器不識別)

js兼容問題

1.各瀏覽器下 scrollTop的差異
IE6/7/8:
對于沒有doctype聲明的頁面里可以使用 document.body.scrollTop 來獲取 scrollTop高度 贫贝;
對于有doctype聲明的頁面則可以使用 document.documentElement.scrollTop;
Safari:
safari 比較特別蛉谜,有自己獲取scrollTop的函數(shù) : window.pageYOffset 稚晚;
Firefox:
火狐等等相對標準些的瀏覽器就省心多了,直接用 document.documentElement.scrollTop 型诚;
*完美的獲取scrollTop 賦值短語 :

var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;*

2.關于使用 firstChild,lastChild 等客燕,獲取第一個/最后一個元素節(jié)點時產(chǎn)生的問題
--IE6-8下: firstChild,lastChild,nextSibling,previousSibling,獲取第一個元素節(jié)點
--高版本瀏覽器下: firstElementChild,lastElementChild,nextElementSibling,previousElementSibling

var firstChild = oBox.firstChild || oBox.firstElementChild;

3.**獲取樣式 currentStyle 和 getComputedStyle **
IE: currentStyle
Chrome: getComputedStyle

function getStyle(obj,attr){
    if(window.getComputedStyle){
        return getComputedStyle(obj,null)[attr];
    }
    return obj.currentStyle[attr];
}

4.事件對象
ie低版本:window.event

var evt = e || window.event;

5.獲取事件源
ie : event.srcElement
firefox : event.target

var _target = evt.target || evt.srcElement;

6.添加事件監(jiān)聽器attachEvent/attachEventLister
IE8以下用: attachEvent
Chrome,IE9-10用: attachEventLister

           //添加事件
           function addEvent(obj,type,fn){
               if(obj.addEventListener){
                   obj.addEventListener(type,fn,false);
               }else{
                   obj.attachEvent("on"+type,fn);
               }
           }
           //移除事件
           function removeClass(obj,type,fn){
               if(obj.removeEventListener){
                   obj.removeEventListener(type,fn)
               }else{
                   obj.detachEvent("on"+type,fn);
               }
           }

7.document.getElementByClassName():根據(jù)類名查找元素,返回集合(IE9及以上版本支持)

function getByClassName(className, context) {
         context = context || document;
         if (document.getElementsByClassName) // 瀏覽器支持使用 getElementsByClassName
                return context.getElementsByClassName(className);
         /* 不支持使用 getElementsByClassName */
         // 保存查找到的元素的數(shù)組
         var result = [];
         // 查找 context 后代的所有元素
         var allTags = context.getElementsByTagName("*");
         // 遍歷所有的元素
         for(var i = 0, len = allTags.length; i < len; i++) {
              // 獲取當前遍歷元素使用的所有 class 類名
              var classNames = allTags[i].className.split(" ");
              // 遍歷當前元素的所有類名狰贯,和待查找的類名比較
              for (var j = 0, l = classNames.length; j < l; j++) {
                     if (classNames[j] == className) { // 當前所在遍歷的元素是要查找出來的其中一個
                            result.push(allTags[i]);
                            break;
                     }
              }
       }
       // 返回查找結(jié)果
       return result;
}

8.阻止事件冒泡
stopPropagation()和cancelBubble也搓,前者是方法,是標準的寫法涵紊,后者是屬性傍妒,賦值true表示阻止,是IE的寫法摸柄。

if(evt.stopPropagation){
    evt.stopPropagation();
}else{
    evt.cancelBubble = true;
}

9.阻止默認行為兼容
ie : returnValue
其他瀏覽器:preventDefault

event.preventDefault?event.preventDefault():event.returnValue=false;
或者直接在事件處理程序中return false;

10.獲取用戶按下的鍵值

console.log(evt.keyCode || evt.which);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颤练,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子驱负,更是在濱河造成了極大的恐慌嗦玖,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件电媳,死亡現(xiàn)場離奇詭異踏揣,居然都是意外死亡,警方通過查閱死者的電腦和手機匾乓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門捞稿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事娱局≌煤ィ” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵衰齐,是天一觀的道長任斋。 經(jīng)常有香客問我,道長耻涛,這世上最難降的妖魔是什么废酷? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮抹缕,結(jié)果婚禮上澈蟆,老公的妹妹穿的比我還像新娘。我一直安慰自己卓研,他們只是感情好趴俘,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奏赘,像睡著了一般寥闪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上磨淌,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天疲憋,我揣著相機與錄音,去河邊找鬼梁只。 笑死柜某,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的敛纲。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼剂癌,長吁一口氣:“原來是場噩夢啊……” “哼淤翔!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起佩谷,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤旁壮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后谐檀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抡谐,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桦山。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡食棕,死狀恐怖悲没,靈堂內(nèi)的尸體忽然破棺而出涩禀,到底是詐尸還是另有隱情亿汞,我是刑警寧澤亮垫,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布羔沙,位于F島的核電站躺涝,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏扼雏。R本人自食惡果不足惜坚嗜,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诗充。 院中可真熱鬧苍蔬,春花似錦、人聲如沸其障。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽励翼。三九已至蜈敢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汽抚,已是汗流浹背抓狭。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留造烁,地道東北人否过。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像惭蟋,于是被迫代替她去往敵國和親苗桂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 序章 談談“瀏覽器兼容性”的問題便锨?很多前端的面試或筆試中,都有比較籠統(tǒng)的“說說你所知道的各瀏覽器存在的兼容問題”我碟,...
    麻辣小隔壁閱讀 3,046評論 1 57
  • 一放案、如何調(diào)試 IE 瀏覽器 IE7以上版本自帶的開發(fā)者工具,IE6可以用border的方法矫俺;例:IE11的開發(fā)者工...
    __Qiao閱讀 1,127評論 2 17
  • 一吱殉、問答部分 1. 如何調(diào)試 IE 瀏覽器 IE7及以上版本有調(diào)試臺掸冤,可以按F12啟動。Paste_Image.p...
    _hello__world_閱讀 466評論 0 1
  • 什么是 CSS hack CSS hack是通過在CSS樣式中加入一些特殊的符號考婴,讓不同的瀏覽器識別不同的符號(什...
    怎么昵稱閱讀 387評論 0 1
  • 一 細雨微風迷樹贩虾,碎萍枯葉衰池。 露華凝澀暮鐘遲沥阱,一盞孤燈誰記缎罢。 幾瓣花妝隨夢,半庭殘色成灰考杉。 無言苦笑任低眉策精,仰...
    筆墨從容閱讀 358評論 0 2