常見的瀏覽器相容問題

来源:http://www.cnblogs.com/hyea/archive/2016/04/23/5425439.html
-Advertisement-
Play Games

所謂的瀏覽器相容性問題,是指因為不同的瀏覽器對同 段代碼有不同的解析,造成 顯 效果不統 的情況。在 多 數情況下,我們的需求是, 論 戶 什麼瀏覽器來查看我們的 站或者登陸我們的系統,都應該是統 的顯 效果。所 以瀏覽器的相容性問題是前端開發 員經常會碰到和必須要解決的問題。 在學習瀏覽器相容性之 ...


所謂的瀏覽器相容性問題,是指因為不同的瀏覽器對同 段代碼有不同的解析,造成 顯 效果不統 的情況。在 多 數情況下,我們的需求是, 論 戶 什麼瀏覽器來查看我們的 站或者登陸我們的系統,都應該是統 的顯 效果。所 以瀏覽器的相容性問題是前端開發 員經常會碰到和必須要解決的問題。

在學習瀏覽器相容性之前,我想把前端開發 員劃分為兩類:

第一類是精確按照設計圖開發的前端開發 員,可以說是精確到1px的,他們很容易就會發現設計圖的不 ,並且在很少的情況下會碰到瀏覽器的相容性問題, 這些問題往往都死瀏覽器的bug,並且他們製作的 後期易維護,代碼重 問 題少,可以說是 較牢固放 的代碼。

第二類是基本按照設計圖來開發的前端開發人員,很多細枝末節差距很 ,不如間距,  ,圖 位置等等經常會差 px。某種效果的實現也是反覆調試得到,具體為什麼出現這種效果還模模糊糊,整體佈局 分脆弱。稍有改動就亂七 糟。代碼為什麼這麼寫還不知所以然。這類開發 員往往經常為相容性問題所困。修改好了這個瀏覽器 亂了另 個瀏覽 器。改來改去也毫 頭緒。其實他們碰到的相容性問題 部分不應該歸咎於瀏覽器, 是他們的技術本 了。

主要針對的是第一類,嚴謹型的開發 員,因此這 主要從瀏覽器解析差異的 度來分析相容性問題。

瀏覽器相容問題 :不同瀏覽器的標簽預設的外補丁和內補丁不同

問題癥狀:隨便寫 個標簽,不加樣式控制的情況下,各 的margin 和padding差異較 。

碰到頻率:100%

解決方案:CSS *{margin:0;padding:0;}

備註:這個是最常 的也是最易解決的 個瀏覽器相容性問題, 乎所有的CSS 件開頭都會 通配符*來設置各個標簽 的內外補丁是0。

瀏覽器相容問題 :塊屬性標簽float後, 有橫 的margin情況下,在IE6顯 margin  設置的

問題癥狀:常 癥狀是IE6中後 的 塊被頂到下

碰到頻率:90%(稍微複雜點的 都會碰到,float佈局最常 的瀏覽器相容問題)

解決方案:在float的標簽樣式控制中加  display:inline;將其轉化為 內屬性

備註:我們最常 的就是div+CSS佈局了, div就是 個典型的塊屬性標簽,橫向佈局的時候我們通常都是 div float實 現的,橫向的間距設置如果 margin實現,這就是 個必然會碰到的相容性問題。

瀏覽器相容問題三:設置較 度標簽( 般 於10px),在IE6,IE7,遨游中 度超出 設置 度

問題癥狀:IE6、7和遨游 這個標簽的 度不受控制,超出 設置的 度

碰到頻率:60%

解決方案:給超出 度的標簽設置overflow:hidden;或者設置 line-height 於你設置的 度。

備註:這種情況 般出現在我們設置 圓 背景的標簽 。出現這個問題的原因是IE8之前的瀏覽器都會給標簽 個最 預設的 的 度。即使你的標簽是空的,這個標簽的 度還是會達到預設的 。

瀏覽器相容問題四: 內屬性標簽,設置display:block後採 float佈局, 有橫 的margin的情況,IE6間距bug

問題癥狀:IE6   的間距 超過設置的間距

碰到幾率:20%

解決方案:在display:block;後 加 display:inline;display:table;

備註: 內屬性標簽,為了設置寬 ,我們需要設置display:block;(除了input標簽 較特殊)。在 float佈局並有橫向的 margin後,在IE6下,他就具有了塊屬性float後的橫向margin的bug。不過因為它本 就是 內屬性標簽,所以我們再加 上display:inline的話,它的 寬就不可設了。這時候我們還需要在display:inline後 加 display:talbe。

瀏覽器相容問題五: 元素綁架 元素的margin-top

問題癥狀:這個問題主要出現在 IE瀏覽器中。如果 元素和 元素之間沒有任何內容,將 元素設置margin-top後,  元素不會動,  元素會因為margin-top往下移動。

碰到幾率:80%

解決方案:在 元素和 元素之間加 <div stye=‘height:0’> </div>。或者設置 元素的padding-top。

瀏覽器相容問題六:圖 預設有間距

問題癥狀: 個img標簽放在 起的時候,有些瀏覽器會有預設的間距,加了問題 中提到的通配符也不起作 。

碰到幾率:20%

解決方案:使 float屬性為img佈局

備註:因為img標簽是 內屬性標簽,所以只要不超出容器寬度,img標簽都會排在   ,但是部分瀏覽器的img標簽之 間會有個間距。去掉這個間距使 float是正道。(我的 個學 使 負margin,雖然能解決,但負margin本 就是容易 引起瀏覽器相容問題的 法,所以我禁 他們使 )

瀏覽器相容問題七:標簽最低 度設置min-height不相容

問題癥狀:因為min-height本 就是 個不相容的CSS屬性,所以設置min-height時不能很好的被各個瀏覽器相容

碰到幾率:5%

解決方案:如果我們要設置 個標簽的最 度200px,需要進 的設置為:{min-height:200px; height:auto !important; height:200px; overflow:visible;}

備註:在B/S系統前端開時,有很多情況下我們 這種需求。當內容 於 個值(如300px)時。容器的 度為300px; 當內容 度 於這個值時,容器 度被撐 , 不是出現滾動條。這時候我們就會 臨這個相容性問題。

瀏覽器相容問題 :透明度的相容CSS設置

IE:filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=60)。

FF:opacity:0.6。

做相容 的 法是:每寫 段代碼(佈局中的 或者 塊)我們都要在不同的瀏覽器中看是否相容,當然熟練到 定的程度就沒這麼 煩了。建議經常會碰到相容性問題的新 使 。很多相容性問題都是因為瀏覽器對標簽的預設屬性解 析不同造成的,只要我們稍加設置都能輕鬆地解決這些相容問題。如果我們熟悉標簽的預設屬性的話,就能很好的理解為 什麼會出現相容問題以及怎麼去解決這些相容問題。

1./* CSS hack*/

我很少使 hacker的,可能是個 習慣吧,我不喜歡寫的代碼IE不相容,然後 hack來解決。不過hacker還是 常好 的。使 hacker我可以把瀏覽器分為3類:IE6 ;IE7和遨游;其他(IE8 chrome ff safari opera等)

◆IE6認識的hacker 是下劃線_ 和星號 *

◆IE7 遨游認識的hacker是星號 *

如這樣 個CSS設置:height:300px;*height:200px;_height:100px;

IE6瀏覽器在讀到height:300px的時候會認為 時300px;繼續往下讀,他也認識*heihgt, 所以當IE6讀到*height:200px的時候會覆蓋掉前 條的相衝突設置,認為 度是200px。繼續往下讀,IE6還認識_height,所以他 會覆蓋掉200px 的設 置,把 度設置為100px;

IE7和遨游也是 樣的從 度300px的設置往下讀。當它們讀到*height200px的時候就停下了,因為它們不認識_height。 所以它們會把 度解析為200px,剩下的瀏覽器只認識第 個height:300px;所以他們會把 度解析為300px。因為優先順序 相同且想衝突的屬性設置後 個會覆蓋掉前 個,所以書寫的次序是很重要的。

2.條件註釋

<!--[if lte IE 6]> 這段 字僅顯 在 IE6及IE6以下版本。 <![endif]--> <!--[if gte IE 6]> 這段 字僅顯 在 IE6及IE6以上版本。 <![endif]-->

<!--[if gt IE 6]> 這段 字僅顯 在 IE6以上版本(不包含IE6)。 <![endif]--> <!--[if IE 5.5]> 這段 字僅顯 在 IE5.5。 <![endif]-->

<!--在 IE6及IE6以下版本中載入css-->

<!--[if lte IE 6]> <link type="text/css" rel="stylesheet" href="css/ie6.css" mce_href="css/ie6.css" /><![endif]-->

缺點是在IE瀏覽器下可能會增加額外的HTTP請求數。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 學習要點: 1.表單 2.圖片 主講教師:李炎恢 本節課我們主要學習一下 Bootstrap 表單和圖片功能,通過內置的 CSS 定義,顯示各種豐富的效果。 一.表單 Bootstrap 提供了一些豐富的表單樣式供開發者使用。 1.基本格式 //實現基本的表單樣式 註:只有正確設置了輸入框的 typ ...
  • ng-include directive is used to embed an HTML page into another HTML page. This technique is extremely useful when you want to reuse a specific view i ...
  • The ng-init directive allows you to evaluate an expression in the current scope. In the following example, the ng-init directive initializes employees ...
  • 在進行定時器的製作時,我想先把我們需要用到的一些東西介紹給大家。 定時器的作用 開啟定時器 setInterval 間隔型 setTimeout 延遲型 停止定時器 clearInterval clearTimeout 數位時鐘思路效果 獲取系統時間: date對象 getHours getMinu ...
  • 最近在做文件上傳的功能,因為界面設計比較簡單,就沒有引用jq,但是網上大部分的上傳插件都需要jq的支持。為了一個上傳功能引用90多k的jq文件有點太小題大做了,所以就自己動手寫了一個原生js上傳的demo。下麵是代碼: HTML代碼 伺服器端用的是.Net c#代碼 說明: 根據網上相關資料,據說支 ...
  • 通配選擇器 可以與任何元素匹配,就像是一個通配符 元素選擇器 指示文檔元素的選擇器。 分組 選擇器分組 聲明分組 結合選擇器和聲明分組 類選擇器和ID選擇器 獨立於文檔元素的方式來指定樣式 類選擇器 ID選擇器 ID選擇器和類選擇器的不同之處: 類選擇器和ID選擇器可能是區分大小寫的,這取決於文檔語 ...
  • CSS3新增的動畫幀非常絢麗,可以簡單實現一些動畫效果,目前除IE外各大主流瀏覽器都支持 本文演示三個:transform: scale3d(x, y, z)-縮放;、transform: translate3d(x, y, z)-位移;、transform:rotateX/Y(?deg)-旋轉; ...
  • 一、元素選擇器 HTML文檔元素就是最基本的選擇器 如: 示例將<p>元素的字體顏色設置為了藍色,元素選擇器將作用於文檔內所有的<p>元素。同樣,我們也能夠同時為多個元素應用一種樣式,如: 為多個元素應用樣式時,用逗號分隔。 *作為通配選擇器,可以與任何元素匹配。 格式:元素|通配符 二、類選擇器 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...