canvas的使用方法

    之前学习canvas的时候就觉得canvas和一般的节点有一点不一样,现在重新看了一下,结合大佬们的提示,我又来了自导自演一波,不对的地方还希望大家斧正.
    canvas对我来说,是用在web前端和小程序,我接触前端比较少,就主要说一下web方面的吧(小程序直接动态渲染就行)。总体上来说,和一般标签一样,有以下两种方法:
    方法一,使用canvas标签+id/class来渲染,其动态变化的实现需要用到getComputedStyle函数,这个函数的用法是,得到初始化的样式,直接使用node.style.width/height是访问不到的,下面是代码实现:

<title>Document</title>
    <style>
        #mycanvas {
            background-color: yellowgreen;
            border: 1px red solid;
            width: 400px;
            height: 400px;
        }
<body>
    <div id="son">
        <canvas id="mycanvas">"不好意思,您的浏览器版本不支持canvas"</canvas>
        <div id="son_box"><button>点击运行动画</button></div>
    </div>
<script>
        //canvas动态变化思路一
        window.onload = function() {
            let mycanvas = document.getElementById("mycanvas");
            let btn = document.querySelector("#son_box");
            let gap = 0;
            btn.addEventListener("click", function() {
                console.log("点击函数被执行!");
                let timer = setInterval(function() {
                    gap += 2;
                    if ((parseInt(getComputedStyle(mycanvas).width) - gap) < 0) clearInterval(timer);
                    else mycanvas.style.width = (parseInt(getComputedStyle(mycanvas).width) - gap) + "px";
                    //else mycanvas.style.width = (parseInt(mycanvas.style.width) - gap) + "px";
                   // console.log("输出mycanvas.style.width的信息:" + mycanvas.style.width);这个是无效的!!!
                }, 200);
            });
        }
    </script>

在这里插入图片描述
可以看出获取为空,即获取失败。
    方法二,利用canvas的内联初始化来动态修改标签属性,代码如下:

  <title>Document2</title>
    <style>
        #mycanvas {
            background-color: yellowgreen;
            border: 1px red solid;
        }
<body>

    <div id="son">
        <canvas height="150" width="300" style="background-color: royalblue; border:1rpx red solid;"></canvas>
        <canvas id="mycanvas" height="400" width="400">"不好意思,您的浏览器版本不支持canvas"</canvas>
        <div id="son_box"><button>点击运行动画</button></div>
    </div>
 <script>
        //canvas动态变化思路二
        window.onload = function() {
            let mycanvas = document.getElementById("mycanvas");
            let btn = document.querySelector("#son_box");
            let gap = 0;
            btn.addEventListener("click", function() {
                console.log("点击函数被执行!");
                let timer = setInterval(function() {
                    gap += 2;
                    if ((parseInt(mycanvas.height) - gap) < 0) clearInterval(timer);
                    else mycanvas.height = (parseInt(mycanvas.height) - gap);
                    //console.log("canvas的高度为:" + mycanvas.height);
                }, 200);
            });
        }
    </script>
其次,canvas在使用的时候需要注意两点:
    1.当canvas的高度或者宽度为负数的时候,canvas会直接跳转成默认的宽度(300px)或者高度(150px),因此当canvas在动画函数里面出现高度、宽度的异常变化时,可以检查一下是否是width/height被修改为负值;
    2.canvas在内联时是省去'px'单位的,多加了单位反而会使对应的width/height直接变为0。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌空暗羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值