H5

HTML5基础概述

HTML:超文本标记语言(页面中不仅只有文字,而且可以呈现出图片、音视频等媒体资源)

XHTML:它是HTML比较规范严谨的一代版本

XML:可扩展的标记语言(HTML中使用的标签都是W3C标准中规定的,XML允许我们自己扩展标签的),它的作用不是用来写页面结构的,而是用来存储一些数据的(以自己扩展的标签作为标识,清晰明了的展示出数据的结构...)

HTML5:当前HTML最新的一代版本,也是非常成功的一代版本,目前市场上基本上都是基于H5规范进行开发的(它相对于传统的HTML更多的是增加一些有助于开发的内容,对原有规范的修改调整很少)

XML

<root>
    <student>
        <name>珠峰培训</name>
        <age>9</age>
    </student>

    <student>
        <name>周啸天</name>
        <age>27</age>
    </student>
</root>

XHTML

文档声明比较复杂,需要特殊强调当前的页面需要严谨一些

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
        PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Title</title>
</head>
<body>

</body>
</html>

HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title>Title</title>
</head>
<body>

</body>
</html>

HTML5

<!DOCTYPE html>
<html lang='en'><!--声明页面的语言模式:english,如果页面中出现了英文单词,浏览器会自主发起是否翻译的功能-->
    <head>
        <!--指定当前页面的编码格式是国际统一编码格式:UTF-8  GB2312中国编码...-->
        <meta charset='UTF-8'>
    </head>
    <body>
        
    </body>
</html>

HTML5提供的新语法规范

对原有语义化标签的升级

语义化标签(标签语义化):每一个HTML标签都有自己特殊的含义,我们在搭建页面结构的时候,应该让合理的标签做合适的事情

HTML5中新增加一些语义化标签:

article:文章区域
header:头部区域
footer:尾部区域
main:主体内容区域
section:普通区域,用来做区域划分
figure:配图区域
figcaption:配图说明区域
aside:与主体内容无关的区域(一般用来打广告)
nav:导航区域
...

=>这些语义化标签在兼容它的浏览器中都是块级标签

H5中新增加一些标记标签

mark:用来标记需要高量显示的文本
time:用来标记日期文本
...

H5中对于原有的标签还有一些调整

strong:之前是加粗,现在是重点朗读(效果还是加粗,但是语义不一样了)
small:之前是变小,现在是附属细则(效果还是变小)
hr:之前是一条直线,现在是分割线,用来分隔两个区域
...

H5中删除一些不经常使用的标签:这里的删除不是不让用(用了也不报错),只是按照最新标准没有语义了

font:之前是标记字体修改某些文字样式的,现在呢我们不建议使用了
center:之前是使某些内容居中,但是目前我们都是基于CSS样式控制居中,不在使用这个标签
...

目前不管是在PC端开发还是在移动端开发,我们更应该使用H5规范的语义化标签搭建页面的结构

问题:
IE6~8中不能识别这些新增加的语义化标签,我们无法为其设置具体的样式

解决:
在当前页面的HEAD中(CSS后),我们导入一个JS插件:html5.min.js,它就是用来把页面中所有用到的不兼容的H5语义化标签进行兼容处理

1、把页面中所有不兼容的标签进行替换
2、把CSS中使用标签选择器设置的样式(标签是H5标签)也替换成其它方式
...

标准浏览器中不需要引用,只有IE6~8中才需要(使用条件注释来区分浏览器)

<head>
    
    <!--[if lt IE 9]>
    <script src="js/html5.min.js"></script>
    <![endif]-->
</head>
<!--条件注释中的代码要严格区分大小写以及空格等细节问题-->

H5中对于表单元素的升级

传统表单元素
form
input:text、password(暗纹输入)、button、submit、reset、file、hidden、radio、checkbox...
button
select
label
textarea
...

H5对于表单的升级
1、给input设置了很多新的类型
search
email
tel
number
range
color
date
time
...

[优势]
1)功能强大了
2)使用合适的类型,在移动的开发的时候,用户输入,可以调取出最符合输入内容格式的虚拟键盘,方便用户操作
3)部分类型提供了表单验证(内置验证机制:和我们自己写的正则验证不太一样,但是也可以凑合 [ CSS中可以验证、JS中也可以验证 ])

2、给input新增一个属性:placeholder,给表单框做默认的信息提示

3、二级下拉框(select一级下拉框)

<input type="text" id="department" list="departmentList">
<datalist id="departmentList">
    <option value="市场部">市场部</option>
    <option value="技术部">技术部</option>
    <option value="总裁办">总裁办</option>
</datalist>

H5针对于表单元素升级的部分,在IE低版本(有的IE9和10都不兼容)中不兼容,而且没办法处理兼容,所以我们一般移动端使用这些新特性,PC端还是延续传统的操作办法;

H5中的表单验证(内置规则不是特别好),所以真实项目中的表单验证依然延续传统的正则验证完成

placeholder兼容处理

整个IE浏览器对于placeholder兼容性都不好
1、IE10+虽然兼容,但是文本框获取焦点后,提示信息就消失了
2、IE9-不兼容这个属性

~function () {
    //=>获取页面中所有具备DATA-PLACE自定义属性的INPUT
    var inputList = document.getElementsByTagName('input'),
        inputAry = [];
    for (var i = 0; i < inputList.length; i++) {
        var item = inputList[i];
        item.getAttribute('data-place') !== null ? inputAry.push(item) : null;
    }

    //=>非IE浏览器中,我们只需要把自定义属性值存放在PLACE-HOLDER属性中即可,浏览器可以自己根据这个属性做好提示的工作
    if (!/(MSIE|Trident)/i.test(navigator.userAgent)) {
        for (var k = 0; k < inputAry.length; k++) {
            var itemInp = inputAry[k];
            itemInp.placeholder = itemInp.getAttribute('data-place');
        }
        return;
    }

    //=>IE浏览器(包含IE EDGE):不用内置的PLACE-HOLDER,而是采用我们自己设定的方式来处理
    for (var z = 0; z < inputAry.length; z++) {
        var inputItem = inputAry[z],
            inputText = inputItem.getAttribute('data-place');
        inputItem.placeholder = '';
        /*
         * 1、新创建一个SPAN,把其存放在INPUT它爹末尾(作为INPUT的弟弟)
         * 2、给SPAN设置一定的样式
         *  相对于其父级元素定位
         *  和INPUT的基础样式类似
         * 3、INPUT或者SPAN都要绑定相关的事件行为:完成和内置PLACE-HOLDER相同的效果
         */
        var spanTip = document.createElement('span');
        spanTip.innerHTML = inputText;
        spanTip.className = 'placeLike';
        spanTip.style.cursor = 'text';
        inputItem.parentNode.appendChild(spanTip);

        //=>把每一个INPUT和SPAN的索引进行存储(并且把SPAN-TIP作为属性值存储在INPUT的自定义属性上,方便后期获取使用)
        inputItem.index = spanTip.index = z;
        inputItem.spanTip = spanTip;

        //=>SPAN的点击行为:点击SPAN让INPUT获取对应光标
        spanTip.onclick = function () {
            inputAry[this.index].focus();
        };

        //=>控制INPUT的输入行为(建议使用DOM2事件绑定:防止后期再其它的地方也需要通过KEYUP或者KEYDOWN行为处理其它的事情)
        inputItem.onkeydown = inputItem.onkeyup = function (e) {
            var value = this.value,
                spanTip = this.spanTip;
            spanTip.style.display = value.length > 0 ? 'none' : 'block';
        };
    }
}();

页面结构

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>珠峰培训</title>
    <link rel="stylesheet" href="css/reset.min.css">
    <style>
        .inputBox {
            position: relative;
            margin: 20px;
            width: 200px;
        }

        .inputBox input, .inputBox .placeLike {
            display: block;
            padding: 0 10px;
            width: 178px;
            height: 30px;
            line-height: 30px;
            border: 1px solid green;
        }

        .inputBox .placeLike {
            position: absolute;
            top: 0;
            left: 0;
            z-index: 100;
            color: #AAA;
        }
    </style>
</head>
<body>
<div class="inputBox">
    <input type="text" data-place="请输入用户名">
</div>
<div class="inputBox">
    <input type="password" data-place="请输入密码">
</div>
<div class="inputBox">
    <input type="email" data-place="请输入邮箱">
</div>
<script src="js/placeholder.js"></script>
</body>
</html>

H5中其它新增内容

增加了新的媒体解决方案
音频:audio
视频:video

传统的音视频播放是基于flash来完成的,需要浏览器中安装 adobe flash player 插件

现在只需要基于audio或者video播放即可,但是对于音视频的格式有限制,对于浏览器也有限制

移动端对于flash的支持不好,但是基本上都支持audio和video
PC端的IE浏览器(低版本)不支持audio和video,但是支持flash


H5中增加了canvas(绘图)
它是一个画布,允许我们在JS中通过代码绘制图形以及实现一些好玩的动画

百度统计图插件:Echarts就是基于canvas开发的


提供了很多强大的JS API

API:Application Programming Interface 应用程序接口(凡是提供一个共别人调取使用的都可以称之为接口,例如:使用AJAX从服务器端获取数据,需要一个URL地址,此地址就是一个API,浏览器提供给我们很多常用的方法,每一个方法都可以叫做API)

本地存储

webStorage:
localStorage:本地信息存储
sessionStorage:本地会话存储

在没有H5本地存储之前,我们都使用cookie做的本地存储

获取本机地理位置

通过H5可以获取当前用户地理位置(精度、纬度、精准度...),再结合第三方地图(高德地图、百度地图、腾讯地图...)API接口,实现一些生活服务的推荐等

提供了新的通信方式:websocket

想要实现实时通讯类的产品,基本上现在都是基于socket.io这个框架来完成的

提供操作手机硬件功能的API

调取手机的重力感应器,实现摇一摇,或者实现一些小游戏
调取手机的摄像头或者通讯录

不是所有的手机浏览器都支持这些功能,即时支持这些功能的浏览器,在实现效果上也是不理想的(不稳定、卡顿等)

H5离线缓存:manifest

第一次连网请求完成页面,把信息缓存到本地,下一次即时断网的情况下,也可以看到上一次的信息

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,651评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,468评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,931评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,218评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,234评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,198评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,084评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,926评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,341评论 1 311
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,563评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,731评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,430评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,036评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,676评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,829评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,743评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,629评论 2 354

推荐阅读更多精彩内容

  • 一、HTML5 1.1 认识HTML5 HTML5并不仅仅只是作为HTML标记语言的一个最新版本,更重要的是它制定...
    福尔摩鸡阅读 15,881评论 14 51
  • 第一章 HTML5 (2014年10月29日发布)新特性: 10个 (1)新的语义标签 (2)增强型表单 (3)视...
    fastwe阅读 955评论 0 1
  • 1 DOCTYPE有什么作用?标准模式与混杂模式如何区分?它们有何意义? 告诉浏览器使用哪个版本的HTML规范来渲...
    sanqi37阅读 5,348评论 1 1
  • 我和张春林他们之间就是不同他们,他们写作业就是要比我快,别人写作业的速度至少是我的3倍,我辛辛苦苦写出来,错得十之...
    平安_75a8阅读 21评论 0 0
  • 似水流年 嵩县焦点初级班二期 坚持分享第42天 2019年4月9日 努力不一定功成名就,但是懒散一定会一世平庸。每...
    似水流年ABC阅读 171评论 0 1