Web前端-html 5—CANVAS、进度条

进度条

<progress ></progress>
<progress value="0.5"></progress>
<progress min="0" max="100" value="10"></progress>

<hr>
<progress id="tag" min="0" max="100" value="0"></progress><span></span>
<button>点击</button>
<script>
     pg = document.getElementById("tag")
     // setInterval()
     // for()
    document.getElementsByTagName("button")[0].onclick = function () {
       var time=setInterval(function () {
            console.log( pg.value);
            pg.value+=1
            pg.nextElementSibling.innerText = pg.value
            if(pg.value>=100){
                clearInterval(time)
            }
           },100)
    }
</script>

h5新增加的两种获取元素的方式
  一单  一组

<script>
    // document.querySelector("选择器")
    // console.log(document.querySelector("div"));
    // console.log(document.querySelector("#tag"));
    // console.log(document.querySelector(".a"));
    // console.log(document.querySelector("[id]"));
    console.log(document.querySelectorAll(".a"));

</script>

canvas(画布)

默认有自己的大小: 300 * 150
兼容 :当浏览器版本过低的时候则无法解析该版本 会显示中键的文本,若正常解析则不会显示文本

canvas :就是在通过js 操控内容  绘画

canvas:好 就只有一个元素,剩余都是在通过js绘制效果
       不好: canvas 会值的内容效果无法进行dom操作

canvas标签的本质:行内块

canvas 绘制注意 :当canvas 的大小设置的时候我们一般不通过样式设置,属性设置

    * 在js 操控canvas 的时候:
    *    1 获取canvas 对象 (可以作为一个画板)
    *    2 通过canvas 对象或去当前的这个canvas对象的上下文对象 (画笔)
    *    3 该“画笔”对象  在画板上绘制内容
    *
    *  注意:平面效果  2d

<style>
    canvas {
        /*width: 500px;*/
        /*height: 500px;*/
        border: 1px solid #000;
    }
</style>

<!--<canvas >-->
<canvas width="500" height="500">
    您的浏览器版本过低,请更新
</canvas>
a
<script>
    /*
    * 在js 操控canvas 的时候:
    *    1 获取canvas 对象 (可以作为一个画板)
    *    2 通过canvas 对象或去当前的这个canvas对象的上下文对象 (画笔)
    *    3 该“画笔”对象  在画板上绘制内容
    *
    *  注意:平面效果  2d
    * */

    var mycanvas = document.querySelector("canvas")
    var ctx = mycanvas.getContext("2d")

    ctx.fillRect(100,100,50,50)

</script>

canvas绘制线

线的绘制:1要有下笔点 2线走过的轨迹

  var mycanvas = document.querySelector("canvas")
    var ctx = mycanvas.getContext("2d")
    /*
    * 线的绘制:1要有下笔点 2线走过的轨迹
    *
    * */
         ctx.moveTo(0, 0); //x,y 坐标
         ctx.lineTo(500, 500)
     //   此时只是绘制出线的轨迹,:1描绘   2 填充
         ctx.stroke()
             ctx.moveTo(100,100);
             ctx.lineTo(200,200);
             ctx.lineTo(200,100);
             ctx.lineTo(100,100);
    //        描绘
                 ctx.stroke()
     //      填充
                 ctx.fill()

当不给定闭合点的时候,若此时是用的是填充的效果则会自动填满闭合区域内

  var mycanvas = document.querySelector("canvas")
    var ctx = mycanvas.getContext("2d")
 ctx.moveTo(100,100);
     ctx.lineTo(200,200);
     ctx.lineTo(200,100);
     // ctx.fill()
      ctx.stroke()

快速的自动闭合 

 var mycanvas = document.querySelector("canvas")
    var ctx = mycanvas.getContext("2d")
 ctx.moveTo(100,100);
     ctx.lineTo(200,200);
     ctx.lineTo(200,100);
     ctx.closePath(); //闭合路径  下笔的那个点
     ctx.stroke()

设置线的宽度,注意:修改线宽要在使用之前进行

 var mycanvas = document.querySelector("canvas")
    var ctx = mycanvas.getContext("2d")
ctx.lineWidth = "10"   //生效
    ctx.moveTo(100,100);
    ctx.lineTo(200,200);
    ctx.lineTo(200,100);
    ctx.closePath();
    ctx.lineWidth = "10"  //生效
    ctx.stroke();
    ctx.lineWidth = "10"  //不生效

设置多条线  最后统一描绘 

  var mycanvas = document.querySelector("canvas")
    var ctx = mycanvas.getContext("2d")
ctx.lineWidth = 10;
    ctx.moveTo(100,100);
    ctx.lineTo(400,100);
   
    ctx.moveTo(100,130);
    ctx.lineTo(400,130);
    ctx.stroke()

 给笔设置颜色 (颜色值都可以有哪几种 css 部分的颜色表现都可以)

  var mycanvas = document.querySelector("canvas")
    var ctx = mycanvas.getContext("2d")
    ctx.strokeStyle = "#ff0";  // 颜色单词 ,#fff  #ffffff  rgb() rgba()
    ctx.moveTo(100, 130);
    ctx.lineTo(400, 130);
    ctx.stroke()

 开启以个新的状态 ,以为只有一个状态,(想让状态之间有不同的表现,此时在就需要开启先的新的状态)路径

  var mycanvas = document.querySelector("canvas")
    var ctx = mycanvas.getContext("2d")
  ctx.beginPath();
     ctx.lineWidth = 10;
     ctx.strokeStyle = "#f00";
     ctx.moveTo(100,100);
     ctx.lineTo(400,100);
     ctx.stroke();
     ctx.beginPath();
     ctx.lineWidth = 40;
     ctx.strokeStyle = "#ff0";
     ctx.moveTo(100,150);
     ctx.lineTo(400,150);
     ctx.stroke();

状态的同一化:此时设置的是描绘的样式,但是最终你使用的是填充   一一对应 

      var mycanvas = document.querySelector("canvas")
    var ctx = mycanvas.getContext("2d")
         ctx.strokeStyle = "#ff0";
          ctx.fillStyle = "#ff0";
          ctx.moveTo(100,100);
          ctx.lineTo(400,100);
          ctx.lineTo(400,400);
          ctx.fill()
     ctx.stroke()

在线宽的问题(基线问题) 

 var mycanvas = document.querySelector("canvas")
    var ctx = mycanvas.getContext("2d")
 ctx.strokeStyle = "red";
    ctx.lineWidth = 20;
    ctx.moveTo(100, 0);
    ctx.lineTo(400, 0);
    ctx.lineTo(400, 400);
    ctx.closePath();
    ctx.stroke();
    // ctx.fill();

设置线的两端样式 

butt 默认样式

    var a = document.querySelector("#tag_a");
    var actx = a.getContext("2d");

    actx.lineWidth = 20;
    actx.moveTo(100, 100);
    actx.lineTo(400, 100);
    //设置先的两端样式 :
    //butt 默认样式
    // actx.lineCap = "butt";
    actx.stroke();
round 两端是圆弧
   actx.lineWidth = 20;
    actx.moveTo(100, 130);
    actx.lineTo(400, 130);
    //设置先的两端样式 :
    //round 两端是圆弧
    actx.lineCap = "round";
    actx.stroke();
square两端是方块
    actx.lineWidth = 20;
    actx.moveTo(100, 160);
    actx.lineTo(400, 160);
    //设置先的两端样式 :
    //square两端是方块
    actx.lineCap = "square";
    actx.stroke();

绘制线焦点样式

 actx.lineWidth = 10;
    actx.moveTo(100, 100);
    actx.lineTo(400, 100);
    actx.lineTo(100, 200);
    //默认是尖角
    // actx.lineJoin = "miter";
    //折角部分是个圆角
    // actx.lineJoin = "round";
    //平角
    actx.lineJoin = "bevel";
    actx.stroke();

制矩形 

x,y 表示矩形的左上角
ctx.rect(x坐标,y坐标,宽度,高度)
ctx.rect(100,100,100,100);

 当会值矩形的一个更加简便的写法
ctx.fillRect(10,10,200,300);
ctx.strokeRect(10,10,200,300);

<canvas width="500" height="500" id="tag_a"></canvas>
<script>
    var a = document.querySelector("#tag_a");
    var ctx = a.getContext("2d");
    //绘制矩形  x,y 表示矩形的左上角
    // ctx.rect(x坐标,y坐标,宽度,高度)
    // ctx.rect(100,100,100,100);
    // // ctx.fill();
    // ctx.stroke();

</script>

绘制弧

ctx.arc(250,250,200,0,Math.PI/2,false);
ctx.arc(x,y,半径,起始弧,结束弧,方向);
<canvas width="500" height="500" id="tag_a"></canvas>
<script>
    var a = document.querySelector("#tag_a");
    var ctx = a.getContext("2d");
    ctx.moveTo(250,250);
    ctx.arc(250,250,200,0,Math.PI/2,false);
    // ctx.lineTo(250,250);
    // ctx.closePath();
    ctx.stroke();
    ctx.fill()

</script>

清除绘制内容

x,y   w,h 清除的矩形大小
ctx.clearRect(250,250,100,100)
<script>
    var a = document.querySelector("#tag_a");
    var ctx = a.getContext("2d");
     ctx.fillRect(100,100,300,300);
     //x,y   w,h 清除的矩形大小
     ctx.clearRect(250,250,100,100)
</script>

绘制文字

参数讲解:1 绘制文字内容   绘制起始点坐标 x  y
ctx.fillText("好好学习,天天向上!!!",200,100);
ctx.strokeText("好好学习,天天向上!!!",100,200);
描绘文字    填充文字
// ctx.fillText("你好?",100,100);
// ctx.strokeText("我好!",100,120);
设置文字的大小  注意点:字体的样式   ;设置有顺序  显示大小  在是样式
 ctx.font ="bold 50px '宋体'";
    ctx.fillText("你好?",100,100);
    // ctx.strokeText("我好!",100,120);

  文本内容基线


​​ textBaseLign:设置或返回在绘制文本时使用的当前文本基线。


 值                   描述
alphabetic     默认。文本基线是普通的字母基线。
top          文本基线是 em 方框的顶端。
hanging      文本基线是悬挂基线。         知道
 middle       文本基线是 em 方框的正中。
 ideographic  文本基线是表意基线。         知道
bottom       文本基线是 em 方框的底端。

中文  引文 常用常用的是:  默认  top  middle  bottom
deographic    hanging基本差不多

<canvas id="a" width="500" height="500" style="border: 1px solid red">浏览器不支持canvas</canvas>
<script>

    var mcanvas = document.querySelector('#a');
    var ctx = mcanvas.getContext('2d');
    //绘制坐标
    ctx.moveTo(0,250);
    ctx.lineTo(500,250);
    ctx.stroke();
    ctx.beginPath();
    ctx.moveTo(250,0);
    ctx.lineTo(250,500);
    ctx.stroke();

//    辅助
    ctx.beginPath();
    ctx.fillStyle = "red";
    ctx.font="30px '宋体'";

//   研究基线
    ctx.textBaseline = "bottom";
    ctx.fillText("AbcDghj",250,250);

</script>

对齐方式

研究基线
ctx.textAlign = "start";
ctx.textAlign = "end";


 ctx.textAlign = "center";
ctx.textAlign = "left";
ctx.textAlign = "right";

 ctx.textAlign = "center";
    ctx.textBaseline = "middle";
    ctx.fillText("AbcDghj",250,250);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值