HTML5简单笔记

本文详细介绍了HTML5的新标签和特性,包括语义标签如<header>, <nav>, <main>, <footer>等,新增的表单元素和输入类型,多媒体标签<audio>和<video>的使用,网络状态改变事件,全屏接口,文件读取接口,拖拽接口,以及Web Storage和Web Socket等。此外,还探讨了不同浏览器的兼容性和多浏览器支持的解决方案。" 96357248,6870083,Android 源码解析:选择解锁方式与图案密码设置,"['Android开发', '源码分析', '安全', '用户界面']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTML5新标签与特性

w3c手册中文官网 : http://w3school.com.cn/

语义标签

注意:在IE9及以上才支持,**但可能解析为行内元素,需转换为块级元素。**IE8及以下可以引入第三方插件html5shiv.js来达到兼容。

  • header:定义文档的页眉 头部
  • nav:定义导航链接的部分
  • main:定义主要内容
  • footer:定义文档或节的页脚 底部
  • article:定义文章。
  • section:定义文档中的节(section、区段)
  • aside:定义其所处内容之外的内容 侧边
<header> 语义 :定义页面的头部  页眉</header>
<nav>  语义 :定义导航栏 </nav> 
<main> 语义:主要内容</main>
<footer> 语义: 定义 页面底部 页脚</footer>
<article> 语义:  定义文章</article>
<section> 语义: 定义区域</section>
<aside> 语义: 定义其所处内容之外的内容 侧边</aside>

新增表单元素

  • datalist 标签定义选项列表。请与 input 元素配合使用该元素(各浏览器略有不同,少用)
<input type="text" value="输入明星" list="star"/><!-- input里面用 list -->
<datalist id="star">   <!-- datalist 里面用 id  来实现和 input 链接 -->  
      <option value="刘德华" label="提示信息(辅助)"></option>
      <option value="刘若英" label="提示信息(辅助)"></option>
      <option value="刘晓庆" label="提示信息(辅助)"></option>
      <option value="郭富城" label="提示信息(辅助)"></option>
      <option value="张学友" label="提示信息(辅助)"></option>
      <option value="郭郭" label="提示信息(辅助)"></option>
</datalist>
  • fieldset 元素可将表单内的相关元素分组,打包 legend 搭配使用
<fieldset>
    <legend>用户登录</legend>  <!-- 标题 -->
    用户名: <input type="text"><br /><br />
    密 码: <input type="password">
</fieldset>

新增的input type属性值:

类型使用示例含义
email<input type="email">输入邮箱格式
tel<input type="tel">输入手机号码格式
url<input type="url">输入url格式
number<input type="number">输入数字格式
search<input type="search">搜索框(体现语义化)
range<input type="range">自由拖动滑块
time<input type="time">小时分钟
date<input type="date">年月日
datetime<input type="datetime">时间
month<input type="month">月年
week<input type="week">星期 年
color<input type="color">拾色器

新增的input属性

属性用法含义
placeholder<input type="text" placeholder="请输入用户名">占位符 当用户输入的时候 里面的文字消失 删除所有文字,自动返回
autofocus<input type="text" autofocus>规定当页面加载时 input 元素应该自动获得焦点
multiple<input type="file" multiple>多文件上传,多邮件
autocomplete<input type="text" autocomplete="off">规定表单是否应该启用自动完成功能 有2个值,一个是on 一个是off on 代表记录已经输入的值 1.autocomplete 首先需要提交按钮
2.这个表单必须有name
required<input type="text" required>必填项 内容不能为空
accesskey<input type="text" accesskey="s">规定激活(使元素获得焦点)元素的快捷键 采用 alt + s的形式
pattern<input type="text" pattern="正则表达式">使用正则表达式
form<input type="text" form="form表单id">指定id表单进行数据提交
accept<input type ="file" accept="image/*">限制上传文件的文件类型(不是新增属性)

新增进度条(较少用,一般div自定义)

  • <progress>进度条
    • 属性:
      • max最大值
      • value当前进度
  • <meter>度量器
    • 属性:
      • high规定较高的值
      • low规定的较低的值
      • max最大值
      • min最小值
      • value当前值

多媒体标签

  • embed:标签定义嵌入的内容
  • audio:播放音频
  • video:播放视频

多媒体 embed(会使用就行)

embed可以用来插入各种多媒体,格式可以是 Midi、Wav、AIFF、AU、MP3等等。url为音频或视频文件及其路径,可以是相对路径或绝对路径。有兼容性问题。
本质是调用本机上已经安装的软件。

多媒体 audio

通过<audio>标签来解决音频播放的问题。
如下图所示
在这里插入图片描述
并且可以通过附加属性可以更友好控制音频的播放,如:

  • autoplay 自动播放
  • controls 是否显不默认播放控件
  • loop 循环播放 如果这个属性不写 默认播放一次 loop 或者 loop = “loop” 表示无限循环

由于版权等原因,不同的浏览器可支持播放的格式是不一样的,如下图供参考
在这里插入图片描述
多浏览器支持的方案,如下
<source> 标签允许您规定可替换的视频/音频文件供浏览器根据它对媒体类型或者编解码器的支持进行选择。

<audio controls>
    <!-- 通过source标签指定多格式音频文件 -->
	<source src="./music/See You Again.mp3">
    <source src="./music/See You Again.wav">
    <source src="./music/See You Again.ogg">
    您的浏览器不支持HTML音频播放功能
</audio>

多媒体 video

通过<vudio>标签来解决音频播放的问题。
在这里插入图片描述
同样,通过附加属性可以更友好的控制视频的播放

  • autoplay 自动播放
  • controls 是否显示默认播放控件
  • loop 循环播放
  • width 设置播放窗口宽度
  • height 设置播放窗口的高度
  • poster当视频还没有完全下载,或者用户还没有点击播放时的封面

由于版权等原因,不同的浏览器可支持播放的格式是不一样的,如下图供参考
在这里插入图片描述
多浏览器支持的方案与audio一样。

网络状态改变事件(了解,与元素无关,与页面window有关)

  • ononline():网络连通的时候触发。
  • onoffline():网络断开时触发。

全屏接口

主要方法和属性(兼容操作(if判断)

描述
requestFullScreen()开启全屏显示
cancelFullScreen()退出全屏显示
fullScreenElement判断是否是全屏状态

注意

  1. 不同浏览器要添加不同的前缀
    • chrome:webkit
    • firefox:moz
    • ie:ms
    • opera:o
document.webkitCancelFullScreen();
  1. 退出全屏和判断是否全屏只能用document来实现。

文件读取接口FileReader

属性和方法描述
readAsText()读取文本文件(即可使用Txt打开的文件),返回文本字符串,默认utf-8
readAsBinaryString()读取任意类型文件,返回二进制字符串,一般用于存储文件
readAsDataURL()读取文件获取一般以data开头的字符串,这段字符串的本质就是DataURL。接收一个参数Blob二进制大对象,没有返回值,但读取完之后会把结果存储在文件读取对象的result中。
abort()中断读取
onabort读取文件中断时触发
onerror读取错误时触发
onload读取成功完成时触发
onloadend读取完成时触发,无论成功还是失败
onloadstart开始读取时触发
onprogress读取文件过程中持续触发

DataURL是一种将文件(一般指图像或能够嵌入到文件的文件格式)嵌入到文档的方案。将资源转换为base64编码的字符串形式,并且将这些内容之间存储在url中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--
即时预览
即时,当用户选择完图片后立即进行预览的处理
预览:通过玩家读取图像的readdAsDataURL()完成
-->
<form action="">
    文件:<input type="file" id="myFile" onchange="getFileContent()"><br>
    <img src="">
    <input type="submit">
</form>
<script>
    function getFileContent() {
        // 创建文件读取对象
        var reader = new FileReader();
        // 读取文件
        var file = document.getElementById("myFile").files;//返回一个数组
        reader.readAsDataURL(file[0]);
        reader.onload= function () {
            // console.log(reader.result);
            document.querySelector("img").src=reader.result;
        };
    }
</script>
</body>
</html>

拖拽接口

想要拖拽元素,就必须为元素添加draggable=“true”,图片和超链接默认就可以拖拽。
浏览器默认阻止ondrop事件,需在ondragover中利用e.preventDefault()阻止此默认行为。
一般利用document来添加拖拽事件,再利用添加节点来添加拖拽元素到目标元素。

方法描述
ondrag应用于拖拽元素,整个拖拽过程都会调用
ondragleave应用于拖拽元素,当鼠标离开拖拽元素时调用
ondragstart应用于拖拽元素,当拖拽开始时调用
ondragend应用于拖拽元素,当拖拽结束时调用
ondragenter应用用目标元素,当拖拽元素进入时调用
ondragleave应用用目标元素,当鼠标离开目标元素时调用
ondragover应用用目标元素,当停留在目标元素上时调用
ondrop应用用目标元素,当在目标元素上松开鼠标时调用

在进行拖放操作时,DataTransfer 对象用来保存,通过拖放动作,拖动到浏览器的数据。它可以保存一项或多项数据、一种或者多种数据类型。通过setData(数据类型,字符串值)设置,数据类型有text/html, text/uri-list。只能在ondrop中取值。

e.dataTransfer.setData("text/html",e.target.id);
e.dataTransfer.getData("text/html");

例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .div1 {
            width: 100px;
            height: 100px;
            border: 1px solid red;
        }
        .div2 {
            width: 100px;
            height: 100px;
            border: 1px solid blue;
        }
        .div3 {
            width: 100px;
            height: 100px;
            border: 1px solid green;
        }
    </style>
</head>
<body>
<div class="div1" id="div1">
    <p id="pe" draggable="true">拖拽过去</p>
    <p id="pe2" draggable="true">也拖拽过去</p>
</div>
<div class="div2" id="div2"></div>
<div class="div3" id="div3"></div>
<script>
    // 应用于被拖拽元素
    document.ondragstart = function (ev) {
        ev.target.style.opacity = 0.5;
        ev.dataTransfer.setData("text/html",ev.target.id);
    };
    document.ondragend = function (ev) {
        ev.target.style.opacity = 1;
    };
    document.ondrag = function (ev) {

    };
    document.ondragleave = function (ev) {

    };
    // 应用于目标元素
    document.ondragover = function (ev) {
        ev.preventDefault();
    };
    document.ondragenter = function (ev) {

    };
    document.ondrop = function (ev) {
        var obj = ev.dataTransfer.getData("text/html");
        ev.target.appendChild(document.getElementById(obj));
    };
    document.ondragleave = function (ev) {

    };
</script>
</body>
</html>

地理位置接口(少用,大多利用第三方接口)

浏览器是自己选择最优定位方式。

在这里插入图片描述

地理位置属于私密信息,所以浏览器会弹出提示框请求,同意才可获取。
navigator.geolocation首先if判断浏览器是否支持地理定位。它有一个getCurrentPosition()方法来获取当前定位。
getCurrentPosition(successCallback, errorCallback, options) 获取当前地理信息。

  • successCallback获取地理信息成功之后回调,并返回一个包含位置信息的对象position给回调函数。
position.coords.latitude 纬度
position.coords.longitude 经度
position.coords.accuracy 精度
position.coords.altitude 海拔高度
  • errorCallback获取地理信息失败之后回调,并返回错误信息error给回调函数。
error.PERMISSION_DENIED 用户拒绝请求
error.POSITION_UNAVAILABLE 定位信息不可用
error.TIMEOUT 请求超时
error.UNKNOWN_ERROR 未知错误
  • options调整获取当前地理位置方式(少用)
enableHighAccuracy:true/false是否使用高精度
timeout:设置超时时间,单位ms
maximumAge:重新获取时间间隔,单位ms

第三方接口:去打开某一地图,进入其开发平台,获取JavaScript的API。

web存储

  1. sessionStorage存储数据到本地,容量5mb左右,本质存储在当前页面的内存中,声明周期为关闭当前页面,关闭后会自动清除。
  2. localStorage存储大概20mb,不同浏览器不能共享数据,永久生效,存储在硬盘上,不会随页面关闭而清除。
    都含有一下方法(用法一样):
    | 方法 | 描述 |
    | ------------------- | -------------------- |
    | setItem(key, value) | 以键值对方式存储数据 |
    | getItem(key) | 获取数据 |
    | removeItem(key) | 删除数据 |
    | clear() | 清空所有存储内容 |
例:window.localStorage.setItem("name","张三");

应用缓存(了解)

使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本。
优势:
​ 1. 可配置需要缓存的资源
​ 2. 网络无连接应用仍可用
​ 3. 本地读取缓存资源,提升访问速度,增强用户体验
​ 4. 减少请求,缓解服务器负担

Cache Manifest 基础:

  1. 如需启用应用程序缓存,在文档的 <html> 标签中包含 属性manifest:缓存文件名。建议扩展名为.appcache。
    注意:manifest 文件需要配置正确的 MIME-type,即 “text/cache-manifest”。必须在 web 服务器上进行配置。
  2. Manifest 文件编辑
  • CACHE MANIFEST 开始,必须在第一行
  • CACHE: 在此标题下列出的文件将在首次下载后进行缓存
  • NETWORK: 在此标题下列出的文件需要与服务器的连接,且不会被缓存
  • FALLBACK: 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)
CACHE MANIFEST
#需要缓存的文件清单列表
CACHE:
../images/1.jpg
# *代表所有文件
#配置每一次都需要重新从服务器获取的文件清单列表
NETWORK:
../images/3.jpg
#配置如果文件无法获取则使用指定的文件代替
FALLBACK:
../images/4.jpg ../images/2.jpg
# /代表所有文件

说明:更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法

自定义播放器

w3school:http://www.w3school.com.cn/tags/html_ref_audio_video_dom.asp

常用属性/方法描述
play()开始播放音频/视频
pause()暂停当前播放的音频/视频
load()重新加载音频/视频元素
currentTime设置或返回音频/视频中的当前播放位置(以秒计)
duration返回当前音频/视频的长度(以秒计)
paused设置或返回音频/视频是否暂停
事件描述
oncanplay当浏览器可以播放音频/视频时
timeupdate当目前的播放位置已更改时
onended当目前的播放列表已结束时

Web worker

为web内容在后台现场中运行脚本提供一个简单的方法。线程可以执行任务而不干扰用户界面。
为了JavaScript创造多线程环境,允许主线程创建worker线程。
注意

  1. 无法使用document、window、parent这些对象,可以使用navigator对象和location对象。
  2. 线程不能执行alert()方法和confirm()方法,但可以使用AJAX请求。

使用流程

  1. 创建web worker对象,new worker();
  2. onmessage事件监听线程返回来的信息;
  3. postMessage()返回消息给worker;
  4. terminate() 终止web worker;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<p>计数:
    <output id="result"></output>
</p>
<button onclick="startWorker()">开始 Worker</button>
<button onclick="stopWorker()">停止 Worker</button>

<script>
    var w;

    function startWorker() {
        // 判断用户浏览器是否支持web workers
        if (typeof (Worker) !== 'undefined') {
            if (typeof (w) == 'undefined') {
                // 创建web worker对象,demo_workers.js为web worker文件;对象执行的代码。
                w = new Worker('js/demo_workers.js');
            }
            // 监听后台执行代码返回来的信息,即postMessage发过来的信息
            w.onmessage = function (event) {
                // 参数event为message实例,里面包含了data、origin、source等属性,data是发送方发送的message,origin是发送方所属的域,source是发送方的window对象的引用。
                document.getElementById('result').innerHTML = event.data;
            }
        } else {
            document.getElementById('result').innerHTML = 'Sorry, your browser does not support Web Workers...';
        }
    }

    function stopWorker() {
        // 终止web worker
        w.terminate();
    }
</script>
</body>
</html>

websocket

一种在单个TCP连接上进行全双工通讯的协议。允许服务端主动向客户端推送数据。
附:Ajax轮询是指浏览器通过JavaScript启动一个定时器,然后固定的间隔给服务器请求,询问服务器有没有新消息。

websocket使用ws或wss的统一资源标志符,类似于HTTPS,其中wss表示在TLS之上的websocket。

  • 通过new webSocket(url, [protocol]); 向服务器建立websocket连接。
    • url为指定连接的URL。
    • protocol可选,指定可接受的子协议。

websocket属性

  • Socket.readyState
    • 0 连接尚未建立。
    • 1 已连接。
    • 2 正在关闭连接。
    • 3 连接打不开或连接已经关闭。

websocket事件

  • Socket.onopen 连接建立时触发
  • Socket.onmessage 客户端接收服务端数据时触发
  • Socket.onerror 通讯发生错误时触发
  • Socket.onclose 连接关闭时触发

websocket方法

  • Socket.send() 使用连接发送数据
  • Socket.close() 关闭连接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值