1. 程式人生 > >Web前端開發中會遇到的瀏覽器相容問題(消滅bug②)

Web前端開發中會遇到的瀏覽器相容問題(消滅bug②)

一、 最小高度相容IE6

方法:1、min-height:100px; height:auto!important; height:100px;

   2、min-height:100px; _height:100px;

二、 塊屬性添加了float後,又添加了橫向的margin,在IE6下比設定的值要大(即雙倍浮動的bug)

方法:給float的標籤轉換成行內元素,新增display:inline;

三、表單元素行高不一致

方法:給表單元素加float:left;或vertical-align:middle;

四、 設定較小高度的容器(<10px),在IE6下不識別

方法:overflow:hidden;

五、當在a標籤中巢狀img標籤時,某些瀏覽器中img會有藍色邊框;

方法:給img{border:0}或img{border:none}(可直接設定在公共樣式中)

六、 圖片預設有空隙

方法:1、給img標籤新增float:left;

   2、給img新增display:block;

七、父元素寬度100%,子元素寬度各為50%,在IE下元素的寬度之和大於100%

方法:給右邊浮動的子元素新增clear:right;

八、滑鼠指標bug當給連結設定指標cursor:hand;此時只有IE識別,其他瀏覽器不識別

方法:cursor:pointer;IE6以上瀏覽器及其他核心瀏覽器都識別

九、透明屬性,opacity:value;(取值範圍0-1)

方法:針對IE瀏覽器filter:alpha(opacity=value);(取值範圍1-100)

十、去除連結虛線邊框的問題,當點選超連結後,ie6/7/8  ff會出現虛線邊框 ,而opera、safari沒有虛線邊框

方法:ie6/7中 設定為a {blr:expression_r(this.onFocus=this.blur())}

  ie8 和 ff 都不支援expression 在ie8 、ff中設定為  :focus { outline: none; }

十一、div巢狀時 y軸上 padding和 marign的問題

FF裡 y 軸上 子div 到 父div 的距離為 父padding + 子marign;

IE裡 y 軸上 子div 到 父div 的距離為 父padding 和 子marign 裡大的一個;

FF裡 y 軸上 父padding=0 且 border=0 時,子div 到 父div 的距離為0,子marign 作用到 父div 外面。

十二、ul標籤在FF中預設有padding值,在IE中只有margin

        方法:在css剛開始設定樣式ul{margin:0;padding:0}

針對這個解決方案,因為塊狀元素在瀏覽器中有預設的margin和padding值,所以在css最開始時,一般會做一個清除預設設定,即:

html,body,div,p,ul,ol,li,dl,dt,dd,form,table,tr,td,th,hr,h1,h2,h3,h4,h5,h6,img,input{
    margin: 0;
padding:0;
}

十三、css hack

瀏覽器不同或瀏覽器版本不同對CSS的解析不一樣,導致在不同瀏覽器的環境中呈現出不一致的頁面展現效果。這時,我們為了獲得統一的頁面效果,就需要針對不同的瀏覽器或不同版本寫特定的CSS樣式,我們把這個針對不同的瀏覽器/不同版本寫相應的CSS code的過程,叫做CSS hack,實際專案中CSS Hack大部分是針對IE瀏覽器不同版本之間的表現差異而引入的。下面為用過濾器(filter)的方式解決css hack的說明:

1、 下劃線屬性過濾器   {_屬性:屬性值;}

針對IE6

2、!important關鍵詞過濾器   {屬性:屬性值!important}

除IE6外,均識別。

注:必須寫在標準寫法前

3、 *過濾器   {*屬性:屬性值;}

只有IE6/IE7識別

4、\9過濾器   {屬性:屬性值\9}

IE7/IE8識別

5、\0過濾器   {屬性:屬性值\0}

IE8及以上瀏覽器

十四、當<doctype html!>未寫時,會觸發某些瀏覽器的怪異模式。

標準盒模型:content+padding+border+padding

怪異盒模型:content+margin

利用怪異盒模型,我們可以解決一個實際開發中常出現的問題,例如:商品列表中,當我們遇到排版n個div,需2個1排時,會給每個div設定padding-left/right值,width設為50%;此時每個div所佔的寬度為width+padding實際上已經超過50%了,會導致排版混亂。此時,我們利用怪異盒模型的特點來設定css樣式“box-sizing:border-box;”,此時,每個div佔的總寬度將不包括border和padding,所以橫向並排的兩個寬為50%的div佈局就OK啦,還可以保證還原原稿上兩橫排div的間距。

十五、漸進增強和優雅降級

漸進增強(ProgressiveEnhancement):一開始就針對低版本瀏覽器進行構建頁面,完成基本的功能,然後再針對高階瀏覽器進行效果、互動、追加功能達到更好的體驗。

優雅降級(GracefulDegradation):一開始就構建站點的完整功能,然後針對瀏覽器測試和修復。比如一開始使用 CSS3 的特性構建了一個應用,然後逐步針對各大瀏覽器進行 hack 使其可以在低版本瀏覽器上正常瀏覽。

.box{
    /*漸進增強*/
-webkit-transition: all .5s;
-moz-transition: all .5s;
-o-transition: all .5s;
transition: all .5s;
}
.box{
    /*優雅降級*/
transition: all .5s;
-o-transition: all .5s;
-moz-transition: all .5s;
-webkit-transition: all .5s;
}
關於優雅降級和漸進增強如何取捨,可參考文章 http://www.jianshu.com/p/d313f1108862

(後期會繼續補充滴~)

相關推薦

Web前端開發遇到的瀏覽器相容問題消滅bug

一、 最小高度相容IE6 方法:1、min-height:100px; height:auto!important; height:100px;    2、min-height:100px; _hei

web前端開發常遇到的問題

1、css問題 (1)margin-top和margin-bottom不能正常顯示: 父盒子中的子盒子使用margin-top不管用,需要在子盒子上加 {height:0;overflow:hidden} (2)父盒子沒有設定高度,子盒子都都設定了浮動,

web前端開發遇到的細節問題

1. <table>中的tr是有高度, 沒有寬度。 今天我試著個thead一個border結果沒有反應, 但是對thead應用background有反應, 後來知道這個要定位的thead 中的th, 這樣就解決了.    <thead>、<tb

前端開發必知:瀏覽器相容(一)——IE雙邊距

一、  不同瀏覽器的標籤預設的padding,margin不同解決:css裡*{margin:0;padding:0;}備註:這個是最常見的也是最易解決的一個瀏覽器相容性問題,幾乎所有的css檔案開頭都

前端開發如何解析json資料

    json資料在web開發中,應用很廣泛,尤其是在網路資料傳輸的時候,json資料作為資料傳輸的載體,如何解析Json返回的資料變得尤為重要。那麼我們先來看一下什麼是json資料? JSON(JavaScript Object Notation) 是一種輕量級的資料交

sublime text3前端開發插件配置以及使用個人喜愛

div ctrl+ script 新的 emmet java 不必要 nes 兄弟節點 第一步下載軟件接著Ctrl +~ (回車)把下面安裝包管理添加到sublimeimport urllib.request,os; pf = ‘Package Control.sublim

Android 人們口中的sdcard和android開發的sdcard的區別自理解

現在的android手機很多都不支援在手機上再插一張sdcard了,就是那種上面印著多少GB的小黑卡,我查了很多資料發現,手機自帶的記憶體(其中分為兩部分:系統所佔記憶體 + 手機除去系統所佔記憶體剩餘的記憶體,其中“手機除去系統所佔記憶體剩餘的記憶體”被安卓預設為:手機自帶

openresty 前端開發輕量級MVC框架封裝二渲染篇

這一章主要介紹怎麼使用模板,進行後端渲染,主要用到了lua-resty-template這個庫,直接下載下來,放到lualib裡面就行了,推薦第三方庫,已經框架都放到lualib目錄裡面,lua目錄放專案原始碼,比較好管理,可以知道那些是專案的,哪些是第三方庫,

openresty 前端開發輕量級MVC框架封裝一控制器篇

通過前面幾章,我們已經掌握了一些基本的開發知識,但是程式碼結構比較簡單,缺乏統一的標準,模組化,也缺乏統一的異常處理,這一章我們主要來學習如何封裝一個輕量級的MVC框架,規範以及簡化開發,並且提供類似php所見即所得的能力 統一入口 通常來說一個mvc框

前端開發面試題總結之—CSS3附上答案

相關知識點 佈局、 浮動、 盒子模型、 彈性和模型、 選擇器優先順序、 居中定位、 相容性、 hack寫法 題目以及答案 如何理解CSS的盒子模型? 每個HTML元素都是長方形盒子。 (1)盒子模型有兩種:IE盒子模型、標準W3C盒子模型;IE的c

ajax請求裡面呼叫window.open瀏覽器攔截優化版

眾所周知,ajax請求裡面呼叫window.open會被瀏覽器攔截方法有兩種解決辦法,但是經測驗例如ajax改為async:false同步請求還會出現一些問題(比如站點外網址被攔截);第一種解決辦法優化:該方法優點描述:比如ajax回撥函式失敗,瀏覽器預設開啟的空連結會自動關

前端開發時自己做樁資料假資料

Deprecated: 已使用第三方mock-server,此DIY的方式就不用了,算作是一次學習吧。 某些功能開發時(以及後續維護時)嚴重依賴api返回的資料。不但要求資料呈現某特定狀態,特別是當前開發功能要修改資料時,費勁巴拉弄好的資料,點一下按鈕,就耗光了。還得

軟體開發的理想與現實十一——夠用就好

2月21日,專案正式開始第二天。依照昨天設計的框架和介面,我們開始實現這些功能,不過似乎大家的進展都比較慢,特別是XophiiX,似乎他陷入了困境之中。具體是什麼問題呢?請看下面的介面定義:    class CReader    {        // ...    pub

Web安全測試常見邏輯漏洞解析實戰篇

*文章原創作者: [email protected]漏洞盒子安全研究團隊,轉載請註明來自FreeBuf黑客與極客(FreeBuf.COM)  邏輯漏洞挖掘一直是安全測試中“經久不衰”的話題。相比SQL注入、XSS漏洞等傳統安全漏洞,現在的攻擊者更傾向於利用業務

web開發的各種瀏覽器相容問題

最近在學js開發,發現很多瀏覽器相容問題有不同的寫法,記錄一下. 1.css3中的新標籤 比如border-radius,box-shadow 要寫成多瀏覽器相容 border-radius:5px; -moz-border-radius:5px; -webkit-bord

Web前端開發,企業都是用VS code嗎?

由於VS被評為最好用的IDE,所以出了VSC也是蠻讓人等待的,看了官方使用引見開端體驗了一下,果真佈滿驚喜,比sublime開源,比atom更快,比webstorm更輕。 開端印象 - 檔案目錄辦理很強大 - 自界說設定裝備安排,主題,主動保留,可以設定耽誤毫秒後保留,也可以設定檔案失

Web前端開發必備--瀏覽器知識科普

       做前端開發的程式設計師一定要熟悉各種瀏覽器的核心,以瞭解各種瀏覽器的相容性,瀏覽器自帶的特性,這樣才能做出更好的相容性設計以及程式碼撰寫。        瀏覽器的種類,如果按照生產商的品牌分,不說數以萬計,起碼也有成百上千種了, 如果按瀏覽器核心分類,它的種類

web前端開發專案可能遇到的細節性問題1【position,padding+margin】

 1.區別a和b—— a.position:absolute;    b.position:relative; ——position:absolute;表示絕對定位, (1)其一般要設定高度跟居左的畫

前端開發的JS調試技巧

pre 整潔 選擇 輸入 越來越大 代碼執行 auto move ctr 前言:調試技巧,在任何一項技術研發中都可謂是必不可少的技能。掌握各種調試技巧,必定能在工作中起到事半功倍的效果。譬如,快速定位問題、降低故障概率、幫助分析邏輯錯誤等等。而在互聯網前端開發越來越重要的今

web端設計和web前端開發 的區別

mage ima cnblogs 前端開發 src web前端開發 log alt .cn web端設計和web前端開發 的區別