H5学习笔记

什么是HTML:

HTML是HyperText Markup Language的缩写,翻译成中文是超文本标记语言,用于网页的创建。

头部标签

:页面标题 :页面默认地址 :页面外部样式 : </meta></meta></link></base>

H5视频

检测您的浏览器是否支持 HTML5 视频:
<div id="checkVideoResult" style="margin:10px 0 0 0; border:0; padding:0;">
		<button onclick="checkVideo()" style="font-family:Arial, Helvetica, sans-serif;">Check</button>
</div>
		
function checkVideo()
		{
		if(!!document.createElement('video').canPlayType)
		  {
		  var vidTest=document.createElement("video");
		  oggTest=vidTest.canPlayType('video/ogg; codecs="theora, vorbis"');
		  if (!oggTest)
		    {
		    h264Test=vidTest.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"');
		    if (!h264Test)
		      {
		      document.getElementById("checkVideoResult").innerHTML="Sorry. No video support."
		      }
		    else
		      {
		      if (h264Test=="probably")
		        {
		        document.getElementById("checkVideoResult").innerHTML="Yes! Full support!";
		        }
		      else
		        {
		        document.getElementById("checkVideoResult").innerHTML="Well. Some support.";
		        }
		      }
		    }
		  else
		    {
		    if (oggTest=="probably")
		      {
		      document.getElementById("checkVideoResult").innerHTML="Yes! Full support!";
		      }
		    else
		      {
		      document.getElementById("checkVideoResult").innerHTML="Well. Some support.";
		      }
		    }
		  }
		else
		  {
		  document.getElementById("checkVideoResult").innerHTML="Sorry. No video support."
		  }
		}
播放视频
<h1>视频</h1>
	<video id="video2" src="C:\Users\Administrator\Desktop\MyVueDemo\htmldemo\Music\canghaiqingzhou.mp4" width="800" height="440" controls="controls" >
	</video>
/* 获取视频节点 */
		var myVideo2=document.getElementById("video2");
		/* 视频时长发生变法时,触发 */
		myVideo2.ondurationchange=alert("The video duration has changed");
		

在这里插入图片描述

video标签的属性
属性描述
autoplayautoplay如果出现该属性,则视频在就绪后马上播放。
controlscontrols如果出现该属性,则向用户显示控件,比如播放按钮。
heightpixels设置视频播放器的高度。
looploop如果出现该属性,则当媒介文件完成播放后再次开始播放。
preloadpreload如果出现该属性,则视频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。
srcurl要播放的视频的 URL。
widthpixels设置视频播放器的宽度。
HTML5 - 使用 DOM 进行控制
<div style="text-align:center;float: right;">
		  <button onclick="playPause()">播放/暂停</button> 
		  <button onclick="makeBig()">放大</button>
		  <button onclick="makeNormal()">还原</button>
		  <button onclick="makeSmall()">变小</button>
		<!-- 视频事件 -->
		<video id="video1" style="margin-top: 10px;" 
		src="C:/Users/Administrator/Desktop/MyVueDemo/htmldemo/Music/chengshizhiguangmv.mp4" 
		width="800" height="440"  >
			
		</video>
		</div>
/* 获取视频节点 */
		var myVideo=document.getElementById("video1");
		/* 播放暂停 */
		function playPause()
		{ 
		if (myVideo.paused) 
		  myVideo.play(); 
		else 
		  myVideo.pause(); 
		} 
		/* 放大 */
		function makeBig()
		{ 
		myVideo.width=1000; 
		myVideo.height=600;
		} 
		/* 放小 */
		function makeSmall()
		{ 
		myVideo.width=400; 
		myVideo.height=200;
		} 
		//不变
		function makeNormal()
		{ 
		myVideo.width=800; 
		myVideo.height=440;
		} 

在这里插入图片描述

H5音频

audio 标签属性
属性描述
autoplayautoplay如果出现该属性,则音频在就绪后马上播放。
controlscontrols如果出现该属性,则向用户显示控件,比如播放按钮。
looploop如果出现该属性,则每当音频结束时重新开始播放。
mutedmuted规定视频输出应该被静音。
preloadpreload如果出现该属性,则音频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。
srcurl要播放的音频的 URL。
<audio controls="controls">
		  <source src="Music/chengshizhiguang.mp3" type="audio/mpeg">
		</audio>

在这里插入图片描述

H5拖放

支持拖放需要做的一些事情

draggable=“true”:设置到需要拖动的对象上
ondragstart:在拖动的对象上设置一些属性值,
allowDrop:需要放到何处
实例:

 <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
			<img src="img/hm.jpg" style="width: 100px;height: 50px;" draggable="true" 
			ondragstart="drag(event)" id="drag1" />
		</div>
		<div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
		
    /* 拖放 */
		function allowDrop(ev){
		避免浏览器对数据的默认处理
			ev.preventDefault();
		}
		拖放时设置类型和id
		function drag(ev){
		    设置被拖的数据
			ev.dataTransfer.setData('Text',ev.target.id)
		}
		被拖数据时,发生 drop 事件。
		function drop(ev){
		     获得被拖的数据
			var data=ev.dataTransfer.getData("Text");
			把被拖元素追加到放置元素
			ev.target.appendChild(document.getElementById(data));
		}

在这里插入图片描述

H5Web存储

提供了两种在客户端存储数据的新方法:
localStorage - 没有时间限制的数据存储
sessionStorage - 针对一个 session 的数据存储
之前,这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效率也不高。

第一个介绍localStorage : localStorage 支持5M

1、localStorage存储的值均为String 字符串
2、把对象转换成json字符串,就能让存储对象了;把图片转换成DataUrl(base64),就可以存储图片了。音乐也是
3、在浏览器的隐私模式下不可用
4、爬虫无法读取localStorage
5、无法跨域
6、一直有效,客户不主动清空,那么数据一直在

setItem(string key,string data)插入数据入参:
在这里插入图片描述

//判断浏览器是否支持localstorage
			function ompatibility(){
				if(!window.localStorage){
					alert(1);
					document.getElementById("btn1").innerHTML="对不起。不支持localStorage."
				}else{
					alert("0");
					document.getElementById("btn1").innerHTML="开始浪"
				}
				
			}
			<!-- 增删改差 -->
			//获取localStorage对象
			var localStor=window.localStorage;
			//写入数据
			localStor.setItem("key",1);
			//读取数据
			var yanginfo=localStor.getItem("Key");
			alert(yanginfo);
			//更新
			localStor.setItem("key","{'姓名':'明','年龄':'28'}");
			var yanginfo=localStor.getItem("Key");
			alert(yanginfo);
			//删除
			localStor.removeItem("Key");
			localStor.clear();
第二个介绍sessionStorage :

1、只要不关闭页面数据就会存在客户端中
2、关闭页面数据清除

 //更新
function update() {
    window.sessionStorage.setItem(key, value);
}
//获取
function get() {
    window.sessionStorage.getItem(key);
}
//删除
function remove() {
    window.sessionStorage.removeItem(key);
}
//清空所有数据
function clear() {
    window.sessionStorage.clear();
}
 //获取sessionStorage
			  var storage = window.sessionStorage;  
			  //设置session值
			  storage.setItem('name',"明");
			  //获取seeion值
			  alert(storage.getItem('name'));
			  //更新session值
			  storage.setItem('name','雷砸');
			 storage.removeItem('name');

H5应用缓存

1、缓存意味着,可以解决重复加载,可以离线状态也能访问
2、减少服务器负载
3、提交服务响应速度
4、部分浏览器(如IE8-)不支持HTML5离线缓存;
缓存实例:

<!DOCTYPE HTML>
<html manifest="/**/demo.appcache">

<body>
The content of the document......
</body>

</html>

以上包含包含 manifest 属性,则页面会被缓存 manifest 文件需要配置正确的 MIME-type,即
“text/cache-manifest”。必须在 web 服务器上进行配置。
demo.appcache:需要缓存及其他操作的文件

Manifest 文件

manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。
manifest 文件可分为三个部分:
CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存
NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)

1、CACHE MANIFEST

CACHE MANIFEST
/theme.css
/logo.gif
/main.js

CACHE MANIFEST:标识因被缓存文件
当 manifest 文件加载后,浏览器会从网站的根目录下载这三个文件,网络断开后,该文件依然可以离线可用

2、NETWORK:标识因过滤文件
NETWORK:
login.asp
NETWORK:用来标识改文件不被缓存的文件
login.asp:这个文件就不被缓存,所以离线即失效,*:代表所有文件
3、FALLBACK:标识服务建立连接,则用一下文件代替
FALLBACK:
/html5/ /404.html
第一个 URI 是资源,第二个是替补。

完整的 Manifest 文件
CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js

NETWORK:
login.asp

FALLBACK:
/html5/ /404.html

浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。

H5画布SVG

1、什么是SVG?

SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
SVG 用于定义用于网络的基于矢量的图形
SVG 使用 XML 格式定义图形
SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失
SVG 是万维网联盟的标准

2、创建SVG元素

<svg>      </svg>

3、SVG标签

标签作用注释
polygon创建含有不少于三个边的图形列子:points=“100,10 40,180 190,60 10, 60 160,180” 分别代表五个坐标
rect创建矩形
ellipse元素是用来创建一个椭圆
circle创建一个圆
line创建一个直线x1 属性在 x 轴定义线条的开始;y1 属性在 y 轴定义线条的开始;x2 属性在 x 轴定义线条的结束;y2 属性在 y 轴定义线条的结束
polyline折线
path定义一个路径用于路径数据:移动 M = moveto;线到L = lineto;水平线H = horizontal lineto;垂直线V = vertical lineto;曲线到C = curveto;平滑曲线S = smooth curveto;二次贝塞尔曲线Q = quadratic Bézier curve;光滑二次贝塞尔曲线T = smooth quadratic Bézier curveto;椭圆弧A = elliptical Arc ;封闭路径Z = closepath;大写表示绝对定位,小写表示相对定位
text定义文本

style:定义css属性、css中:fill属性定义填充颜色,stroke-width:定义矩形边框的宽度,stroke:定义矩形边框的颜色
x 属性定义矩形的左侧位置;y 属性定义矩形的顶端位置
CSS 的 fill-opacity 属性定义填充颜色透明度(合法的范围是:0 - 1)
CSS 的 stroke-opacity: 属性定义轮廓颜色的透明度
rx 和 ry 属性可使矩形产生圆角。
r属性定义圆的半径
Stroke:定义一条线,文本或元素轮廓颜色
Tstroke- width:定义了一条线,文本或元素轮廓厚度:
stroke-linecap: 定义不同类型的开放路径的终结
stroke-dasharray :创建虚线

SVG图标

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>H5画布SVG</title>
	</head>
	<body>
		<h1> 绘制矢量图标:</h1>
		<svg xmlns="http://www.w3.org/2000/svg333" version="1.1" height="190">
			<!-- 五角星 -->
			<polygon points="100,10 40,180 190,60 10,60 160,180" style="fill:red;stroke:blue;stroke-width:3;fill-rule:evenodd;" />
		</svg>
		<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="20" viewBox="0 0 20 20">
			<!-- 爱心 -->
			<defs>
				<rect id="a" y="54" width="60" height="25" rx="1" />
				<mask id="b" x="0" y="0" width="60" height="25" fill="#fff">
					<use xlink:href="#a" />
				</mask>
			</defs>
			<g transform="translate(-9 -56)" fill="none" fill-rule="evenodd">
				<use stroke="#EDEEEF" mask="url(#b)" stroke-width="2" xlink:href="#a" />
				<path d="M19.05 62.797c-.208-.268-1.776-2.188-3.629-1.725-.662.165-1.439.44-2.009 1.463-2.18 3.913 4.965 8.983 5.615 9.433V72l.023-.016.023.016v-.032c.65-.45 7.795-5.52 5.615-9.433-.57-1.023-1.347-1.298-2.009-1.463-1.853-.463-3.42 1.457-3.629 1.725z"
				 fill="red" />
			</g>
		</svg>
		<svg>
			<!-- 长方形 -->
			<rect width="300" height="100" style="fill:rgb(0,0,255);stroke-width:1;stroke:rgb(0,0,0)" />
		</svg>
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
			<!-- 圆形 -->
			<circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" />
		</svg>

		<!--椭圆 -->
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
			<ellipse cx="240" cy="100" rx="220" ry="30" style="fill:purple" />
			<ellipse cx="220" cy="70" rx="190" ry="20" style="fill:lime" />
			<ellipse cx="210" cy="45" rx="170" ry="15" style="fill:yellow" />
		</svg>
		<br />
		<!-- 直线-->
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
			<line x1="0" y1="0" x2="200" y2="200" style="stroke:rgb(255,0,0);stroke-width:2" />
		</svg>
		<!-- 折线-->
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
			<polyline points="0,40 40,40 40,80 80,80 80,120 120,120 120,160" style="fill:white;stroke:red;stroke-width:4" />
		</svg>
		<br />
		<!-- 路径图-->
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
			<path d="M150 0 L75 200 L225 200 Z" />
		</svg>
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
			<path id="lineAB" d="M 100 350 l 150 -300" stroke="red" stroke-width="3" fill="none" />
			<path id="lineBC" d="M 250 50 l 150 300" stroke="red" stroke-width="3" fill="none" />
			<path d="M 175 200 l 150 0" stroke="green" stroke-width="3" fill="none" />
			<path d="M 100 350 q 150 -300 300 0" stroke="blue" stroke-width="5" fill="none" />
			<!-- Mark relevant points -->
			<g stroke="black" stroke-width="3" fill="black">
				<circle id="pointA" cx="100" cy="350" r="3" />
				<circle id="pointB" cx="250" cy="50" r="3" />
				<circle id="pointC" cx="400" cy="350" r="3" />
			</g>
			<!-- Label the points -->
			<g font-size="30" font="sans-serif" fill="black" stroke="none" text-anchor="middle">
				<text x="100" y="350" dx="-30">A</text>
				<text x="250" y="50" dy="-10">B</text>
				<text x="400" y="350" dx="30">C</text>
			</g>
		</svg>
		<!-- SVG文本-->
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink">
			<a xlink:href="http://www.w3schools.com/svg/" target="_blank">
				<text x="0" y="15" fill="blue">I love SVG</text>
			</a>
		</svg>
		<!-- stroke /stroke-width/stroke-linecap/stroke-dasharray -->
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
			<g fill="none">
				<path stroke="red" d="M5 20 l215 0" />
				<path stroke="blue" d="M5 40 l215 0" />
				<path stroke="black" d="M5 60 l215 0" />
			</g>
		</svg>
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">

			<g fill="none" stroke="black">
				<path stroke-width="2" d="M5 20 l215 0" />
				<path stroke-width="4" d="M5 40 l215 0" />
				<path stroke-width="6" d="M5 60 l215 0" />


			</g>
		</svg>
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">

			<g fill="none" stroke="black" stroke-width="6">
				<path stroke-linecap="butt" d="M5 20 l215 0" />
				<path stroke-linecap="round" d="M5 40 l215 0" />
				<path stroke-linecap="square" d="M5 60 l215 0" />
				<path stroke-dasharray="5,5" d="M5 20 l215 0" />
				<path stroke-dasharray="10,10" d="M5 40 l215 0" />
				<path stroke-dasharray="20,10,5,5,5,10" d="M5 60 l215 0" />
			</g>
		</svg>
		<!-- 组合标签:实现文本图标颜色渐变-->
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
			<defs>
				<linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
					<stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
					<stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
				</linearGradient>
			</defs>
			<ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad1)" />
			<text fill="#ffffff" font-size="45" font-family="Verdana" x="150" y="86">
				SVG</text>
		</svg>
		<!-- 放射性渐变-->
		<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
			<defs>
				<radialGradient id="grad1" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
					<stop offset="0%" style="stop-color:rgb(255,255,255);
		        stop-opacity:0" />
					<stop offset="100%" style="stop-color:rgb(0,0,255);stop-opacity:1" />
				</radialGradient>
			</defs>
			<ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad1)" />
		</svg>
	</body>
</html>

H5画布canvas

什么是 Canvas?

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

属性描述
heightpixels设置 canvas 的高度。
widthpixels设置 canvas 的宽度。
全局属性:

accesskey 规定激活元素的快捷键。
class 规定元素的一个或多个类名(引用样式表中的类)。
contenteditable 规定元素内容是否可编辑。
contextmenu 规定元素的上下文菜单。上下文菜单在用户点击元素时显示。
data-* 用于存储页面或应用程序的私有定制数据。
dir 规定元素中内容的文本方向。
draggable 规定元素是否可拖动。
dropzone 规定在拖动被拖动数据时是否进行复制、移动或链接。
hidden 规定元素仍未或不再相关。
id 规定元素的唯一 id。
lang 规定元素内容的语言。
spellcheck 规定是否对元素进行拼写和语法检查。
style 规定元素的行内 CSS 样式。
tabindex 规定元素的 tab 键次序。
title 规定有关元素的额外信息。
translate 规定是否应该翻译元素内容。

事件属性:

onafterprint script 文档打印之后运行的脚本。
onbeforeprint script 文档打印之前运行的脚本。
onbeforeunload script 文档卸载之前运行的脚本。
onerror script 在错误发生时运行的脚本。
onhaschange script 当文档已改变时运行的脚本。
onload script 页面结束加载之后触发。
onmessage script 在消息被触发时运行的脚本。
onoffline script 当文档离线时运行的脚本。
ononline script 当文档上线时运行的脚本。
onpagehide script 当窗口隐藏时运行的脚本。
onpageshow script 当窗口成为可见时运行的脚本。
onpopstate script 当窗口历史记录改变时运行的脚本。
onredo script 当文档执行撤销(redo)时运行的脚本。
onresize script 当浏览器窗口被调整大小时触发。
onstorage script 在 Web Storage 区域更新后运行的脚本。
onundo script 在文档执行 undo 时运行的脚本。
onunload script 一旦页面已下载时触发(或者浏览器窗口已被关闭)。

颜色、样式和阴影
属性描述
fillStyle设置或返回用于填充绘画的颜色、渐变或模式
strokeStyle设置或返回用于笔触的颜色、渐变或模式
shadowColor设置或返回用于阴影的颜色
shadowBlur设置或返回用于阴影的模糊级别
shadowOffsetX设置或返回阴影距形状的水平距离
shadowOffsetY设置或返回阴影距形状的垂直距离
方法描述
createLinearGradient()创建线性渐变(用在画布内容上)
createPattern()在指定的方向上重复指定的元素
createRadialGradient()创建放射状/环形的渐变(用在画布内容上)
addColorStop()规定渐变对象中的颜色和停止位置
线条样式
属性描述
lineCap设置或返回线条的结束端点样式
lineJoin设置或返回两条线相交时,所创建的拐角类型
lineWidth设置或返回当前的线条宽度
miterLimit设置或返回最大斜接长度
矩形
方法描述
rect()创建矩形
fillRect()绘制“被填充”的矩形
strokeRect()绘制矩形(无填充)
clearRect()在给定的矩形内清除指定的像素
路径
方法描述
fill()填充当前绘图(路径)
stroke()绘制已定义的路径
beginPath()起始一条路径,或重置当前路径
moveTo()把路径移动到画布中的指定点,不创建线条
closePath()创建从当前点回到起始点的路径
lineTo()添加一个新点,然后在画布中创建从该点到最后指定点的线条
clip()从原始画布剪切任意形状和尺寸的区域
quadraticCurveTo()创建二次贝塞尔曲线
bezierCurveTo()创建三次方贝塞尔曲线
arc()创建弧/曲线(用于创建圆形或部分圆)
arcTo()创建两切线之间的弧/曲线
isPointInPath()如果指定的点位于当前路径中,则返回 true,否则返回 false
转换
方法描述
scale()缩放当前绘图至更大或更小
rotate()旋转当前绘图
translate()重新映射画布上的 (0,0) 位置
transform()替换绘图的当前转换矩阵
setTransform()将当前转换重置为单位矩阵。然后运行 transform()
文本
属性描述
font设置或返回文本内容的当前字体属性
textAlign设置或返回文本内容的当前对齐方式
textBaseline设置或返回在绘制文本时使用的当前文本基线
方法描述
fillText()在画布上绘制“被填充的”文本
strokeText()在画布上绘制文本(无填充)
measureText()返回包含指定文本宽度的对象
图像绘制
方法描述
drawImage()向画布上绘制图像、画布或视频
像素操作
属性描述
width返回 ImageData 对象的宽度
height返回 ImageData 对象的高度
data返回一个对象,其包含指定的 ImageData 对象的图像数据
方法描述
createImageData()创建新的、空白的 ImageData 对象
getImageData()返回 ImageData 对象,该对象为画布上指定的矩形复制像素数据
putImageData()把图像数据(从指定的 ImageData 对象)放回画布上
合成
属性描述
globalAlpha设置或返回绘图的当前 alpha 或透明值
globalCompositeOperation设置或返回新图像如何绘制到已有的图像上
画图秀秀
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<!-- 绘制一个红色长方形,添加坐标值-->
		<canvas id="myCanvas" width="200px" height="100px" onmousemove="cnvs_getCoordinates(event)" onmouseout="cnvs_clearCoordinates()"></canvas>
		<!-- 放置xy坐标值 -->
		<div id="cursourxy"></div>
		<!-- 渐变色 -->
		<canvas id="box3" width="200px" height="100px" style="border: 1px solid #666666;"></canvas>
		<!-- 嵌入图片 -->
		<br />
		<canvas id="img"  height="500px" style="width:500px; border:1px solid #666666;"></canvas>
		
		
		
		<script type="text/javascript">
		
		var c=document.getElementById("myCanvas");
		/* getContext("2d") 对象是内建的 HTML5 对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 */
		var cxt=c.getContext("2d");
		/* 第一部分画矩形 */
		/* fillStyle 方法将其染成红色,fillRect 方法规定了形状、位置和尺寸。 */
		cxt.fillStyle="#FF0000";
		cxt.fillRect(0,0,150,75);//绘制“被填充”的矩形
		/* 第二部分:给坐标值 */
		function cnvs_getCoordinates(e)
		{//鼠标指针移动到元素上时触发。
		x=e.clientX;
		y=e.clientY;
		document.getElementById("cursourxy").innerHTML="坐标值: (" + x + "," + y + ")";
		}
		function cnvs_clearCoordinates()
		{//当鼠标指针移出元素时触发。
		document.getElementById("cursourxy").innerHTML="";
		}
		/* 画圆 */
		cxt.fillStyle="#000000";//颜色
		cxt.beginPath();//起始一条路径,或重置当前路径
		cxt.arc(70,18,15,0,Math.PI*2,true);//创建弧/曲线(用于创建圆形或部分圆)
		cxt.closePath();//创建从当前点回到起始点的路径
		cxt.fill();//填充当前绘图(路径)
		/* 渐变色 */
		 var box3=document.getElementById("box3");
		 var cxt2=box3.getContext("2d");
		 var grd=cxt2.createLinearGradient(0,0,200,100);//创建线性渐变(用在画布内容上)
		 grd.addColorStop(0,"#FF0000");//规定渐变对象中的颜色和停止位置
		 grd.addColorStop(1,"#00FF00");
		 cxt2.fillStyle=grd;
		 cxt2.fillRect(0,0,200,100);
/* 放入图片 */
		var img1=document.getElementById("img");
		var cxt4=img1.getContext("2d");
		//创建新的图片对象
		     var imgx = new Image();
		     //指定图片的URL
		     imgx.src = "https://img.tupianzj.com/uploads/allimg/190924/29-1Z924142629.jpg";
			 //imgx.src ="img/lyh.png";
			 imgx.width="500px"
			 imgx.height="500px";
		    //浏览器加载图片完毕后再绘制图片
		    imgx.onload = function(){
		         //以Canvas画布上的坐标(10,10)为起始点,绘制图像
		         cxt4.drawImage(imgx, -100, -300);             
		     };
		
		</script>
	</body>
</html>

在这里插入图片描述

SVG与Canvas 的区别

1、SVG 是一种使用 XML 描述 2D 图形的语言。
SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。
在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。
2、Canvas 通过 JavaScript 来绘制 2D 图形。
Canvas 是逐像素进行渲染的。
在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。
3、依赖分辨率
不支持事件处理器
弱的文本渲染能力
能够以 .png 或 .jpg 格式保存结果图像
最适合图像密集型的游戏,其中的许多对象会被频繁重绘
4、不依赖分辨率
支持事件处理器
最适合带有大型渲染区域的应用程序(比如谷歌地图)
复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)
不适合游戏应用

H5 与各个主流浏览器的兼容性

H5实例

<!DOCTYPE html>
	<html>
	    <head>
			
	      <!-- 字符编码,防止网页乱码   -->
	       <meta charset="UTF-8">
		   <!-- 告诉IE浏览器,IE8/9都会以IE8引擎来渲染页面。它必须显示在网页中除 title 元素和其他 meta 元素以外的所有其他元素之前。如果不是的话,它不起作用 -->
		   <meta http-equiv="X-UA-Compatible" content="ie=edge">
		    <!-- 编写发送浏览器的头部信息 -->
		       <!-- content-type: text/html;charset=utf-8 -->
		   	<meta http-equiv="content-type" content="text/html;charset=utf-8" />  
		   <!-- viewport 进行移动界面自适配,并且禁止用户进行修改适配大小   -->
		   	<meta name="viewport" content="width=device-width,initial-scale=1,minimumscale=1,maximum-scale=1,user-scalable=no"  />
			<!-- SEO   -->
			<!-- keyords 常用于搜索引擎可进行模糊搜索到该网站的关键字 -->
			<meta name="keywords" content="8-12个以英⽂逗号隔开的单词或词语">  
			<!-- description 是网站的相关介绍 -->
			<meta name="description" content="80字以内的⼀段话,与⽹站内容相关">
			<!-- charset:iso-8859-1 -->
			<meta http-equiv="charset" content="iso-8859-1">
			<!-- expires:31 Dec 2008 -->
			<meta http-equiv="expires" content="31 Dec 2008">
			<!-- 强制客户端浏览器为google内核 -->
			<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
			<!-- 设置谷歌内核 -->
			<meta name="renderer" content="webkit">
		    <!-- 标签为页面上的所有链接规定默认地址或默认目标 -->
		    <base href="https://www.baidu.com"/>
		    <!-- 跳转方式 -->
			<base target="_self">
			<!-- 搜索引擎的索引有帮助 客户端接受服务器端返回的几种格式 -->
			<meta name="keywords" content="HTML,ASP,PHP,SQL">
			<!-- 标题 -->
		    <title>HTML5 页面布局</title>
			<!-- 外部样式 -->
		    <link rel="stylesheet" href="./css/index.css">
			<!-- 内部样式 -->
			<style style="text/css">
				  header, section, footer, aside, nav, article, figure, figcaption {
				                display: block;}       
				            body {
				                color: #666666;
				                margin: 0px;}
				            .wrapper {
				                width: 940px;
				                margin: 20px auto 20px auto;
				                border: 2px solid #000000;}
				            header {
				                height: 160px;
				                }
				            h1 {
				                color:#000;
				                width: 940px;
				                height: 130px;
				                margin: 0px;}
				            nav, footer {
				                clear: both;
				                color: #FFFFFF;;
				                
				                height: 30px;}
				            nav ul {
				                margin: 0px;
				                padding: 5px 0px 5px 30px;}
				            nav li {
				                display: inline;
				                margin-right: 40px;}
				            nav li a {
				                color: #FFFFFF;}
				            nav li a:hover, nav li a.current {
				                color: #000000;}
				            section.courses {
				                float: left;
				                width: 659px;
				                border-right: 1px solid #EEEEEE;}
				            article {
				                clear: both;
				                overflow: auto;
				                width: 100%;}
				            hgroup {
				                margin-top: 40px;}
				            figure {
				                float: left;
				                width: 250px;
				                height: 240px;
				                padding: 5px;
				                margin: 20px;
				                border: 1px solid #EEEEEE;}
				            figcaption {
				                font-size: 90%;
				                text-align: left;}
				            aside {
				                width: 230px;
				                float: left;
				                padding: 0px 0px 0px 20px;}
				            aside section a {
				                display: block;
				                padding: 10px;
				                border-bottom: 1px solid #EEEEEE;}
				            aside section a:hover {
								color: #985D6A;
				                }
				            a {
								color: #DE6581;
				                text-decoration: none;}
				            h1, h2, h3 {
				                font-weight: normal;}
				            h2 {
				                margin: 10px 0px 5px 0px;
				                padding: 0px;}
				            h3 {
				                margin: 0px 0px 10px 0px;
				                color: #DE6581;}
				            aside h2 {
				                padding: 30px 0px 10px 0px;
				                color: #DE6581;}
				            footer {
				                font-size: 80%;
				                text-align:center;
								color: black;
				                padding: 7px 0px 0px 20px;}
				
			</style>
			<!-- 页面加载之前需要加载的脚本 -->
			<script type="text/javascript"></script>
	    </head>
	    <body>
			<!-- H5页面布局 -->
			 <div class="wrapper">
			            <header>
			                <h1>网站标题</h1>
							<!-- 标签定义导航链接的部分。 -->
			                <nav>
			                    <ul>
			                        <li><a href="" class="current">首页</a></li>
			                        <li><a href="">产品</a></li>
			                        <li><a href="">服务</a></li>
			                        <li><a href="">关于我们</a></li>
			                        <li><a href="">联系我们</a></li>
			                    </ul>
			                </nav>
			            </header>
						<!-- 标签定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分。 -->
			            <section class="courses">
							<!-- 标签规定独立的自包含内容 -->
			                <article>
								<!-- 规定独立的流内容(图像、图表、照片、代码等等) -->
			                    <figure>
			                        <img src="https://www.0735it.net/images/kc/javase.jpg" alt="Bok Choi" />
			                        <!-- 为 figure 添加标题-->
									<figcaption>Java程序设计</figcaption>
			                    </figure>
								<!-- 标签用于对网页或区段(section)的标题进行组合。 -->
			                    <hgroup>
			                        <h2>Java程序设计</h2>
			                        <h3>面向对象程序设计</h3>
			                    </hgroup>
			                    <p>
  不要必须让生活跌宕波澜,要明白平静无奇才是生活的真。惟有踏踏实实走进生活的人,才能真正品味生活的真谛。</p>
			                </article>    
			                <article>
			                    <figure>
			                        <img src="https://www.0735it.net/images/kc/h5.jpg" alt="Teriyaki sauce" />
			                        <figcaption> 精美短文1</figcaption>
			                    </figure>
			                    <hgroup>
			                        <h2> 精美短文1</h2>
			                        <h3> 精美短文2 +  精美短文3 +  精美短文3</h3>
			                    </hgroup>
			                    <p>乔治、赫伯特说过:“一个人如果20岁不英俊,30岁不强壮,40岁不富有,50岁不睿智,那么他这辈子就别想英俊、强壮、富有和睿智了。”这是西方人眼中的生命的季节。</p>
			                </article>    
			            </section>
						<!-- 标签定义其所处内容之外的内容。 -->
			            <aside>
			                <section class="popular-recipes">
			                    <h2>xxxxxx</h2>
			                    <a href="https://www.liyongzhen.com/js" target="_blank">xxxxxxxxxx</a>
			                    <a href="https://www.liyongzhen.com/jstl" target="_blank">xxxxxxxx</a>
			                    <a href="https://www.liyongzhen.com/ajax" target="_blank">xxxxxxxx</a>
			                    <a href="https://www.liyongzhen.com/sql" target="_blank">xxxxxxx</a>
			                </section>
			                <section class="contact-details">
			                    <h2>联系我们</h2>
			                    <p>长沙市<br />
			                        天罡1号</p>
			                </section>
			            </aside>
						<!-- 标签定义文档或节的页脚。 -->
			            <footer>
			                &copy; 2020 天干物燥
			            </footer>
			        </div><!-- .wrapper -->
			
			 <!-- 页内JS代码快  -->
			<script type="text/javascript">
			    document.write("<h1>Hello World!</h1>")
			</script> 
			<!-- 页面加载之后脚本 -->
			<script type="text/javascript" src="/外部路径" defer="是否规定延迟" async="规定异步执行脚本" charset="规定外部脚本的编码"></script>
	    </body>
	</html>

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知青先生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值