HTML5篇

HTML5 中的一些有趣的新特性

  1. 拖拽释放(Drag and drop) API
  2. 语义化更好的内容标签(header,nav,footer,aside,article,section)
  3. 音频、视频API(audio,video)
  4. 画布(Canvas) API
  5. 地理(Geolocation) API
  6. 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;
  7. sessionStorage 的数据在浏览器关闭后自动删除
  8. 表单控件,calendar、date、time、email、url、search
  9. 新的技术webworker, websocket, Geolocation

移除的元素:

  1. 纯表现的元素:basefont,big,center,font, s,strike,tt,u;
  2. 对可用性产生负面影响的元素:frame,frameset,noframes;

支持HTML5新标签:

  1. IE8/IE7/IE6支持通过 document.createElement 方法产生的标签,可以利用这一特性让这些浏览器支持 HTML5 新标签,浏览器支持新标签后,还需要添加标签默认的样式(当然最好的方式是直接使用成熟的框架、使用最多的是html5shiv框架)
    <script> src=“http://html5shiv.googlecode.com/svn/trunk/html5.js”</script>

如何区分:
DOCTYPE声明新增的结构元素、功能元素

HTML5 视频(Video)音频(audio)

<video src="movie.ogg" width="320" height="240" controls="controls">
Your browser does not support the video tag.
</video>
<audio controls="controls">
  <source src="song.ogg" type="audio/ogg">
  <source src="song.mp3" type="audio/mpeg">
Your browser does not support the audio tag.
</audio>
  1. video 与 video 之间插入的内容是供不支持video元素的浏览器显示的(audio同样)

  2. video 元素允许多个 source 元素。(audio同样)

  3. src url 要播放的视频的 URL。(3-6音频视频属性)

  4. autoplay 如果出现该属性,则视频在就绪后马上播放。

  5. controls 如果出现该属性,则向用户显示控件,比如播放按钮。

  6. loop 如果出现该属性,则当媒介文件完成播放后再次开始播放。
    7.muted muted 规定视频输出应该被静音。(音频属性)

  7. preload 如果出现该属性,则视频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,则忽略该属性。
    9… load() 更改视频来源,并重载视频(8-11音频方法)

  8. play() 方法开始播放当前的音频或视频。

  9. pause() 方法停止(暂停)当前播放的音频或视频,paused已暂停

       var myVideo=document.getElementById("video1");
       function playVid()
         {
         myVideo.play();
         }
       function pauseVid()
         {
         myVideo.pause();
         }
    
  10. canPlayType() 方法浏览器是否能播放指定的音频/视频类型

      myVid=document.createElement('video');
      isSupp=myVid.canPlayType(vidType+';codecs="'+codType+'"');
    

拖放(Drag 和 drop)

<script type="text/javascript">
  function allowDrop(ev)
  {
    ev.preventDefault();
  }

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

  function drop(ev)
  {
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    ev.target.appendChild(document.getElementById(data));
  }
</script>

<div id="div1" ondrop="drop(event)"
ondragover="allowDrop(event)"></div>
<img id="drag1" src="img_logo.gif" draggable="true"
ondragstart="drag(event)" width="336" height="69" />
  1. 设置元素为可拖放

为了使元素可拖动,把 draggable 属性设置为 true

  1. 拖动什么 - ondragstart 和 setData()

ondragstart 属性调用了一个函数,drag(event),它规定了被拖动的数据 dataTransfer.setData() 方法设置被拖数据的数据类型和值。 数据类型是 “Text”,值是可拖动元素的 id (“drag1”)

  1. 放到何处 - ondragover

ondragover 事件规定在何处放置被拖动的数据。默认法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。调用 ondragover 事件的 event.preventDefault() 方法

  1. 进行放置 - ondrop

当放置被拖数据时,会发生 drop 事件。把被拖元素追加到放置元素(目标元素)中

Canvas

canvas 元素使用 JavaScript 在网页上绘制图像。画布是一个矩形区域,您可以控制其每一像素。拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。默认宽300px,高150px
优势:不需要将所绘制图像中的每个图元当做对象存储,执行性能很好。在其他变成语言现有的优秀二维绘图API的基础上实现canvas API相对来说简单

创建 Canvas 元素

<canvas id=“myCanvas” width=“200” height=“100”>不支持HTML5 canvasAPI的某些特性,写在这替代</canvas>

通过 JavaScript 来绘制

  1. canvas 元素本身是没有绘图能力的。所有的绘制工作必须在 JavaScript 内部完成
  2. JavaScript 使用 id 来寻找 canvas 元素
    var c=document.getElementById(“myCanvas”);
  3. 创建 context 对象
    var cxt=c.getContext(“2d”); //是内建的 HTML5 对象
  4. 绘制一个红色的矩形
    cxt.fillStyle="#FF0000"; //方法将其染成红色,
    cxt.fillRect(0,0,150,75); //方法规定了形状、位置和尺寸,在画布上绘制 150x75 的矩形,从左上角开始 (0,0)

路径

在Canvas上画线,我们将使用以下两种方法:
● moveTo(x,y) 定义线条开始坐标
● lineTo(x,y) 定义线条结束坐标

  var c=document.getElementById("myCanvas");//通过ID找到并访问canvas对象
  var ctx=c.getContext("2d");//调用canvas对象的getContext函数获取上下文对象
  cxt.save();//保存尚未修改的cxt,这样即使进行了绘制和变换操作,也可以恢复到初始化状态
  cxt.beginPath();//canvas需要根据此来计算图形的内部和外部范围,以便完成后续的描边和填充
  ctx.moveTo(0,0);//绘制的起点的原点,但是不绘制,只是将当前位置移动到心得目标(x,y),路径移动到画布中的指定点
  ctx.lineTo(70,-70);
  cxt.closePath();//会将路径的起始坐标自动作为目标坐标,通知canvas绘制的图形已经闭合或形成了完全封闭的区域
  ctx.stroke(); //显示在canvas上
  cxt.restore();//恢复原有的绘图状态

描边样式

  1. 加宽线条:cxt.linewidth = 4;
  2. 平滑路径的结合点:cxt.lineJoin = ‘round’;
  3. 将颜色改成棕色:cxt.strokeStyle = ‘#663300’;
  4. 绘制:cxt.stroke();
  5. 线条末端样式:lineCap:butt|square|round;

填充样式

  1. cxt.fillStyle = ‘#339900’; //填充颜色
  2. cxt.fil();先描边填充,填充覆盖一部分描边路径,希望看到完整的描边路径,可在绘制路径(cxt.stroke())之前填充调用(cxt.fill())
  3. fillRect() 画一个有填充色的矩形
  4. strokeRect() 基于给出的位置和坐标画出矩形的轮廓
  5. clearRect() 清除矩形区域内的所有内容并将它恢复到初始状态,透明色

绘制曲线

quadraticCurreTo(控制点,终点);二次贝塞尔曲线

   cxt.moveTo(20,20);
   cxt.quadraticCurreTo(220,100,200,20);

cmd-markdown-logo

canvas中绘制圆形

cxt.arc(中心点,半径,起始角度,结束角度,顺/逆时针);

  arc(100,75,50,0*Math.PI,1.5*Math.PI);

加载图片

var bark = new Image();
bark.src = "XX.jpg";
//加载图片完成之后,将其显示在canvas上
bark.onload = function(){ drawTrails(); }
//用图片背景进行填充
cxt.drawImage(img,剪切的x,y标位置,被剪切图像的宽高度);

使用背景图片替代颜色线条

cxt.strokeStyle = cxt.createPattern(img,图片平铺方式);
cxt.lineWidth = 20;
cxt.stroke();
cxt.scale()

canvas - 变换

  1. 缩放 cxt.scale(x缩放当前绘图的宽度(1=100%,2=200%),y);
  2. 旋转 cxt.rotate(弧度);
  3. 重新映射 context.translate(添加到水平坐标(x)上的值,y);
  4. 允许缩放、旋转、移动并倾斜当前的环境 cxt.transform(水平缩放,水平倾斜,垂直倾斜,垂直缩放,水平移动,垂直移动);

Canvas - 文本

font - 定义字体
fillText(text,x,y) - 在 canvas 上绘制实心的文本
strokeText(text,x,y) - 在 canvas 上绘制空心的文本

  ctx.font="30px Arial";  
  ctx.fillText("Hello World",10,50); //使用 "Arial" 字体在画布上绘制一个高 30px 的文字(实心)
  ctx.strokeText("Hello World",10,50); 使用 "Arial" 字体在画布上绘制一个高 30px 的文字(空心)

Canvas - 渐变

渐变可以填充在矩形, 圆形, 线条, 文本等等,各种形状可以自己定义不同的颜色。使用渐变对象,必须使用两种或两种以上的停止颜色。

  1. 首先,创建渐变对象

  2. 其次,为渐变对象设置颜色指明过度方式

  3. 在cxt上为填充样式或者描边样式设置渐变

    // 创建渐变对象
    var grd=ctx.createLinearGradient(渐变开始点坐标,结束点坐标);//创建一个线性渐变。使用渐变填充矩形
    var grd=ctx.createRadialGradient(渐变开始圆的x,y坐标,开始圆的半径,渐变结束圆的半径,结束圆半径);//创建一个径向/圆渐变。使用渐变填充矩形
    grd.addColorStop(0,“red”);//指定颜色停止,参数使用坐标来描述,可以是0至1.
    grd.addColorStop(1,“white”);

    // 使用渐变,设置fillStyle或strokeStyle的值为 渐变,然后绘制形状,如矩形,文本,或一条线。
    ctx.fillStyle=grd;
    ctx.fillRect(10,10,150,80);

SVG

SVG 指可伸缩矢量图形 (Scalable Vector Graphics)用于定义用于网络的基于矢量的图形,使用 XML 格式定义图形, 图像在放大或改变尺寸的情况下其图形质量不会有损失,是万维网联盟的标准
优势: 图像可通过文本编辑器来创建和修改,图像可被搜索、索引、脚本化或压缩,是可伸缩的,可在任何的分辨率下被高质量地打印,可在图像质量不下降的情况下被放大

直接在HTML嵌入SVG代码

SVG不能直接嵌入到Opera。

  <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矩形

  <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
    <rect x="50" y="20" rx="20" ry="20" width="150" height="150" style="fill:blue;stroke:pink;stroke-width:5;fill-opacity:0.1;stroke-opacity:0.9"/>
  </svg>
  1. fill 属性定义矩形的填充颜色
  2. stroke 属性定义矩形边框的颜色
  3. stroke-width 属性定义矩形边框的宽度
  4. rect 元素的 width 和 height 属性可定义矩形的高度和宽度
  5. x 属性定义矩形的左侧位置(例如,x=“0” 定义矩形到浏览器窗口左侧的距离是 0px)
  6. y 属性定义矩形的顶端位置(例如,y=“0” 定义矩形到浏览器窗口顶端的距离是 0px)
  7. CSS 的 fill-opacity 属性定义填充颜色透明度(合法的范围是:0 - 1)
  8. CSS 的 stroke-opacity 属性定义笔触颜色的透明度(合法的范围是:0 - 1)
  9. rx 和 ry 属性可使矩形产生圆角。
  10. strokelinecap属性定义不同类型的开放路径的终结

SVG 圆形 - <circle>

  <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>

cx和cy属性定义圆点的x和y坐标。如果省略cx和cy,圆的中心会被设置为(0, 0)
r属性定义圆的半径

SVG 椭圆 - <ellipse>

  <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
    <ellipse cx="300" cy="80" rx="100" ry="50"
    style="fill:yellow;stroke:purple;stroke-width:2"/>
  </svg>
  1. CX属性定义的椭圆中心的x坐标
  2. CY属性定义的椭圆中心的y坐标
  3. RX属性定义的水平半径
  4. RY属性定义的垂直半径

SVG 直线 - <line>

  <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>
  1. x1 属性在 x 轴定义线条的开始
  2. y1 属性在 y 轴定义线条的开始
  3. x2 属性在 x 轴定义线条的结束
  4. y2 属性在 y 轴定义线条的结束

SVG 路径 - <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 路径就会自动回到原点

开始于位置150 0,到达位置75 200,然后从那里开始到225 200,最后在150 0关闭路径。

  <svg xmlns="http://www.w3.org/2000/svg" version="1.1">
    <path d="M150 0 L75 200 L225 200 Z" />
  </svg>

SVG 线性渐变 - <linearGradient>

<linearGradient>元素用于定义线性渐变。<linearGradient>标签必须嵌套在<defs>的内部。<defs>标签是definitions的缩写,它可对诸如渐变之类的特殊元素进行定义。

水平线性渐变从黄色到红色的椭圆形

  <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)" />
  </svg>
  1. <linearGradient>标签的id属性可为渐变定义一个唯一的名称
  2. <linearGradient>标签的X1,X2,Y1,Y2属性定义渐变开始和结束位置
  3. 渐变的颜色范围可由两种或多种颜色组成。每种颜色通过一个 标签来规定。offset属性用来定义渐变的开始和结束位置。
  4. 填充属性把 ellipse 元素链接到此渐变

SVG 放射性渐变 - <radialGradient>

<radialGradient>元素用于定义放射性渐变。

定义一个放射性渐变从白色到蓝色椭圆

  <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>
  1. <radialGradient>标签的 id 属性可为渐变定义一个唯一的名称
  2. CX,CY和r属性定义的最外层圆和Fx和Fy定义的最内层圆
  3. 渐变颜色范围可以由两个或两个以上的颜色组成。每种颜色用一个<stop>标签指定。offset属性用来定义渐变色开始和结束
  4. 填充属性把ellipse元素链接到此渐变

SVG 与 Canvas两者间的区别

  1. SVG 是一种使用 XML 描述 2D 图形的语言。Canvas 通过 JavaScript 来绘制 2D 图形。
  2. SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。
  3. 在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。
    Canvas 是逐像素进行渲染的。在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

新的 Input 类型

  • color 选取颜色
  • date 定义一个时间控制器
  • datetime 定义一个日期和时间控制器(本地时间)
  • datetime-local 定义一个日期和时间 (无时区)
  • email 包含 e-mail 地址的输入域
  • month 定义月与年 (无时区)
  • number 定义一个数值输入域(限定)
  • range 定义一个不需要非常精确的数值(类似于滑块控制)
  • search 定义一个搜索字段
  • tel 定义输入电话号码字段
  • time 定义可输入时间控制器(无时区)
  • url 在提交表单时,会自动验证 url 域的值
  • week 定义周和年 (无时区)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值