瀏覽器相容性問題解決方案之CSS,已在IE、FF、Chrome測試
最近在跟一個同學共同整理一個關於瀏覽器相容性問題的文件,我們主要是找出在主流瀏覽器中出現哪些問題,如何解決這個問題,並給出例項。在這之前,需要明白一下幾個問題。
什麼是瀏覽器相容問題?
所謂的瀏覽器相容性問題,是指因為不同的瀏覽器對同一段程式碼有不同的解析,造成頁面顯示效果不統一的情況。在大多數情況下,我們的需求是,無論使用者用什麼瀏覽器來檢視我們的網站或者登陸我們的系統,都應該是統一的顯示效果。所以瀏覽器的相容性問題是前端開發人員經常會碰到和必須要解決的問題。
為什麼會出現瀏覽器相容問題?
瀏覽器相容問題的出現,是因為各個瀏覽器對W3C標準支援的程度不同而導致的。如果網頁都是一個標準的話,也不會又這種問題,但微軟把自己當成了標準,不遵循網頁的規範,所以一些網頁即使語法錯誤也會在IE正常顯示,而在FF,谷歌瀏覽器等不同核心的瀏覽器中出現“相容問題”,其實是網頁不遵循Web標準。
當前主瀏覽器的核心是什麼?
1) Trident:IE瀏覽器使用的核心,該核心程式在1997年的IE4中首次被採用,是微軟在Mosaic程式碼的基礎之上修改而來的,並沿用到目前的IE7。Trident實際上是一款開放的核心,其介面核心設計的相當成熟,因此才有許多采用IE核心而非IE的瀏覽器湧現(如 Maxthon、TheWorld 、TT、GreenBrowser、AvantBrowser等)。
2) Geckos: Netcape6開始採用的核心,後來的FF也採用了該核心,Geckos的特點是程式碼完全公開,因此,其可開發程度很高,全世界的程式設計師都可以為其編寫程式碼,增加功能。
3) Presto:目前Opera採用的核心,該核心在2003年的Opera7中首次被使用,該款引擎的特點就是渲染速度的優化達到了極致,也是目前公認網頁瀏覽速度最快的瀏覽器核心,然而代價是犧牲了網頁的相容性。
4) Webkit:Safari瀏覽器使用的核心。Google的Chrome瀏覽器也是採用Webkit。Webkit引擎包含WebCore排版引擎及JavaScriptCore解析引擎,均是從KDE的KHTML及KJS引擎衍生而來,它們都是自由軟體,在GPL條約下授權,同時支援BSD系統的開發。所以Webkit也是自由軟體,同時開放原始碼。在安全方面不受IE、Firefox的制約,所以Safari瀏覽器還是比較安全的瀏覽器。
我整理的一些例項,都是在谷歌、IE7、IE8、IE9、IE10、FF中測試過。
例項:
1) 隱藏瀏覽器的滾動條
問題:
隱藏瀏覽器的滾動條
解決:
1) 只有ie7支援<bodyscroll="no">
2) 除ie7不支援body{overflow:hidden}
3) 所有瀏覽器html{overflow:hidden}
例項:
1) 只有ie7支援<body scroll="no">
<body scroll="no" ></body>
2) 除ie7不支援 body{overflow:hidden}
<body style="overflow:hidden" ></body>
3) 所有瀏覽器 html{overflow:hidden}
<body style="overflow:hidden" ></body>
2) 禁用中文輸入法的問題
問題:
不能在輸入框中輸入漢字
解決:
用ime-mode:disabled,只在ie系列和ff中有效,谷歌中,尚未找到方法
例項:
<style type=text/css>
body{text-align:center;width:900px;position: relative;margin:0 auto;padding:0;}
#text{
background-position: center center; background-repeat: no-repeat;width:600px;height:400px;ime-mode:Disabled;
}
</style>
<body>
<div style="margin-top:50px;">
<textarea type="text" id="text" onfocus="if(this.value=='切換輸入法,在此輸入中文試試...')this.value=''" title="試試">切換輸入法,在此輸入中文試試...</textarea>
</div><br /><center>如不能顯示效果,請按Ctrl+F5重新整理本頁</center>
</body>
3) 禁用貼上的問題
問題:
不能將內容複製到輸入框中
解決:
onpaste="returnfalse",瀏覽器通用
例項:
<style type=text/css>
body{text-align:center;width:900px;position: relative;margin:0 auto;padding:0;}
#text{
background-position: center center; background-repeat: no-repeat;width:600px;height:400px;ime-mode:Disabled;
}
</style>
<body>
<div style="margin-top:50px;">
<textarea type="text" id="text" onpaste="return false" onfocus="if(this.value=='在此貼上試試...')this.value=''" title="試試">在此貼上試試...</textarea>
</div><br /><center>如不能顯示效果,請按Ctrl+F5重新整理本頁</center>
</body>
4) 超連結訪問過後hover樣式不出現的問題
問題:
點選超連結後,hover、active樣式沒有效果
解決:
改變CSS屬性的排列順序:L-V-H-A
例項:
<style type="text/css">
a:link {color: #FF0000} /* 未訪問的連結 */
a:visited {color: #00FF00} /* 已訪問的連結 */
a:hover {color: #FF00FF} /* 當有滑鼠懸停在連結上 */
a:active {color: #0000FF} /* 被選擇的連結 */
</style>
<body>
<a href="http://blog.csdn.net/dandanzmc" target="_blank" id="blog">歡迎訪問我的部落格</a>
</body>
5) li中的內容以省略號顯示
問題:
li中內容超過長度時,想以省略號顯示,此方法適用於ie7、8、9、10,谷歌,ff瀏覽器
解決:
li{list-style-type:none;
width:200px;
white-space:nowrap;
text-overflow:ellipsis;
overflow: hidden;
}
例項:
<style type="text/css">
li{
list-style-type:none;
width:200px;
white-space:nowrap;
text-overflow:ellipsis;
overflow: hidden;
}
</style>
<body>
<li>
11月24日,在湖南耒陽西站買票的劉麗因“涉嫌盜竊”突然被警方帶走。在湖南被拘12天,又轉至青海接受調查。待真相大白,劉麗說噩夢不堪回首:“他們搜我的身,屋裡有攝像頭的……那些天我聽得最多的就是‘程式’,這二字在我心中的含義已經變了。”
</li>
</body>
6) 使連續長欄位自動換行
問題:
當div框固定高度寬度後,輸入的文字超過div寬度,超出這個長度,不換行
解決:
word-wrap:break-word
例項:
<style type="text/css">
<!--
div
{
width:300px;
word-wrap:break-word;
border:1px solid red; }
-->
</style>
<body>
<div id="ff">這裡是一行很長的文字aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</div>
</body>
暫時就整理到這些,當然不止這些,還有很多。真心覺得,這一塊要整理的東西很多,有時候,當這些CSS配上不同的框架後,其樣式又有變化。不同的情況不同的解決方案,這幾個只是簡單的一種相容問題。以後多注意點。
另外關於這部分CSS相容性問題請看總結之:瀏覽器相容性問題解決方案之CSS——已在IE、FF、Chrome測試
關於這部分JS的相容性問題請看總結之:瀏覽器相容之JavaScript篇——已在IE、FF、Chrome測試
相關文章
- Mac上如何測試IE瀏覽器相容性-虛擬機器解決方案Mac瀏覽器虛擬機
- angular瀏覽器相容性問題解決方案Angular瀏覽器
- 主流瀏覽器相容性問題與解決方案瀏覽器
- 瀏覽器相容性問題解決方案 · 總結瀏覽器
- 用CSS hack技術解決瀏覽器相容性問題CSS瀏覽器
- chrome瀏覽器最小字號解決方案Chrome瀏覽器
- 解決flash在chrome瀏覽器列印空白的問題Chrome瀏覽器
- 對瀏覽器css相容性的學習理解及問題解決彙總瀏覽器CSS
- IE瀏覽器下常見的CSS相容問題瀏覽器CSS
- 解決ie相容性問題
- 解決Chrome瀏覽器啟動速度慢的問題Chrome瀏覽器
- JS的IE和FF相容性問題彙總JS
- 關於CSS3及瀏覽器相容性問題CSSS3瀏覽器
- 如何解決ie瀏覽器的快取問題瀏覽器快取
- CSS瀏覽器相容性的4個解決方案:瀏覽器CSS樣式初始化、瀏覽器私有屬性,CSS hack語法和自動化外掛CSS瀏覽器
- QTP測試多個瀏覽器視窗的解決方案QT瀏覽器
- parseInt()方法在IE8和IE8以下瀏覽器的相容性問題瀏覽器
- 幾款瀏覽器相容性測試工具瀏覽器
- 針對IE9瀏覽器的CSS 相容性寫法IE9瀏覽器CSS
- JavaScript中解決多瀏覽器相容性23個問題的快速解決方法JavaScript瀏覽器
- 關閉 Chrome 瀏覽器時意外掛起的問題解決了!Chrome瀏覽器
- CSS瀏覽器相容問題集CSS瀏覽器
- IE低版本瀏覽器document.referrer丟失解決方案瀏覽器
- 解決Chrome瀏覽器百度網頁開啟很慢的問題Chrome瀏覽器網頁
- 絕對不能在低版本IE瀏覽器相容性問題上妥協瀏覽器
- 解決瀏覽器解析度問題瀏覽器
- 用jquery解決瀏覽器相容問題jQuery瀏覽器
- 12款很棒的瀏覽器相容性測試工具瀏覽器
- 【軟體測試】你最常用的web測試-瀏覽器相容性測試Web瀏覽器
- WEB前端:瀏覽器(IE+Chrome+Firefox)常見相容問題處理【03】Web前端瀏覽器ChromeFirefox
- 針對ie、safari瀏覽器時間格式化NAN問題解決方法瀏覽器NaN
- IE8瀏覽器下,解決jQuery append方法不生效的問題瀏覽器jQueryAPP
- IE9和IE9以下瀏覽器tbody無法使用innerHTML解決方案IE9瀏覽器HTML
- IE9和IE9以下瀏覽器中tbody不支援innerHTML解決方案IE9瀏覽器HTML
- 各大瀏覽器滾動條相容性問題瀏覽器
- 如何解決get()函式IE瀏覽器中文亂碼問題函式瀏覽器
- 教你用Chrome 瀏覽器+Postman搞定介面測試Chrome瀏覽器Postman
- IE瀏覽器下圖片載入onload事件失效解決方案瀏覽器事件