HTML5学习(一)

HTML5是什么?

html5最先由WHATWG(Web 超文本应用技术工作组)命名的一种超文本标记语言,随后和W3C的xhtml2.0(标准)相结合,产生现在最新一代的超文本标记语言。可以简单点理解成:HTML 5 ≈ HTML+CSS 3+JS+API。


HTML5新特性

HTML5 中的一些有趣的新特性:
ps:
1.在文档类型声明上,html5比较方便简洁。

html:
<!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">
html5:
<!doctype html>
  • 用于绘画的 canvas 元素
  • 用于媒介回放的 video 和 audio 元素
  • 对本地离线存储的更好的支持
  • 新的特殊内容元素,比如 article、footer、header、nav、section
  • 新的表单控件,比如 calendar、date、time、email、url、search

HTML5的新特性解析

1.video

< video > 标签定义视频,比如电影片段或其他视频流。

当前,video 元素支持三种视频格式:
Ogg = 带有 Theora 视频编码和 Vorbis 音频编码的 Ogg 文件
MPEG4 = 带有 H.264 视频编码和 AAC 音频编码的 MPEG 4 文件
WebM = 带有 VP8 视频编码和 Vorbis 音频编码的 WebM 文件

video标签属性

<!DOCTYPE html> 
<html> 
<body> 

<div style="text-align:center;">
  <button onclick="playPause()">播放/暂停</button> 
  <button onclick="makeBig()"></button>
  <button onclick="makeNormal()"></button>
  <button onclick="makeSmall()"></button>
  <br /> 
  <video id="video1" width="420" style="margin-top:15px;">
    <source src="./html5/mov_bbb.mp4" type="video/mp4"/>
    <source src="./html5/mov_bbb.ogg" type="video/ogg"/>
    Your browser does not support HTML5 video.
  </video>
</div> 

<script type="text/javascript">
var myVideo=document.getElementById("video1");

function playPause(){ 
if (myVideo.paused) //paused为属性
  myVideo.play(); //play()事件
else 
  myVideo.pause(); //pause()事件
} 

function makeBig(){ 
myVideo.width=560; 
} 

function makeSmall(){ 
myVideo.width=320; 
} 

function makeNormal(){ 
myVideo.width=420; 
} 
</script> 
</body> 
</html>

video方法属性和事件


2.audio

audio 元素允许多个 source 元素。source 元素可以链接不同的音频文件。control 属性供添加播放、暂停和音量控件。< audio> 与 < /audio> 之间插入的内容是供不支持 audio 元素的浏览器显示的。

<audio> 标签的属性

自定义控件:
浏览器在显示< video>元素时,会添加一些与浏览器样式统一的标准播放控件。想自定义这些控件的外观或添加新控件,可以通过DOM属性来实现,主要包括:

currentTime:返回当前播放的位置,以秒表示;
duration:返回媒体的总时长,以秒表示,对于流媒体返回无穷大;
paused:表示媒体是否处于暂停状态;
play:在媒体播放开始时发生;
pause:在媒体暂停时发生;
loadeddata:在媒体可以从当前播放位置开始播放时发生;
ended:在媒体已播放完成而停止时发生。

注意:不管创建什么控件,别忘了在< video>元素中添加control属性:

<video src="movie.ogv" control>

给个源码参考《JavaScript DOM编程艺术》:

//movie.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>movie</title>
    <link rel="stylesheet" type="text/css" href="play.css">
</head>
<body>
    <div class="video-wrapper">
        <video id="movie" controls>
        <source src="movie.mp4"/>
        <source src="movie.ogg" type='video/ogg; codecs="theora,vorbis"'/>
        <p>download movie as
        <a href="movie.mp4">mp4</a>,
        or<a href="movie.ogg">ogg</a>
        </p>
        </video>
    </div>
    <script type="player.js"></script>
</body>
</html>

//play.css
.video-wrapper{
    overflow:hidden;
}

.video-wrappper .controls{
    position: absolute;
    height: 30px;
    width: 30px;
    margin: auto;
    background: rgba(0,0,0,0.5);
}

.video-wrapper button{
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
    cursor: pointer;
    font-size: 17px;
    color: #fff;
    background: transparent;
}

.video-wrapper button[paused]{
    font-size: 12px;
}

//player.js
function createVideoControls(){
//首先找到页面的video元素,对其分别应用addControls函数
    var vids=document.getElementByTagName('video');
    for(var i=0;i<vids.length;i++){
        addControls(vids[i]);
    }
}

function addControls(vid){
    //在addControls函数中,删除了video元素原来的Controls属性去掉其内置的空间,添加了几个DOM对象充当play/pause按钮,并把他们添加到video元素的子元素。
    vid.removeAttribute('controls');
    vid.height=vid.videoHeight;
    vid.width=vid.videoWidth;
    vid.parentNode.style.height=vid.videoHeight+'px';
    vid.parentNode.style.width=vid.videoWidth+'px';

    var controls=document.createElement('div');
    controls.setAttribute('class','controls');

    var play=document.createElement('button');
    play.setAttribute('title','play');
    play.innerHTML='&#x25BA;';

    controls.appendChild(play);
    vid.parentNode.insertBefore(controls,vid);
    //play按钮添加一个click事件,以便单击它播放影片:
    play.onclick=function(){
        if(vid.ended){
            vid.currentTime=0;
        }
        if(vid.paused){
            vid.play();
        }else{
            vid.pause();
        }
    };
    //利用play、pause和ended事件来修改play按钮的状态,并在影片未暂停情况下显示pause按钮。
    vids.addEventListener('play',function(){
        //addEventListener
        play.innerHTML='&#x2590;&#x2590;';
        play.setAttribute('paused',true);
    },false);

    vid.addEventListener('pause',function(){
        play.setAttribute('paused');
        play.innerHTML='&#x25BA;';
    },false);

    vid.addEventListener('ended',function(){
        vid.pause();
    },false);
}

window.onload=function(){
    createVideoControls();
}

3.拖放

拖放是一种常见的特性,即抓取对象以后拖到另一个位置。在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放。
1)首先需要设置图像可拖放:
为了使元素可拖动,把 draggable 属性设置为 true。

<img draggable="true" />

2)拖动什么?ondragstart()和setData()
ondragstart属性调用了一个函数,drag(event)它规定了被拖动数据。dataTransfer.setData()发股份设置被拖数据的数据类型和值:

function drag(ev)
{
ev.dataTransfer.setData("Text",ev.target.id);
}

3)放在哪里?ondragover()
默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。这要通过调用 ondragover 事件的 event.preventDefault() 方法.
4)进行放置ondrop
当放置被拖数据时,会发生 drop 事件。


4.canvas

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

1)创建canvas元素
规定元素的id、宽度和高度:

<canvas id="myCanvas" width="200" height="100"></canvas>

2)通过JavaScript来绘制
canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成:

<script type="text/javascript">
var c=document.getElementById("myCanvas");
//通过id来寻找canvas元素;
var cxt=c.getContext("2d");
//创建context对象,getContext("2d")对象是内建的HTML5对象,拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。
cxt.fillStyle="#FF0000";//填充颜色为红色
cxt.fillRect(0,0,150,75);//fillRect方法规定了形状、位置和尺寸。
//在画布上绘制150*75的矩形,从左上角开始(0,0)
</script>

5.HTML5 内联 SVG

html5支持内联svg
SVG 是一种使用 XML 描述 2D 图形的语言。SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。
1)svg是什么

  • svg指的是可伸缩矢量图形(scale vector graphics)
  • svg用于定义用于网络的基于矢量的图形
  • svg使用XML格式定义图形
  • svg是可伸缩的
  • svg图像可在任何的分辨率下被高质量的打印
  • svg可在图像质量不下降的情况下被放大
    2)svg的优点
    与其他图像格式相比(比如 JPEG 和 GIF),使用 SVG 的优势在于:SVG 图像可通过文本编辑器来创建和修改;SVG 图像可被搜索、索引、脚本化或压缩;SVG 是可伸缩的;SVG 图像可在任何的分辨率下被高质量地打印;SVG 可在图像质量不下降的情况下被放大。
svg文件可以通过下列标签嵌入到html文档中:<embed><object>或者<iframe>.

1.使用<embed>标签
<embed src="rect.svg" width="300" height="100" 
type="image/svg+xml"
pluginspage="http://www.adobe.com/svg/viewer/install/" />

2.使用<object>标签
<object data="rect.svg" width="300" height="100" 
type="image/svg+xml"
codebase="http://www.adobe.com/svg/viewer/install/" />

3.使用<iframe>标签
<iframe src="rect.svg" width="300" height="100">
</iframe>

svg主要有svg实现形状、svg滤镜和svg渐变:
详情请看:http://www.w3school.com.cn/svg/svg_grad_linear.asp


总结:Canvas和SVG的比较

首先svg是一种使用XML描述2D图形的语言。由于急于XML,因此svg DOM的每个元素可用。在svg中每个图形均被视为对象。

canvas是通过JavaScript来绘制2D图像。canvas是逐像素进行渲染的,如果一旦被绘制完成就不会继续得到浏览器的关注,如果其位置发生变化,则整个场景需要重新绘制。

比较:

CanvasSVG
依赖分辨率不依赖分辨率
不支持时间处理器支持时间处理器
弱的文本渲染能力适合带有大型渲染区域的应用程序(谷歌地图)
以.png等格式保存结果图像复杂度高会减慢渲染速度
适合图像密集型游戏不适合游戏应用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值