HTML5入门

本文详细介绍了HTML5中新增的元素和属性,如<section>、<mark>、<details>、<progress>、<meter>等,以及表单的新功能,如必填字段、正则匹配、滑动组件等。同时,讲解了Canvas图形绘制、音频和视频元素的使用方法,包括音频的autoplay、loop属性和video元素的poster属性。此外,还探讨了如何利用JavaScript实现雪花粒子特效。

新增元素与属性

  1. 页面一般使用<div>元素作为结构元素,而在HTML5文档中,新增<article>,<section>,<nav>,<aside>,<header>,<footer>,<main>

在这里插入图片描述
在这里插入图片描述

  1. 结构元素仅定义文档结构,不会影响页面外观,使文档更容易被机器阅读,方便网络爬虫的爬取

新增元素

  1. <mark>元素用来高亮显示文本
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	

</head>
<body>
<mark>mark元素用于高亮显示文本</mark>
</body>
</html>

在这里插入图片描述

  1. <details>元素用来显示段落或篇章的细节,通常和<summary>配合使用
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	

</head>
<body>
	<details>
<summary>
	HTML5简介
</summary>
html5是构建Web内容的一种语言描述方式,万维网联盟于2014年发布,被认为是互联网的核心技术之一。其新引进的语法特征能够在移动设备上支持多媒体,能更好的适应移动端设备。新的解析规则增强了灵活性、新属性、淘汰过时的或冗余的属性,真正的改变了用户与文档的交互方式。
	</details>
</body>
</html>

在这里插入图片描述

  1. <progress>元素用来显示进度条
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	

</head>
<body>
<p id="pTip">开始下载</p>
<progress value="0" max="100" id="proDownFile"></progress>
<input type="button"  value="下载" onclick="Btn_Click()" />

<script>
	var intvalue=0;
	var intTimer;
	var objPro=document.getElementById('proDownFile');
	var objTip=document.getElementById('pTip');
	function Interval_handler(){
		intvalue++;
		objPro.value=intvalue;
		if(intvalue >=objPro.max){
			clearInterval(intTimer);
			objTip.innerHTML="下载完成";
		}else{
			objTip.innerHTML="正在下载"+intvalue+"%";
		}
	}
	function Btn_Click(){
		intTimer=setInterval(Interval_handler,100);
	}
	
	
</script>
	
</body>
</html>

在这里插入图片描述

  1. <meter>元素用来显示投票状态
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	

</head>
<body>
<p>共有120人参与投票</p>
<p>张三:
	<meter value="0.1" optimum="0.6" high="0.8" low="0.2" max="1" min="0"></meter>
	<span>10%</span>
</p>
<p>李四:
<meter value="70" optimum="60" high="80" low="20" max="100" min="0"></meter>
	<span>70%</span>
</p>
</body>
</html>

在这里插入图片描述

optimum ,high,low值:

在这里插入图片描述

总结:value和optimum在同一区间:显示绿色;value和optimum相差一区间:显示黄色;value和optimum相差两区间:显示红色

  1. <contenteditable>属性允许直接编辑元素内容
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	

</head>
<script type="text/text/javascript">
	function Btn_click(){
		var strArt=document.getElementById("art_0");
		innterHTML;
		var objArt=document.getElementById("art_1");
		objArt.innerHTML='<b>编辑后:</b>'+strArt;
	}
</script>
<body>
<article contenteditable id="art_0">一段可编辑的文字</article>
<article contenteditable id="art_1"></article>
<input type="button" value="保存" onclick="Btn_click()" />
</body>
</html>

在这里插入图片描述

  1. <dragable>属性用来表示元素是否可以拖动,可以设置dragable=“true”(仅设置元素的dragable属性只能让元素可拖动,但拖动时未携带数据,因此用户看不到实际的拖动效果。为了让拖动操作能携带数据,应为被拖动元素的ondragstart事件指定监听器,使用JS实现元素拖放效果。)

新增表单功能

选项列表

<input type='text' list='mydata'>
<datalist id='mydata'>
	<option label="Mr"  value="Mister">
	<option label="Mrs"  value="Misteress">
	<option label="Ms"  value="Miss">
</datalist>

在这里插入图片描述

必填字段

<input type="text" required />

在这里插入图片描述

正则匹配

<input type="text" pattern="[0-9]{10}" />

在这里插入图片描述
必须是0~9(且长度是10)

类型匹配

<input type="email" />
<input type="url" />

数字字段

<input type="number" min="1" max="10" value="1" />

在这里插入图片描述

滑动组件

<input type="range" min="1" max="10" value="1" />

在这里插入图片描述

日期字段

<input type="date" min="2010-12-16" />

在这里插入图片描述

时间字段

<input type="time" step="1800" />

step也就是1800秒,每次30分钟累加(不指定的话,每次1秒钟)
在这里插入图片描述

拾色器

<input type="color" value="#ed1c24" />

在这里插入图片描述

HTML5图形图像元素

什么是Canvas

  1. Canvas元素实际上定义了一个矩形的画布区域,借助JS和自身APi,可以在该画布区域中绘制任意图形,并可以对其中的每一个像素进行控制

步骤

1.定义Canvas

<canvas id="myCanvas" width="600" height="400"></canvas>

2.调用 getContext方法获得绘图环境

var canvas=document.getElementById("myCanvas");
var context=canvas.getContext("2d");

绘制直线

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
</head>
<body>
<canvas id="myCanvas" width="400" height="200" style="border:1px solid"></canvas>
<script>
	var canvas=document.getElementById("myCanvas");
	var context=canvas.getContext("2d");
	context.strokeStyle="#ff0000";//设置画笔颜色
	context.lineWidth=2;//设置线条宽度
	context.moveTo(50,50);//将画笔移动到画布的起始位置,其中左上角为(0,0)
	context.lineTo(150,150);//选择从起始位置开始,画到(150,150)的位置
	context.stroke();//开始绘制
</script>
</body>
</html>

在这里插入图片描述

绘制矩形

  1. Canvas中矩形的绘制分为两种,一种是不带填充效果的矩形,使用rect方法或strokeRect方法;另一种是带填充效果的,一般是在设置填充颜色后,调用fillRect方法完成矩形的绘制
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
</head>
<body>
<canvas id="myCanvas"  width="400"  height="200"  style="border:1px solid"></canvas>
<script>
	var canvas=document.getElementById("myCanvas");
	var context=canvas.getContext("2d");
	context.rect(30,50,150,100);
	context.stroke();
	//context.strokeRect(30,50,150,100);
	context.beginPath();
	context.fillStyle="#ff0000";
	context.fillRect(200,50,150,100);
</script>
</body>
</html>

在这里插入图片描述

绘制圆形

  1. Canvas中绘制圆或圆弧采用arc方法,该方法有6个参数,例如:arc(100,100,50,0,Math.PI*2,0)

绘制八卦图

绘制八卦图的步骤

  1. 绘制左边和右边的黑色半圆和白色半圆
  2. 绘制上面的白色小圆和下面的黑色小圆
  3. 绘制上面的黑色小圆点和下面的白色小圆点
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
</head>
<body>
<canvas id="myCanvas" width="400" height="400" style="background-color: aliceblue;"></canvas>
<script>
	var canvas=document.getElementById("myCanvas");
	var context=canvas.getContext("2d");
	context.beginPath();
	
	//绘制白色半圆
	context.arc(200,200,80,1.5*Math.PI,Math.PI/2,0);
	context.fillStyle="white";
	context.closePath();
	context.fill();
	
	//绘制黑色半圆
	context.beginPath();
	context.arc(200,200,80,Math.PI*0.5,Math.PI*1.5);
	context.fillStyle="black";
	context.closePath();
	context.fill();

	//绘制黑色小圆
	context.beginPath();
	context.arc(200,240,40,0,2*Math.PI,1);
	context.fillStyle="black";
	context.closePath();
	context.fill();

	//绘制白色小圆
	context.beginPath();
	context.arc(200,160,40,0,2*Math.PI,1);
	context.fillStyle="white";
	context.closePath();
	context.fill();
	
	//绘制白色小圆点
	context.beginPath();
	context.arc(200,240,5,0,2*Math.PI,1);
	context.fillStyle="white";
	context.closePath();
	context.fill();
	
	//绘制黑色小圆点
	context.beginPath();
	context.arc(200,160,5,0,2*Math.PI,1);
	context.fillStyle="black";
	context.closePath();
	context.fill();
</script>
</body>
</html>

在这里插入图片描述

注意(beginpath和closepath):

这里的beginpath和closepath一定记得配套使用,否则问题会很大,后者填充颜色的时候会严重影响到 前者的填充

绘制雪花粒子特效

<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
</head>
<body bgcolor="black">
<canvas id="myCanvas"></canvas>
<script>
	var canvas=document.getElementById("myCanvas");
	var context=canvas.getContext("2d");
	canvas.width=window.innerWidth;
	canvas.height=window.innerHeight;
	
	var particles=[];
	//循环500次,生成500粒雪花
	for(var i=0;i<500;i++)
	{
		particles.push({
			x:Math.random()*window.innerWidth,
			y:Math.random()*window.innerHeight,
			vx:(Math.random()*1-0.5),
			vy:(Math.random()*2+0.5),
			size:1+Math.random()*5,
			color:"#fff"
		});
	}
	
	function timeUpdate(){
		context.clearRect(0,0,window.innerWidth,window.innerHeight);
		var particle;
		for(var i=0;i<500;i++){
			particle=particles[i];
			particle.x+=particle.vx;
			particle.y+=particle.vy;
		
		if(particle.x<0){
			particle.x=window.innerWidth;
		}
		if(particle.x>window.innerWidth){
			particle.x=0;
		}
		if(particle.y>window.innerHeight){
			particle.y=0;
		}
		context.fillStyle=particle.color;
		context.beginPath();
		context.arc(particle.x,particle.y,particle.size,0,Math.PI*2);
		context.closePath();
		context.fill();	}
	}
	
	setInterval(timeUpdate,40);
</script>
</body>
</html>

在这里插入图片描述

注意(雪花只有一片)

如果你的雪花只有一片的话,那么是因为你的如下这个for循环未包含if条件

for(var i=0;i<500;i++){
			particle=particles[i];
			particle.x+=particle.vx;
			particle.y+=particle.vy;
		
		if(particle.x<0){
			particle.x=window.innerWidth;
		}
		if(particle.x>window.innerWidth){
			particle.x=0;
		}
		if(particle.y>window.innerHeight){
			particle.y=0;
		}
		context.fillStyle=particle.color;
		context.beginPath();
		context.arc(particle.x,particle.y,particle.size,0,Math.PI*2);
		context.closePath();
		context.fill();	}

HTML5音频与视频元素

audio元素

语法形式

<audio id="music"  src="music.mp3" controls loop autoplay></audio>
  1. src用来指定音频文件所在的路径;
  2. controls表示显示播放控制栏,这里采用简写形式,实际上可以写成controls="controls";
  3. 属性loop表示循环播放,同样可以写成loop="loop"的形式
  4. 属性autoplay表示自动播放。在移动设备中,音频或视频的自动播放会导致流量剧增,该属性在移动端会被屏蔽,必须通过相应的用户交互事件才能触发
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
</head>
<body >
<audio id="music" src="闲庭絮.mp3" controls="controls" loop autoplay></audio>
</script>
</body>
</html>

在这里插入图片描述

<audio>
	<source src="music.ogg" type="audio/ogg"></source>
	<source src="music.mp3" type="audio/mpeg"></source>
	<source src="music.wav" type="audio/wav"></source>
	你的浏览器不支持音频播放
</audio>

  1. 由于不同手机平台或浏览器支持的文件格式不同,为了更好的兼容性,有时候还需要为同一个音频准备不同的文件格式,常用格式OGG,MP3,WAV等

  2. 创建一个audio对象使用createElement方法,同时使用setAttribute方法为audio对象设置相应的属性

!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
</head>
<body >
	<form>
		<input type="button" value="创建audio对象" onclick="createAudio()" />
		
	</form>
	
	
<script>
	function createAudio(){
		var x=document.createElement("audio");
		x.setAttribute("controls","controls");
		x.setAttribute("src","闲庭絮.mp3");
		document.body.appendChild(x);
		
	}
	
</script>

</body>
</html>

在这里插入图片描述

video元素

  1. HTML5中还新增可video元素,用来在网页中实现视频的播放
<video id="myVideo"  src="video.mp4" width="320" height="240" contrlos autoplay loop>
您的浏览器不支持video元素
</video>
<video id="myVideo"  src="video.mp4" width="320" height="240" contrlos autoplay loop preload="auto" poster="01.jpg">
	<source src="movie.ogg" type="vedio/ogg"></source>
	<source src="movie.mp4" type="vedio/mpeg"></source>
	<source src="movie.webm" type="vedio/wav"></source>
	你的浏览器不支持video元素
</video>
<!DOCTYPE html>
<html>
	<meta charset="utf-8" />
<head>	
</head>
<body >
		<video id="myVedio" src="斗罗大陆 第132话 蓝光(1080p).mp4" width="320" height="240" contrlos autoplay loop preload="auto" poster="01.jpg" ></video>
</body>
</html>

在这里插入图片描述
在这里插入图片描述
的确开始播放斗罗大陆了,但是就是没图。
在这里插入图片描述

  1. 创建一个video对象使用createElement方法,同时使用setAttribute方法为audio对象设置相应的属性

<html>
	<meta charset="utf-8" />
<head>	
</head>
<body >
	<form>
		<input type="button" value="创建Video对象" onclick="createVideo()" />
	</form>
<script>
	function createVideo(){
		var x=document.createElement("video");
		x.setAttribute("width","320");
		x.setAttribute("height","400");
		x.setAttribute("controls","controls");
		x.setAttribute("src","02.mp4");
		document.body.appendChild(x);	
	}
</script>

</body>
</html>

在这里插入图片描述
估计是斗罗大陆是蓝光(1080p)的,所以打不开
在这里插入图片描述
自己用手机录了一段视频,然后可以打开。。好了,就是画质问题。.。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻梦&之璐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值