html5 css3常見兼容問題

 
1.讓老式瀏覽器支持HTML5
 
HTML5能爲咱們作的事兒不少,最爲可口的就是語義化標籤的應用,若是你已經在Chrome或者其餘支持HTML5的瀏覽器上用過它的牛x,那這篇文章對你必定有用,由於如今你也能夠在IE上用到HTML5。
 
第一種方法:使用Google的html5shiv包(推薦)
首先你要引用下面是引用Google的html5.js文件,好處就不說了:
  
1 <!--[if IE]>
2 <script src=」http://html5shiv.googlecode.com/svn/trunk/html5.js」></script>
3 < ![endif]-->

 

 

將上代碼複製到head部分,記住必定要是head部分(由於IE必須在元素解析前知道這個元素,因此這個js文件不能在其餘位置調用,不然失效)javascript

主要是讓這些html5標籤成塊狀,像div那樣。好了,簡單吧,一句話歸納就是:引用html5.js  使html5標籤成塊狀css

 

第二種方法:Coding JavaScript
 
複製代碼
 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(', ');
 8      var i= e.length;
 9      while (i--){
10          document.createElement(e[i])
11      } 
12 })() 
13 </script>
14 <![endif]-->
複製代碼

 

 

可是無論使用以上哪一種方法,都要初始化新標籤的CSS.由於HTML5在默認狀況下表現爲內聯元素,對這些元素進行佈局咱們須要利用CSS手工把它們轉爲塊狀元素方便佈局html

 

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

 

可是若是ie6/7/8 禁用腳本的用戶,那麼就變成了無樣式的"白板"網頁,咱們該怎麼解決呢?html5

咱們能夠參照facebook的作法,即引導用戶進入帶有noscript標識的 「/?_fb_noscript=1」頁面,用 html4 標籤替換 html5 標籤,這要比爲了保持兼容性而寫大量 hack 的作法更輕便一些。java

複製代碼
1 <!--[if lte IE 8]> 
2 <noscript>
3      <style>.html5-wrappers{display:none!important;}</style>
4      <div class="ie-noscript-warning">您的瀏覽器禁用了腳本,請<a href="">查看這裏</a>來啓用腳本!或者<a href="/?noscript=1">繼續訪問</a>.
5      </div>
6 </noscript>
7 <![endif]-->
複製代碼


 這樣能夠引導用戶開啓腳本,或者直接跳轉到HTML4標籤設計的界面。css3

 

2.讓老式瀏覽器兼容CSS3(不徹底兼容方案)web

到Internet Explorer 8爲止,IE系列是不支持CSS3的。在IE中要作一些經常使用的效果如圓角、陰影,就須要用一些冗餘而無心義的元素和圖片來作出這些效果。在厭倦這些後,就 想着用更爲簡潔、直接有效、CSS3式的辦法來解決這些問題。好在就算是飽受批評的Internet Explorer,其自己也是足夠強大的。IE特有的技術能夠很好的實現一些CSS3的效果。canvas

 

Opacity透明度

元素的透明度在IE中能夠很方便的用濾鏡來實現。瀏覽器

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

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

filter:alpha(opacity=40);app

 

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

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

複製代碼
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會產生連續、漸變的陰影

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

drop-shadow產生的陰影沒有明暗變化

 

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

 

濾鏡彷佛和現有的htc腳本有衝突,或者能夠稱之爲特性:二者同時在一個元素上啓用的時候,濾鏡效果會轉移到其子元素上

相關文章
相關標籤/搜索