下面內容參考與dandanzmc文章。
什麼是瀏覽器兼容問題?
所謂的瀏覽器兼容性問題,是指因爲不一樣的瀏覽器對同一段代碼有不一樣的解析,形成頁面顯示效果不統一的狀況。css
在大多數狀況下。咱們的需求是,無論用戶用什麼瀏覽器來查看咱們的站點或者登錄咱們的系統,都應該是統一的顯示效果。因此瀏覽器的兼容性問題是前端開發者經常會碰到和必須要解決的問題。html
爲何會出現瀏覽器兼容問題?
瀏覽器兼容問題的出現,是因爲各個瀏覽器對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中首次被使用。該款引擎的特色就是渲染速度的優化達到了極致。也是眼下公認網頁瀏覽速度最快的瀏覽器內核,然而代價是犧牲了網頁的兼容性。ide
4) Webkit:Safari瀏覽器使用的內核。優化
Google的Chrome瀏覽器也是採用Webkit。this
Webkit引擎包括WebCore排版引擎及JavaScriptCore解析引擎。均是從KDE的KHTML及KJS引擎衍生而來,它們都是自由軟件。在GPL條約下受權,同一時候支持BSD系統的開發。spa
因此Webkit也是自由軟件,同一時候開放源碼。在安全方面不受IE、Firefox的制約,因此Safari瀏覽器仍是比較安全的瀏覽器。
我整理的一些實例。都是在谷歌、IE七、IE八、IE九、IE十、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中有效。谷歌中,還沒有找到方法
實例:
- 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;
- }
- <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"。瀏覽器通用
實例:
- 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;
- }
- <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中內容超過長度時。想以省略號顯示,此方法適用於ie七、八、九、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配上不一樣的框架後。其樣式又有變化。
不一樣的狀況不一樣的解決方式。這幾個僅僅是簡單的一種兼容問題。之後多注意點。