H5新增了哪些新特性

目录

前言

1.语义化标签

2.form表单增强

3.视频和音频

4.Canvas绘图

5.SVG绘图

6.地理位置定位(Geolocation API )

7.拖放API

8.Web Worker

9.Web Storage

10.Web Socket

总结


前言

本期为大家总结面试时常被问到的一个问题,那就是H5新特新有哪些,目前H5的新特性在实际工作中也经常会用到。本章主要总结为主,因此没有深入记录,若想深入了解,还需单独研究哦~


1.语义化标签

HTML5新增的语义化标签主要有:
<article>、<section>、<nav>、<aside>、<header>、<footer>、<time>等等...


2.Form表单增强

  • Input的type新属性:number、data、month、week、time、email、url等;
  • Input标签新增加的特有属性

代码:

<input type="number" name="demoNumber" min="1" max="100" step="2"/>
<input type="email" name="email" placeholder="请输入注册邮箱" />
<input type="url" placeholder="请输入网址" name="url" />
<input type="tel" placeholder="输入电话" name="phone"/>
<input type="range" min="0" max="50" step="5" name="rangedemo" value="0" />
<input type="date" name="datedemo" />
<input type="color"/>
<input type="text" autocomplete="on" name="demoAutoComplete" list="autoNames" />
Input标签新增加的特有属性
<input type="text" autofocus="autofocus"/>
1)autofocus属性 此属性可以设置当前页面中input标签加载完毕后获得焦点。
2)max,min,step这些上面都是跟数字相关。
3)placeholder:提示信息属性,上面有demo。
4)multiple:用于文件上传控件,设置此属性后,允许上传多个文件。

3.视频和音频标签

代码如下:

<!-- 视频标签 -->
<video src="url" controls="controls"></video> //src 视频URL  controls 展示控件,如播放按钮
<!-- 音频标签 -->
<audio src="url" loop="loop" muted="muted"></audio> //src 音频URL  loop 音频结束时重新播放  muted 静音播放

4.Canvas绘图

        HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。画布是一个矩形区域,可以控制其每一像素。canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

案例代码:

<html><canvas id="myCanvas" width="200" height="100"></canvas>
</html>
<script>var c=document.getElementById("myCanvas"); //使用 id 来寻找 canvas 元素var cxt=c.getContext("2d"); //getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。cxt.fillStyle="#FF0000";  //fillStyle 方法将其染成红色。cxt.fillRect(0,0,150,75);  //fillRect 方法规定了形状、位置和尺寸。
</script>

效果: 

 


5.SVG绘图

        SVG(Scalable Vector Graphics)是用来绘制矢量图的HTML5标签。只要定义好XML属性就能够获得与其一致的图像元素。 

        使用SVG之前先将标签加入到HTML body中。就像其他的HTML标签一样,你可以为SVG标签为之添加ID属性。也可以为之添加css样式,例如“border-style:solid;border-width:2px;”。SVG标签跟其它的HTML标签有通用的属性。你可以用height="100px" width="200px" 为其添加高度和宽度。

案例代码:

<svg id="svgLineTutorial" style="border-style:solid;border-width:2px;" height="200px" width="200px" xmlns="http://www.w3.org/2000/svg"><!-- 指定x1,y1,x2,y2值来代表起点终点坐标,在style属性中使用“stroke:Green;”为线条指定颜色。用stroke-width:2为线条设置宽度 --><line x1="10" y1="20" x2="100" y2="200" style="stroke:Green;stroke-width:2"/><!-- 圆的中心cx="55" cy="55",半径r="50",fill="#219E3E"填充颜色,stroke="#17301D" stroke-width="2"线条颜色与宽度 --><circle id="myCircle" cx="55" cy="55" r="50" fill="#219E3E" stroke="#17301D" stroke-width="2" />
</svg>

效果: 


6.地理位置定位(Geolocation API )

        地理位置(Geolocation)是HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用,使得开发人员不用借助其他软件就能轻松实现位置查找,地图应用,导航等功能,具有划时代的意义。

我们使用getCurrentPosition(success(position),error(err),options)方法来获取当前用户的地理位置

    success(position)回调函数是在获取到地理信息时调用的,其中的position参数是一个对象包括:latitude(纬度)longitude(经度)altitude(海拔高度)accuracy(纬度和经度的精度,以米为单位)latitudeAccuracy(海拔高度的精度,以米为单位)heading(设备的前进方向),speed(设备的前进速度以单位m/s)timestamp(获取位置的时间)。error(err)回电函数是在获取地理位置失败时调用的,其中err参数有俩个属性:code和message,code{1:表示用户拒绝了定位服务,2:获取不到位置信息,3:获取信息超时错误},message是字符串,表示错误信息。opations是一些可选属性的列表包括: enableHighAccuracy(是否要求高精度的地理位置信息),值为true或false。timeout(对地理信息获取操作做一个超时限制,如果超时,则返回错误),值为数字,单位为毫秒。maximumAge(对地理位置信息进行缓存的有效时间做一个限制),值为数字,单位为毫秒。

直接上代码......

<script>//判断浏览器是否支持Geolocation APIif ('geolocation' in navigator) {//调用navigator.geolocation.getCurrentPositionnavigator.geolocation.getCurrentPosition(successCB, errorCB,{// 指示浏览器获取高精度的位置,默认为falseenableHighAccuracy: true,// 指定获取地理位置的超时时间,默认不限时,单位为毫秒timeout: 5000,// 最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置。maximumAge: 3000})} else {alert('不支持geolocation')}//成功时的回调函数function successCB(res) {console.log('维度' + res.coords.latitude);   //维度39.8218870257394console.log('经度' + res.coords.longitude);  //经度116.28083042845932} //失败时的回调函数function errorCB(res) {console.log(res)}
</script>

7.拖放API

 HTML5 为拖放行为提供了Drag & Drop API,Drag代表拖动,Drop代表放下。主要事件如下,在使用时绑定相应的事件即可。

//事件类型
/*
//被拖动对象可以出发的事件dragstart:拖动开始事件。(拖拽开始)drag:从dragstart开始到dragend结束前,在拖动时不断出现。(拖拽事件)dragend:拖动结束事件。(拖拽结束)//拖动到的目标对象可以触发的事件dragenter:拖到当前元素区域内的事件。(拖拽进入)dragover:拖到当前元素的区域事件,该事件在拖动到过程中不断的触发。(悬浮事件)dragleave:拖出当前元素区域事件。(拖拽离开)drop:当前元素区域停止拖拽的事件。ps:drop往往发生在dropend事件前(丢弃事件)
*/

注意:当使用丢弃事件(drop)时,需要在dragover中调用e.preventDefault();才能触发drop 。


8.Web Worker

web worker 是运行在后台的 JavaScript,独立于其他脚本,不会影响页面的性能。您可以继续做任何愿意做的事情:点击、选取内容等等,而此时 web worker 在后台运行。

主线程可以用new Worker("worker.js")的方式创建子线程;同时通过worker.onmessage = e => {console.log(e.data)}的方式监听子线程传回的值;子线程有一个全局变量self,相当于window,通过self.postMessage(result)的方式将信息传送到主线程

案例代码:

worker.js文件

//worker.js
var i=0;
function timedCount()
{i=i+1;postMessage(i);setTimeout("timedCount()",500);
}
timedCount();

worker.html文件,在这个文件文件中使用Web Worker 模拟创建一个新的线程 

<html><p>计数: <output id="result"></output></p><button onclick="startWorker()">开始工作</button> <button onclick="stopWorker()">停止工作</button>
</html>
<script>var w;function startWorker() {if(typeof(Worker) !== "undefined") {if(typeof(w) == "undefined") {w = new Worker("./demo_workers.js");}w.onmessage = function(event) {document.getElementById("result").innerHTML = event.data;};} else {document.getElementById("result").innerHTML = "抱歉,你的浏览器不支持 Web Workers...";}}function stopWorker() { w.terminate();w = undefined;}
</script>

 【注意】在测试时如果报错可以查看此文章,或许可以帮到你哦~Uncaught DOMException: Failed to construct ‘Worker‘报错怎么解决!_前端小学弟~的博客-CSDN博客Uncaught DOMException: Failed to construct 'Worker'报错怎么解决!https://blog.csdn.net/weixin_45453514/article/details/120215169


9.Web Storage

Web Storage提供了两种API:sessionStorage(会话存储)和locaStorage(永久存储)

  • 存储大小一般都是5MB
  • 存储位置:都保存在客户端,不与服务器进行交互通信
  • 存储内容类型:locaStorage和sessionStorage都只能存储字符串类型,对于复杂的对象可以使用JSON对象的stringify和parse来处理。
  • sessionStorage当浏览器页面关闭时,数据消失。
  • 和locaStorage数据永久保存在客户端本地,即使页面关闭数据也不会消失,下次打开可以继续使用。

10.Web Socket

WebSocket协议本质上是一个基于TCP的协议,WebSocket使得客户端和服务器之间的数据交换变得更加简单,当获取WebSocket连接之后,可以通过send()方法来向服务器发送数据,通过onmessage事件来接受服务器返回的数据。






总结

本章记录了H5新的一些比较常用的特性,有些内容没有深入记录,累了,累了,后续有时间会单独进行记录,尽情期待呦...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/254845.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

HTML 5 的十大新特性

HTML5 十大新特性总结 一、语义标签 二、增强型表单 三、视频和音频 四、Canvas绘图 五、SVG绘图 六、拖拉API 七、WebWorker 八、WebStorage 九、WebSocket 十、地理定位 一、语义化标签 1.1 什么是语义化标签? 语义化标签既是使标签有自己的含义 1.2 语义化标签…

【靶场实战】Vulnhub - JANGOW: 1.0.1 靶标实战

靶场地址&#xff1a;https://www.vulnhub.com/entry/jangow-101,754/ 靶场IP&#xff1a;192.168.160.215 信息收集 使用Nmap对目标进行扫描 Nmap -sV -O -p- 192.168.160.215 经过漫长的等待扫描完成&#xff0c;该靶标开启了21、80两个端口&#xff0c;21端口运行服务为f…

什么样的打码网站算正规的打码网站

自动打码平台是通过计算机语言对图片图片验证码的一种识别&#xff0c;将图片验证码通过系统自动的识别出来&#xff0c;并且通过一定的途径自动输入需要填写图片验证码的框。这样的平台就成为打码平台平台。实际上就是对于图片验证码的识别破解。答题吧打码平台平台就是利用的…

自动打码神器的准确率你担心么?

现在干什么都需要验证码&#xff0c;比如注册账号、登录账号等一些日常上网操作经常要输入验证码&#xff0c;而很多网站的验证码越来越难看懂。这样对于需要批量操作的人来说真的是折磨啊&#xff0c;但是有了这款验证码自动识别软件之后&#xff0c;大家就可以轻松识别复杂的…

JAVA 实现对图片打码,打马赛克

一. 图片区域类 package com.example.demo.xxx;/*** 图片区域类* author jlm**/ public class ImageArea {int x; //指定区域左上角横坐标int y; //指定区域左上角纵坐标int width; //指定区域宽度int height; //指定区域高度public ImageArea(int x, int y, int width, int h…

基于OpenCV_C++人脸检测打码技术

人脸检测并打码的关键&#xff0c;首先需要定位人脸区域&#xff0c;再修改人脸区域像素灰度值。 一 定义马赛克函数 定义生成马赛克函数 Generate_Mosaic&#xff0c;对图形 Mat& src 做操作&#xff0c;将需要操作的块&#xff08;faces&#xff09;存入数组 vector<…

Python可以解码吗,解码打码是如何实现的

前言 咳咳&#xff0c;进来的铁汁都是抱着学习的心态进来看的吧&#xff0c;咱今天不讲解解码&#xff0c;咱来说说python如何来实现打码功能~ 这一个个进来的 都是标题党吧哈哈哈 有兴趣的可以继续看看哦 最近重温了一档综艺节目 至于叫什么 这里就不细说了 老是看着看着就…

打码软件是真的吗

日前在各大社交网站上热传的“打码软件赚钱”帖子引发不少打码兼职人员的关注。“打码赚钱”到底出自何处&#xff1f;是否有充足的实例&#xff1f; 打码软件是什么&#xff1f; 打码软件是一些验证码识别平台推出来的一种通过任务的发放&#xff0c;让兼职者能够进行…

黑产揭秘:“打码平台”那点事儿

简介 互联网业务的飞速发展&#xff0c;日渐渗透人类的生活&#xff0c;对经济、文化、社会产生巨大的影响&#xff0c;同时互联网业务安全也日趋重要。如同网络通信的基础安全设施防火墙&#xff0c;互联网业务安全也有其基础安全设施&#xff0d;&#xff0d;图片验证码和短…

有没有自动打码的软件

验证码是一把双刃剑&#xff0c;对于有的人是好&#xff0c;但是对于有的人却是让人真心“香菇蓝瘦”。 场景一&#xff1a; A:两个小时就赚了几十块钱&#xff0c;买副眼镜都买不起&#xff0c;赚的钱都去了药店买眼药水了&#xff1b; B&#xff1a;是的啊&#xff0c;要是能…

chatgpt赋能python:Python中的逆序操作

Python 中的逆序操作 在 Python 中&#xff0c;逆序&#xff08;reverse&#xff09;操作指的是将一个序列的元素顺序反转&#xff0c;也即将序列中最后一个元素变成第一个&#xff0c;倒数第二个元素变成第二个&#xff0c;以此类推。逆序有很多实际用途&#xff0c;比如根据…

chatgpt赋能python:Python中的SEO

Python 中的 SEO 搜索引擎优化(SEO)是指通过改进网站的结构和内容&#xff0c;使其在搜索引擎中的排名更高&#xff0c;从而吸引更多的访问者。Python是一种流行的编程语言&#xff0c;其在SEO中也占有重要的地位。 Python 中的关键词密度 搜索引擎通常会关注网页中的关键词…

nginx修改监听端口号8080_解决Nginx启动失败

一、Nginx下载 http://nginx.org/en/download.html 二、Nginx启动失败原因 1、本人下载的是nginx-1.12.1(稳定版)&#xff0c;下载完解压后&#xff0c;进入路径中&#xff0c;start nginx&#xff0c;发现窗口闪过。但是查找不到nginx进程。 2、进入 nginx-1.12.1\logs 路径下…

nginx 启动前端包

项目是前后端分离&#xff1a;前端用vue开发&#xff0c;后端用的是springboot开发&#xff0c;用nginx启动代理&#xff0c;启动前端包 1、安装nginx&#xff08;此步骤就不细说了&#xff0c;如图&#xff09; 2、将前端包放入nginx文件夹下 注&#xff1a;我放在project文…

linux下nginx启动不了,Nginx启动失败的几种错误处理

nginx启动失败 启动nginx失败&#xff0c;报错信息如下: Starting nginx: nginx: [emerg] bind() to 0.0.0.0:**** failed (13: Permission denied) 这通常是因为开启了SELinux的原因&#xff0c;使用命令 getenforce 可以查看SELinux状态&#xff0c;如果输出为 enforcing …

NGINX启动报错,端口被占用

NGINX启动报错&#xff0c;端口被占用解决方案&#xff08;修改端口号&#xff09;   Nginx (engine x) 是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru 站点&#xff08;俄文&#x…

Nginx启动问题解决

妈的。nginx访问不了。。。就是浏览器打开看不到nginx的标准界面。 我的是centos 7.6 解决&#xff1a; 1.前提&#xff1a;root权限 2. 检查防火墙 并centos 7对外开启80端口&#xff1a; 查看状态&#xff1a;systemctl status firewalld 开启防火墙&#xff1a;systemctl…

nginx启动web项目

1、服务器任何路径新建存放项目文件夹 例如&#xff1a;/home/www/xtzl_platform_web 将web项目的压缩包存放到xtzl_platform_web目录下并解压 3、修改nginx配置文件nginx.conf cd /usr/local/nginx/conf ,修改nginx.conf文件 添加新路径 &#xff08;1&#xff09;al…

nginx 启动、停止、关闭

1&#xff0c;nginx 指定配置文件 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -c 参数 指定了要加载的nginx配置文件路径 1,从容停止Nginx&#xff1a; kill -QUIT 主进程号 2,快速停止Nginx&#xff1a; kill -TERM 主进程号 3,强制停止Nginx&am…

nginx 启动报错

systemctl start nginx 启动报错 报错内容如下&#xff1a; Job for nginx.service failed because the control process exited with error code. See “systemctl status nginx.service” and “journalctl -xe” for details. nginx -t 检查没有问题 systemctl status n…