整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

重学前端基础:浏览器的兼容,CDN资源网站,html5shiv插件

爱生命,远离IE.拒绝IE浏览器,Edge改邪归正也不看。

浏览器兼容:

主流浏览器都兼容 HTML5 的新标签,对于 IE8 及以下版本不认识 HTML5的新元素,可以使用 JavaScript 创建一个没有的元素来解决,例如:

<script>
 document.createElement("header");
</script>

bootstrap模板:

浏览器会进行能力检测:

<!--[if lt IE 9]>
 <script src="https://cdn.jsdelivr.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
 <script src="https://cdn.jsdelivr.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
 <![endif]-->

就是参考shiv 来解决兼容性问题,打开CDN库:https://www.bootcdn.cn/,直接搜索需要的资源就可以了。。。。。。比如:

TML5 现在已经不是 SGML 的子集,主要是关于图像,位置,存储,多任务等功能的增加。

本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;sessionStorage 的数据在浏览器关闭后自动删除;新的技术webworker, websocket, Geolocation.

新增标签

1、<article> 标记定义一篇文章

2、<header> 标记定义一个页面或一个区域的头部

3、<nav> 标记定义导航链接

4、<section> 标记定义一个区域

5、<aside> 标记定义页面内容部分的侧边栏

6、<hgroup> 标记定义文件中一个区块的相关信息

7、<figure> 标记定义一组媒体内容以及它们的标题

8、<figcaption> 标签定义 figure 元素的标题。

9、<footer> 标记定义一个页面或一个区域的底部

10、<dialog> 标记定义一个对话框(会话框)类似微信

11、<video> 标记定义一个视频

12、<audio> 标记定义音频内容

13、<source> 标记定义媒体资源

14、<canvas> 标记定义画布

15、<menu> 右键菜单

16、<meter> 范围条

17、<progress> 进度条

18、<datalist> 为input标记定义一个下拉列表,配合option

表单类型:

1、email 邮箱地址

2、url URL地址

3、date,time,month,week,datetime,datetime-local 日期类型

4、number 数字(max min step)

5、range 范围滑块(max min step)

6、search 搜索输入框

7、tel 电话号码输入框

8、color 颜色拾取器

表单属性

1、placeholder 输入框默认内容

2、required 必填内容(必须加name)

3、pattern 正则验证(必须加name)

4、autofocus 自动聚焦

5、autocomplete 自动完成(autocomplete="on/off")

6、novalidate 不验证此表单(form属性)

7、multiple 多个值上传

移除的元素:

纯表现的元素:basefont,big,center,font, s,strike,tt,u;

对可用性产生负面影响的元素:frame,frameset,noframes;

支持HTML5新标签:

IE8/IE7/IE6支持通过document.createElement方法产生的标签,可以利用这一特性让这些浏览器支持HTML5新标签,浏览器支持新标签后,还需要添加标签默认的样式

当然也可以直接使用成熟的框架、比如html5shiv,地址:https://cdn.bootcss.com/html5shiv/r29/html5.min.js。

用语义化代码更直观,而且更方便SEO优化。但是此HTML5新标签在IE6/IE7/IE8上并不能识别,需要进行JavaScript处理。以下就介绍几种方式。

方式一:Coding JavaScript

<!--[if lt IE 9]>
<script>
   (function() {
     if (! 
     /*@cc_on!@*/
     0) return;
     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(', ');
     var i= e.length;
     while (i--){
         document.createElement(e[i])
     } 
  })() 
</script>
<![endif]-->

如果是IE9以下的IE浏览器将创建HTML5标签, 这样非IE浏览器就会忽视这段代码,也就不会有无谓的http请求了。

方法二:使用Google的html5shiv包(推荐)

<!--[if lt IE 9]>
  <script type="text/javascript" src="http://cdn.bootcss.com/html5shiv/r29/html5.min.js"></script>
<![endif]-->

上面这段代码仅会在IE浏览器下运行,还有一点需要注意,在页面中调用html5.js文件必须添加在页面的head元素内,因为IE浏览器必须在元素解析前知道这个元素,所以这个js文件不能在页面底部调用。

不管使用以上哪种方法,都要初始化新标签的CSS。因为HTML5在默认情况下表现为内联元素,对这些元素进行布局我们需要利用CSS手工把它们转为块状元素方便布局

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

如果IE6/7/8 禁用脚本的用户,那么就变成了无样式的"白板"网页,我们该怎么解决呢?

我们可以参照facebook的做法,即引导用户进入带有noscript标识的 “/?_fb_noscript=1”页面,用 html4 标签替换 html5 标签,这要比为了保持兼容性而写大量 hack 的做法更轻便一些。

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

这样可以引导用户开启脚本,或者直接跳转到HTML4标签设计的界面。