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前端開發 的區別