HTML5 笔记(一) 部分新特性与Canvas

HTML5 笔记(一)

1.HTML5部分新特性
  • HTML5的新特性,HTML5的新增特性主要是针对于以前的不足,增加了一些新的标签,新的表单和新的表单属性等。这些新特性都有兼容性问题,基本上都是ie9+以上版本的浏览器才会支持。
  • 语义化标签 HTML5中新增语义化标签。头部标签<header></header>,导航标签<nav></nav>,内容标签<article></article>,定义文档某个区域<section></section>,侧边栏标签<aside></aside>,尾部标签<footer></footer>。此种语义化标准主要是针对搜索引擎的,这些新标签页面中可以使用多次,在ie9中需要将这些元素转换为块级元素。
  • 视频标签新增的多媒体标签主要包含两个:音频:<audio>;视频:<video>。在不使用插件的情况下,可以原生的支持视频格式文件的播放,支持三种格式的视频,但尽量使用MP4格式的,语法<video src="文件地址" controls="controls"></video>其中有几项属性,自动播放autoplay,在谷歌浏览器需要使用静音播放;向用户显示播放控件controls;设置播放器宽度width;设置播放器高度height;播放完是否继续播放该视频,循环播放loop;规定是否预加载视频,如果有了自动播放就会忽略该属性preload;视频url地址src;等待加载的画面图片poster;静音播放muted
  • 音频标签 支持三种音频格式,建议使用MP3的。语法<audio src="文件地址" controls="controls"></audio>其中同样具备几种属性:自动播放autoplay具备此属性时,音频在准备就绪后会立即播放;向用户显示控件controls;循环播放loop
  • 新增的input属性新增的input类型,type值:Email类型email,URL类型url,日期类型date,时间类型time,月类型month,周类型week,数字类型number,手机号码tel,搜索框search,颜色选择表单color
  • 新增的表单属性 新增的对于表单元素的属性:必填项required;提示文本placeholder存在默认值时将不显示;自动聚焦属性autofocus;多选文件提交multiple;用户在字段开始键入时,基于之前键入的值,显示出字段中填写的选项,也就是历史记录autocomplete。可以使用input::placeholder选择器修改提示框中的字体颜色。
2.Canvas
  • canvas被称为画布,可以用于在html页面中进行图形的绘制,canvas标签仅仅作为图形的容器,无法呈现图形,可以使用脚本来完成图形绘制。canvas可以理解为一个坐标系,绘制图形或附加照片都需要根据坐标来定位绘制。

  • 示例中使用到了一些常用的功能,更多API:HTML 画布 | 菜鸟教程 (runoob.com)

    <!DOCTYPE html>
    <html lang="zh">
    
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
    
    </head>
    
    <body>
      <canvas id="canvas" width="800" height="600" style="border: 1px solid blue;background-color: aqua;">
      </canvas>
      <br>
      <button onclick="drawRect()">点我绘制方形</button>
      <button onclick="drawCir()">点我绘制圆形</button>
      <button onclick="drawLine()">点我绘制线(五角星)</button>
      <button onclick="drawFont()">点我绘制文字</button>
      <button onclick="drawGradient()">点我绘制渐变色</button>
      <button onclick="drawPic()">点我添加图片</button>
      <script>
        // 获取canvas元素
        var c = document.getElementById('canvas');
        // 获取canvas上下文
        var context = c.getContext("2d");
    
        // 清空画布
        function clear(params) {
          c.height = c.height;
        }
    
        // 绘制方形
        function drawRect() {
          clear();
          // 设置绘制图形颜色
          context.fillStyle = "green";
          // 绘制方形,在方形中的四个参数分别为x轴坐标,y轴坐标,宽度,高度
          context.fillRect(200, 100, 300, 400);
          // 设置绘制线颜色
          context.strokeStyle = "red";
          // 设置线宽
          context.lineWidth = 20;
          // 绘制方形边框
          context.strokeRect(200, 100, 300, 400);
          // 清除中心部分内容,将颜色置成透明
          context.clearRect(290, 220, 120, 160);
        }
    
        // 绘制圆形,分为两步,先绘制路径,再进行填充
        function drawCir() {
          clear();
          // 开启路径
          context.beginPath();
          // 创建圆形路径,参数分别为圆心x轴,圆形y轴,圆心半径,起始角度,结束角度,是否是逆时针绘制
          context.arc(400, 300, 200, 0, Math.PI * 2, true);
          // 闭合路径,连接线的起点与终点
          context.closePath();
          // 设置绘制颜色
          context.fillStyle = 'green';
          // 绘制
          context.fill();
    
          context.beginPath();
          context.arc(400, 300, 100, 0, Math.PI * 2, true);
          context.closePath();
          // 设置绘制线颜色
          context.strokeStyle = "red";
          // 设置线宽
          context.lineWidth = 20;
          // 绘制边框
          context.stroke();
        }
    
        // 绘制线(五角星)
        function drawLine() {
          clear();
          // 定位,参数为:x轴坐标,y轴坐标
          context.moveTo(400 - Math.sin(0) * 200, 300 - Math.cos(0) * 200);
          // 移动,参数为:x轴坐标,y轴坐标
          context.lineTo(400 - Math.sin(Math.PI * 0.8) * 200, 300 - Math.cos(Math.PI * 0.8) * 200);
          context.lineTo(400 - Math.sin(Math.PI * 1.6) * 200, 300 - Math.cos(Math.PI * 1.6) * 200);
          context.lineTo(400 - Math.sin(Math.PI * 0.4) * 200, 300 - Math.cos(Math.PI * 0.4) * 200);
          context.lineTo(400 - Math.sin(Math.PI * 1.2) * 200, 300 - Math.cos(Math.PI * 1.2) * 200);
          context.lineTo(400 - Math.sin(Math.PI * 2) * 200, 300 - Math.cos(Math.PI * 2) * 200);
          context.lineTo(400 - Math.sin(Math.PI * 0.8) * 200, 300 - Math.cos(Math.PI * 0.8) * 200);
    
          // 绘制颜色设置
          context.fillStyle = 'yellow';
          // 绘制,图形框住的区域
          context.fill();
          // 设置绘制线颜色
          context.strokeStyle = "red";
          // 设置线宽
          context.lineWidth = 20;
          // 绘制线
          context.stroke();
        }
    
        // 绘制文字
        function drawFont() {
          clear();
          // 设置字体与字号
          context.font = "bold 30px Times New Roman";
          // 设置对齐方式
          context.textAlign = "left";
          // 绘制文字
          context.fillText("Hello World.Fill", 450, 90);
    
          context.font = "italic 50px Arial";
          context.textAlign = "right";
          // 绘制空心文字
          context.strokeText("Hello World.Stroke", 450, 200);
        }
    
        function drawGradient() {
          clear();
          // 线性渐变定义,分别为起始位置x坐标,y坐标,终点位置x坐标,y坐标
          var grdRect = context.createLinearGradient(100, 100, 100, 500);
          // 配置各点位移量渐变颜色
          grdRect.addColorStop(0, "red");
          grdRect.addColorStop(0.17, "orange");
          grdRect.addColorStop(0.33, "yellow");
          grdRect.addColorStop(0.50, "green");
          grdRect.addColorStop(0.67, "cadetblue");
          grdRect.addColorStop(0.83, "blue");
          grdRect.addColorStop(1, "purple");
          // 配置绘制颜色设置为渐变
          context.fillStyle = grdRect;
          // 绘制
          context.fillRect(100, 100, 100, 400);
    
          // 圆渐变定义,分别为起始圆的圆心x坐标,y坐标,半径,终点圆的圆x坐标,y坐标,半径
          var grdRad = context.createRadialGradient(500, 250, 10, 550, 300, 150);
          // 配置各点位移量渐变颜色
          grdRad.addColorStop(0, "red");
          grdRad.addColorStop(0.17, "orange");
          grdRad.addColorStop(0.33, "yellow");
          grdRad.addColorStop(0.50, "green");
          grdRad.addColorStop(0.67, "cadetblue");
          grdRad.addColorStop(0.83, "blue");
          grdRad.addColorStop(1, "purple");
          // 绘制圆形路径
          context.beginPath();
          context.arc(550, 300, 150, 0, Math.PI * 2, true);
          context.arc(500, 250, 10, 0, Math.PI * 2, true);
          context.closePath();
          // 配置绘制颜色设置为渐变
          context.fillStyle = grdRad;
          // 绘制
          context.fill();
        }
    
        // 添加图片
        function drawPic() {
          clear();
          // 定义img对象
          var img = new Image();
          img.src = "https://www.runoob.com/wp-content/uploads/2013/11/img_the_scream.jpg";
          // 绘制图片,参数依次为img对象,照片截取x坐标,截取y坐标,照片截取宽度,高度,照片放置位置,照片放置宽度,高度
          context.drawImage(img,30,30,200,200,100,100,400,400);
        }
      </script>
    </body>
    
    </html>
    

参考文档

HTML5 教程 | 菜鸟教程 (runoob.com)

H5 canvas - 简书 (jianshu.com)

HTML 画布 | 菜鸟教程 (runoob.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值