image.png
    image.png

    1. 基础API和用法

    **fill: 填充画图案;
    stroke: 描边画图案;

    矩形绘制:**
    image.png

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <script>
    9. function draw(){
    10. var testRect = document.getElementById('testRect');
    11. if (testRect.getContext) {
    12. var ctx = testRect.getContext('2d');
    13. ctx.fillRect(50, 100, 150, 100);
    14. ctx.clearRect(50, 100, 50, 50);
    15. ctx.strokeRect(0, 0, 100, 100);
    16. }
    17. }
    18. </script>
    19. </head>
    20. <body onload="draw()">
    21. <div style="border: 1px solid red;width:200px;height:200px">
    22. <canvas id="testRect" width="200" height="200">
    23. 您的浏览器不支持canvas。
    24. </canvas>
    25. </div>
    26. </body>
    27. </html>

    绘制弧形:

    image.png
    Math.PI: 也就是π,弧度制的180度。

    路径绘制:
    image.png

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <script>
    9. function draw(){
    10. var testRect = document.getElementById('testRect');
    11. if (testRect.getContext) {
    12. var ctx = testRect.getContext('2d');
    13. // 矩形
    14. ctx.fillRect(50, 100, 150, 100);
    15. ctx.clearRect(50, 100, 50, 50);
    16. ctx.strokeRect(0, 0, 100, 100);
    17. //清除画布
    18. ctx.clearRect(0, 0, 200, 200);
    19. // 圆弧, 默认顺时针方向画,逆时针的话设置为true,anticlockwise
    20. ctx.arc(100,100,50, 0, Math.PI, true);
    21. ctx.stroke();
    22. //清空画布
    23. ctx.clearRect(0, 0, 200, 200);
    24. // 直线
    25. ctx.beginPath();
    26. ctx.moveTo(75,50);
    27. ctx.lineTo(150, 50);
    28. ctx.lineTo(150, 175);
    29. ctx.stroke();
    30. //ctx.fill();
    31. }
    32. }
    33. </script>
    34. </head>
    35. <body onload="draw()">
    36. <div style="border: 1px solid red;width:200px;height:200px">
    37. <canvas id="testRect" width="200" height="200">
    38. 您的浏览器不支持canvas。
    39. </canvas>
    40. </div>
    41. </body>
    42. </html>
    1. 样式与颜色
      image.png

    image.png
    image.png
    线性渐变:大致分为两步 这里又会使用到canvas的两个新的函数。

    第一步 : 使用一个新的函数createLinearGradient( xstart,ystart,xend,yend );
    var linearGrad = context.createLinearGradient(xstart,ystart,xend,yend);
    他有四个参数。分别为,xstart,ystart,xend,yend他们构成两个坐标,这两个坐标构成一个线段。这个线段实际上就是一个渐变线。渐变线用于定义渐变的方向和尺度。

    第二步 : 就是在这个渐变线的基础上添加colorStop,这个方法叫addColorStop(stop,color)。他有两个参数分别为stop,color。第一个参数是一个浮点值用来决定关键色的位置。第二个参数是用来决定关键色的颜色。 linearGrad.addColorStop(stop,color);

    示例:

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <script>
    9. function draw(){
    10. var testRect = document.getElementById('testRect');
    11. if (testRect.getContext) {
    12. var ctx = testRect.getContext('2d');
    13. // 矩形
    14. ctx.fillStyle="red";
    15. // 透明度
    16. ctx.globalAlpha = 0.6;
    17. ctx.fillRect(50, 100, 150, 100);
    18. ctx.clearRect(50, 100, 50, 50);
    19. ctx.strokeStyle="green";
    20. ctx.strokeRect(0, 0, 100, 100);
    21. //清除画布
    22. ctx.clearRect(0, 0, 200, 200);
    23. // 圆弧, 默认顺时针方向画,逆时针的话设置为true,anticlockwise
    24. ctx.arc(100,100,50, 0, Math.PI, true);
    25. ctx.stroke();
    26. //清空画布
    27. ctx.clearRect(0, 0, 200, 200);
    28. // 直线
    29. ctx.beginPath();
    30. ctx.moveTo(75,50);
    31. ctx.lineTo(150, 50);
    32. ctx.lineTo(150, 175);
    33. ctx.stroke();
    34. //ctx.fill();
    35. ctx.clearRect(0, 0, 200, 200);
    36. // 渐变效果 - 线性渐变
    37. var lineargradient = ctx.createLinearGradient(0,0,150,150);
    38. // 0 代表起始位置,1 代表结束位置
    39. lineargradient.addColorStop(0,'white');
    40. lineargradient.addColorStop(1,'black');
    41. ctx.fillStyle = lineargradient;
    42. ctx.fillRect(0, 0, 150, 150);
    43. //ctx.clearRect(50, 100, 50, 50);
    44. //ctx.strokeStyle="green";
    45. //ctx.strokeRect(0, 0, 100, 100);
    46. ctx.clearRect(0, 0, 200, 200);
    47. // 创建径向渐变对象 createRadialGradient(x0,y0,r0,x1,y1,r1),其中x0,y0,r0分别为起始圆的位置坐标和半径,x1,y1,r1为终止圆的坐标和半径。
    48. // 渐变效果 - 径向渐变
    49. var radialgradient = ctx.createRadialGradient(100,100,0,100,100,100);
    50. radialgradient.addColorStop(0,'white');
    51. radialgradient.addColorStop(1,'black');
    52. ctx.fillStyle = radialgradient;
    53. ctx.arc(100,100,100,0,2*Math.PI, true);
    54. ctx.fill();
    55. }
    56. }
    57. </script>
    58. </head>
    59. <body onload="draw()">
    60. <div style="border: 1px solid black;width:200px;height:200px">
    61. <canvas id="testRect" width="200" height="200">
    62. 您的浏览器不支持canvas。
    63. </canvas>
    64. </div>
    65. </body>
    66. </html>

    image.png

    1. 曲线和高级路径
      image.png
    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <script>
    9. function draw(){
    10. var testRect = document.getElementById('testRect');
    11. if (testRect.getContext) {
    12. var ctx = testRect.getContext('2d');
    13. // 二次贝塞尔曲线
    14. ctx.beginPath();
    15. ctx.moveTo(0,150);
    16. ctx.quadraticCurveTo(75,0,150,150);
    17. ctx.stroke();
    18. ctx.clearRect(0,0,150,150);
    19. // 三次贝塞尔曲线
    20. ctx.beginPath();
    21. ctx.moveTo(0,100);
    22. ctx.bezierCurveTo(50,50,100,150,150,100);
    23. ctx.stroke();
    24. }
    25. }
    26. </script>
    27. </head>
    28. <body onload="draw()">
    29. <div style="border: 1px solid black;width:150px;height:150px">
    30. <canvas id="testRect" width="150" height="150">
    31. 您的浏览器不支持canvas。
    32. </canvas>
    33. </div>
    34. </body>
    35. </html>

    image.png
    image.png

    1. 状态,变形及动画
      image.png

    image.png
    image.png

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. <script>
    9. function draw(){
    10. var canvas = document.getElementById('testRect');
    11. if (canvas.getContext) {
    12. var context = canvas.getContext('2d');
    13. context.lineWidth = '10';
    14. context.strokeStyle = "red";
    15. context.translate(canvas.width/2, canvas.height/2);
    16. context.rotate(30 / 180 * Math.PI);
    17. context.beginPath();
    18. context.moveTo(0,-180);
    19. context.lineTo(0,-200);
    20. context.stroke();
    21. context.rotate(30 / 180 * Math.PI);
    22. context.beginPath();
    23. context.moveTo(0,-140);
    24. context.lineTo(0,-160);
    25. context.stroke();
    26. context.save();
    27. context.rotate(30 / 180 * Math.PI);
    28. context.beginPath();
    29. context.moveTo(0,-180);
    30. context.lineTo(0,-200);
    31. context.stroke();
    32. context.restore();
    33. context.rotate(30 / 180 * Math.PI);
    34. context.beginPath();
    35. context.moveTo(0,-140);
    36. context.lineTo(0,-160);
    37. context.stroke();
    38. }
    39. }
    40. </script>
    41. </head>
    42. <body onload="draw()">
    43. <div style="border: 1px solid black;width:500px;height:500px">
    44. <canvas id="testRect" width="500" height="500">
    45. 您的浏览器不支持canvas。
    46. </canvas>
    47. </div>
    48. </body>
    49. </html>

    作业:
    【题目1】在localStorage对象里,删除所有数据应该如何操作

    1. localStorage.clear()


    【题目2】H5离线缓存:Manifest 文件中NETWORK 下的页面能离线访问么?为什么?**
    NETWORK下的页面不能离线缓存。

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

    【题目3】H5

    中,使用js哪些方法,控制它的播放与暂停?

    play,pause 方法。