zoukankan      html  css  js  c++  java
  • HTML5 2

    复习:

    HTML5新特性:

    (1)新的语义标签和属性

    (2)表单新特性

           1)新的input type——10个

           email、url、number、tel、search、range、color、date、month、week

           2)新的表单元素——4个

           datalist、progress、meter、output

           3)表单元素的新属性——12个

           autocomplete、autofocus、placeholder、multiple、form

           required、maxlength、minlength、max、min、step、pattern

    (3)视频和音频

    (4)Canvas绘图

    (5)SVG绘图

    (6)地理定位

    (7)拖放API

    (8)WebWorker

    (9)WebStorage

    (10)WebSocket

    今日目标:

    (1)视频和音频 —— 简单必须掌握

    (2)Canvas绘图 —— 重点&难点

    1.面试题:Flash被HTML5取代在哪些方面?

      音频和视频   —— <video>和<audio>

      绘图            —— <canvas>

      动画/游戏     —— <canvas>+定时器

      统计图表      —— <canvas>、<svg>

      客户端数据存储    —— WebStorage

    2.HTML5新特性——视频播放

      HTML5提供了一个新的标签<video>标签,用于播放视频。该标签默认是一个300*150的inline-block。使用方法:

           <video src="x.mp4"></video>

           <video>

                  <source src="x.mp4">

                  <source src="x.ogg">

                  <source src="x.webm">

           </video>

      VIDEO元素/对象的属性:

      (1)src:指定要播放的视频的资源路径

      (2)autoplay:false,是否自动播放

      (3)controls:false,是否显示播放控件,提示:不同浏览器的播放控件外观不同

      (4)currentTime:0,当前播放的时间点(s)

      (5)duration:60,影片总时长(s)

      (6)ended:false,是否播放到结尾

      (7)loop:false,是否循环播放

      (8)muted:false,是否静音

      (9)volume:1,音量设置(0~1),对象属性,不用于标签

      (10)paused:当前是否处于暂停状态

      (11)poster:'',指定视频第一帧播放前的电影海报

      (12)preload:指定视频预加载方案,可取值:

                  auto:默认值,自动预加载视频的宽高、时长、第一帧内容、并缓冲了一定的时长

                  metadata:元数据,只预加载视频的宽高、时长、第一帧内容

                  none:不预加载任何内容

      VIDEO对象的方法:

      play():开始播放

      pause():暂停播放

      VIDEO对象的事件:

      onplay:视频开始播放(可能多种原因引起)

      onpause:视频开始暂停(可能多种原因引起)

      onplaying:

    练习:    

    (1)不使用video默认的播放控件,使用自定义的按钮,控制视频的播放和暂停

          

    (2)不论何种原因,影片一暂停即显示出广告图片;一播放广告图片就隐藏;提示:不能使用poster属性(影片海报只能在第一次播放之前显示一次)

    午间思考:如何将video作为DIV的背景并自动播放?

    3.HTML5新特性——音频播放

      HTML5提供了一个新的标签<audio>标签,用于播放音频。该标签若没有controls属性,则默认display:none;反之则是一个300*30的inline-block。使用方法:

           <audio src="x.mp3"></audio>

           <audio>

                  <source src="x.mp3">

                  <source src="x.ogg">

                  <source src="x.wav">

           </audio>

      AUDIO元素/对象的属性:

      (1)src:指定要播放的视频的资源路径

      (2)autoplay:false,是否自动播放

      (3)controls:false,是否显示播放控件,提示:不同浏览器的播放控件外观不同

      (4)currentTime:0,当前播放的时间点(s)

      (5)duration:60,影片总时长(s)

      (6)ended:false,是否播放到结尾

      (7)loop:false,是否循环播放

      (8)muted:false,是否静音

      (9)volume:1,音量设置(0~1),对象属性,不用于标签

      (10)paused:当前是否处于暂停状态

      (12)preload:指定视频预加载方案,可取值:

                  auto:默认值,自动预加载视频的宽高、时长、第一帧内容、并缓冲了一定的时长

                  metadata:元数据,只预加载视频的宽高、时长、第一帧内容

                  none:不预加载任何内容

      AUDIO对象的方法:

      play():开始播放

      pause():暂停播放

      AUDIO对象的事件:

      onplay:视频开始播放(可能多种原因引起)

      onpause:视频开始暂停(可能多种原因引起)

      onplaying:

                                             

    练习:为网页添加自动播放的背景音乐,用户可选暂停或继续

         

           可以使用定时器修改audio.volume属性实现音量淡入和淡出。

    提示:

    (1)<body bgsound="x.mp3">属性是老IE的专有属性,也可以用于播放背景音乐,但音量、静音、暂停、停止都无法精准的控制。其它浏览器不支持此属性。

    (2)当前iOS中的Safari浏览器默认不支持audio标签!只能使用video标签代替。

    4.Web前端中可用的绘图技术

      在网页中绘图可以使用的功能:

      (1)实时走势图

      (2)统计图表

      (3)随机内容的图片

      (4)在线画图板

      (5)HTML5游戏——2D/3D

      可用的绘图技术:

      (1)Canvas技术 —— 专用于绘制2D图形/图像

      (2)SVG技术 —— 专用于绘制矢量图

      (3)WebGL技术 —— 目前不是HTML5标准技术,功能最强大,3D图形/图像

    5.Canvas绘图技术 —— 最重要&难点

    难点: (1)小学/中学数学知识   (2)单词记忆

      HTML5引入了<canvas>标签用于绘图,默认是一个300*150的inline-block。使用width/height属性指定尺寸,但不能使用CSS样式指定宽和高

      <canvas width="600" height="500" id="c">

           您的浏览器不支持Canvas标签!

      </canvas>

    往“画布”上绘图需要使用其对应的“画笔”对象:

      var ctx = c.getContext('2d');  //绘图上下文——“画笔”

    接下来所有的绘图任务都由画笔实现。

    Content:内容

    Context:上下文

    绘图上下文对象的常用属性——console.log(ctx):

      fillStyle:'#000',填充样式

      strokeStyle:'#000',描边/轮廓样式

      lineWidth:1,描边/轮廓的宽度

      font:'10px sans-serif',绘制文本所用的字号/字体

      textBaseline:'alphabetic',文本对齐的基线

      showdowOffsetX:0,阴影水平偏移量

      showdowOffsetY:0,阴影竖直偏移量

      showdowColor:'rgba(0,0,0,0)',阴影颜色

      showdowBlur:0,阴影模糊半径

    6.使用Canvas绘制矩形

      提示:矩形的定位点在自己左上角

      ctx.fillStyle = '#000'           填充颜色

      ctx.strokeStyle = '#000'     描边颜色

      ctx.fillRect(x,y,w,h)             填充一个矩形

      ctx.strokeRect(x,y,w,h)              描边一个矩形

      ctx.clearRect(x,y,w,h)          清除一个矩形范围内的所有内容

    练习:在600*400的画布上绘图      —— 16:10

    (1)左上角填充一个矩形100*80,默认颜色

    (2)右上角描边一个矩形100*80,默认颜色

    (3)左下角填充一个矩形100*80,红色

    (4)右下角描边一个矩形100*80,青色

    (5)正中央填充+描边一个矩形100*80,注意是什么颜色

    (6)重新创建一个画布,使用定时器,绘制一个可以不断向右移动的矩形

    (7)绘制一个斜向30度角移动的矩形

    课下挑战性任务:绘制一个绕圆形路径移动的矩形

    7.使用Canvas绘制文本

      提示:文字的定位点默认在文本基线的起点(左侧)

      ctx.textBaseline = 'alphabetic'   文本基线,可取为top/bottom/middle/alphabetic

      ctx.fillText(txt, x, y)            填充文本

      ctx.strokeText(txt, x, y)             描边文本

      ctx.measureText(txt).width 测量,根据当前指定的字号和字体计算指定文本的宽度

    练习:绘制文本                    

    (1)在左下角绘制一行文本

    (2)在右下角描边一行文本

    (3)在画布中央绘制一个可以向右移动的文本,向户外LED招牌一样

    课下挑战性任务:绘制可以画布上左右移动的文字

    8.使用Canvas绘制路径

      下次课内容

    9.使用Canvas绘制图像

      下次课内容

    10.为图形文字添加阴影

        ctx.shadowColor = '#666'; //阴影颜色

        ctx.shadowOffsetX = 8;    //阴影偏移量

        ctx.shadowOffsetY = 8;

        ctx.shadowBlur = 10;      //阴影模糊半径

    11.在绘图时使用渐变色

        //创建渐变对象

        var g = ctx.createLinearGradient(50,100, 550,100);

        g.addColorStop(0, '#f00');  //添加颜色点

        g.addColorStop(1, '#0f0');  //添加颜色点

           //使用渐变对象

          ctx.fillStyle = g;

           ctx.strokeStyle = g;

    课后练习:

    (1)使用视频做DIV元素的背景

      提示:Video自动播放、循环播放、静音,绝对定位到目标元素下面,z-index为负值即可

    (2)使用AJAX从服务器端的PHP页面获取如下的JSON数据:

     [

           {"label": "部门1", "value":300},

           {"label": "部门2", "value":500},

           {"label": "部门3", "value":150},

           {"label": "部门4", "value":400},

           {"label": "部门5", "value":550},

           {"label": "部门6", "value":250}

    ]

    根据这些数据,绘制出如下图所示的统计图:

      提示:为简化起见,可以把value值看做每个柱的高度。

    挑战性需求:柱子初次显示时,高度有动画效果。

  • 相关阅读:
    微信公众号非善意访问的限制 php curl 伪造UA
    cross-origin HTTP request
    String.prototype.charCodeAt()
    event.preventDefault(); Please enter your name using lowercase letters only.
    type属性对jq-post在ie、chrome、ff的兼容
    鼠标随动悬浮框实现思路
    ThinkPHP 3.1.2 模板中的基本语法<1>
    ThinkPHP 3.1.2 模板中的基本语法<1>
    ThinkPHP 3.1.2 模板中的变量
    ThinkPHP 3.1.2 模板中的变量
  • 原文地址:https://www.cnblogs.com/Hale-Proh/p/7199823.html
Copyright © 2011-2022 走看看