首頁  >  文章  >  web前端  >  瀏覽器相容HTML5和CSS3的問題

瀏覽器相容HTML5和CSS3的問題

php中世界最好的语言
php中世界最好的语言原創
2017-12-02 13:45:232273瀏覽

 HTML5和CSS3是非常好用且功能強大的新屬性,唯一的重大缺陷就是可能很多舊版瀏覽器不相容,今天就給大家分享一下關於舊版的瀏覽器兼容HTML5和CSS3的問題。

1.讓老式瀏覽器支援HTML5
 
 HTML5能為我們做的事兒很多,最為可口的就是語意化標籤的應用,如果你已經在Chrome或其他支援HTML5的瀏覽器上用過它的牛x,那這篇文章一定對你有​​用,因為現在你也可以在IE上用到HTML5。
 
第一種方法:使用Google的html5shiv套件(建議)

 首先你要引用下面是引用Google的html5.js文件,好處就不說了:


#JavaScript Code複製內容到剪貼簿

1.3b91107ae0f6dc60cbcc0243262d767f  
2.2a6992a43c708cab2d77dc4d665d2f712cacc6d41bbb37262a98f745aa00fbf0  
3.bd121e40e132cd2f69209d509c354edd 

#將上程式碼複製到head部分,記住一定要是head部分(因為IE必須在元素解析前知道這個元素,所以這個js檔案不能在其他位置調用,否則失效)

 主要是讓這些html5標籤成塊狀,像p那樣。好了,簡單吧,一句話概括就是:引用html5.js  讓html5標籤成塊狀

 第二種方法:Coding JavaScript


JavaScript Code複製內容到剪貼簿

1.<!--[if lt IE9]>   
2.<script>   
3.   (function() {  
4.     if (!   
5.     /*@cc_on!@*/ 
6.     0) return;  
7.     var e = "abbr, article, aside, audio, canvas, datalist, details, dialog, eventsource, figure, footer, header, hgroup, mark, menu, meter, nav, output, progress, section, time, video".split(&#39;, &#39;);  
8.     var i= e.length;  
9.     while (i--){  
10.         document.createElement(e[i])  
11.     }   
12.})()   
13.</script>  
14.<![endif]-->

但是不管使用以上哪種方法,都要初始化新標籤的CSS.因為HTML5在預設情況下表現為內聯元素,對這些元素進行佈局我們需要利用CSS手動把它們轉換成塊狀元素方便佈局


XML/HTML Code複製內容到剪貼簿

1./*html5*/  
2.article,aside, dialog,footer,header,section,footer,nav,figure,menu{display:block} 

但是如果ie6/7/8 禁用腳本的使用者,那麼就變成了無樣式的"白板"網頁,我們該怎麼解決呢?

我們可以參考facebook的做法,即引導用戶進入帶有noscript標識的“/?_fb_noscript=1”頁面,用html4 標籤替換html5 標籤,這要比為了保持相容性而寫大量hack 的做法更輕。

XML/HTML Code複製內容到剪貼簿

1.<!--[if lte IE 8]>   2.<noscript> 3.     <style>.html5-wrappers{display:none!important;}</style> 4.     <p class="ie-noscript-warning">您的浏览器禁用了脚本,请<a href="">查看这里</a>来启用脚本!或者<a href="/?noscript=1">继续访问</a>.  5.     </p> 6.</noscript> 7.<![endif]-->

這樣可以引導使用者開啟腳本,或直接跳到HTML4標籤設計的介面。

2.讓老式瀏覽器相容CSS3(不完全相容方案)

 到Internet Explorer 8為止,IE系列是不支援CSS3的。在IE中要做一些常用的效果如圓角、陰影,就需要用一些冗餘而無意義的元素和圖片來做出這些效果。在厭倦這些後,就 想著用更簡潔、直接有效、CSS3式的辦法來解決這些問題。還好就算是飽受批評的Internet Explorer,本身也是夠強大的。 IE特有的技術可以很好的實現一些CSS3的效果。

Opacity透明度

 元素的透明度在IE中可以很方便的濾鏡來實現。

CSS Code複製內容到剪貼簿

1.background-color:green;  2.opacity: .4;  3.filter:progid:DXImageTransform.Microsoft.alpha(opacity=40);

這裡半透明區域
opacity: .4;

 filter:alpha(opacity=40);

border-radius圓角/Box Shadow盒陰影/Text Shadow文字陰影

 在IE中可以利用Vector Markup Language (VML)和javascript來實現這些效果,請參閱IE-CSS3,在引用了一個HTC檔後,在IE瀏覽器就可以使用這三種CSS3屬性了。

CSS Code複製內容到剪貼簿

1.-moz-border-radius: 15px; /* Firefox */ 
2.-webkit-border-radius: 15px; /* Safari 、Chrome */ 
3.border-radius: 15px; /* Opera 10.5+, IE6+ 使用 IE-CSS3*/ 
4.-moz-box-shadow: 5px 5px 5px #000; /* Firefox */ 
5.-webkit-box-shadow: 5px 5px 5px #000; /* Safari、Chrome */ 
6.box-shadow: 5px 5px 50px #000; /* Opera 10.5+,IE6+ 使用 IE-CSS3 */ 
7.behavior: url(ie-css3.htc); /*引用ie-css3.htc */

實際上,在IE中有自己的濾鏡來實現陰影(shadow)和投影(drop-shadow)效果的

shadow會產生連續、漸進的陰影


CSS Code複製內容到剪貼簿

1.filter: progid:DXImageTransform.Microsoft.Shadow(color=&#39;#000000&#39;, Direction=145, Strength=10);

CSS Code複製內容到剪貼簿

#1.filter: progid:DXImageTransform.Microsoft.DropShadow(Color="#6699CC",OffX="5",OffY="5",Positive="1"); 

#濾鏡似乎和現有的htc腳本有衝突,或可以稱之為特性:兩者同時在一個元素上啟用的時候,濾鏡效果會轉移到其子元素上


就相信看了這些案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

相關閱讀:

用Js操作HTTP的Cookie的實作步驟

##Js操作BOM物件模型的詳細介紹

在HTML的網頁版面裡div與span有什麼差別

以上是瀏覽器相容HTML5和CSS3的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn