为什么canvas宽高要设置在标签内>>宽高设置在style和设置在canvas的区别

一直很困惑为什么canvas标签和其他标签不一样,宽高需要设置在canvas标签里,设置在style里就会有问题。

纯粹个人理解,有错误欢迎指出。

> 结论写在头

设置在style里有问题其实是因为:

canvas标签里的宽高是相当于定义画布的大小(默认宽300px,高150px)。在定义了画布之后,canvas就相当于一张图片了,类似于img,所以这个时候再设置宽高,就会把canvas拉伸成style里设置的宽高了。

下面看例子:

> 默认状态

<style>
    body{background:black;}
    #c{background: yellow;}
    div{background: pink;width: 300px;height: 150px;}
</style>
<script>
    window.onload = function(){
        var oC = document.getElementById('c');
        var oGC = oC.getContext('2d');

        oGC.strokeRect(50,50,100,100);
    }
</script>

<body>
    <canvas id="c"></canvas>
    <div>width: 300px; height: 150px;</div>
</body>

snipaste_20170430_232839.png

在canvas画布下加了一个DIV,可以看到画布的默认大小是300*150px的。

> 在canvas标签里设置300*300px

<!--其他代码同上-->
<body>
    <canvas id="c" width = "300px" height = "300px""></canvas>
    <div>width: 300px; height: 150px;</div>
</body>

snipaste_20170501_093457.png

这里要注意在canvas标签里设置宽高的方式,是直接写width = "300px" height = "300px",而不是以行间样式的方式设置的。

> 在canvas标签里设置300*300px后,style设置成300*150px

<style>
    body{background:black;}
    #c{background: yellow;width: 300px;height: 150px;}
    div{background: pink;width: 300px;height: 150px;}
</style>
<script>
    //同上
</script>

<body>
    <canvas id="c" width = "300px" height = "300px""></canvas>
    <div>width: 300px; height: 150px;</div>
</body>

snipaste_20170501_094457.png

可以看到,canvas画布的大小的确是被设置成300*150px了,但里面的内容却被压缩了。

相当于一张300*300px的图片,被设置为300*150px,所以参考的长方形被压短了一半。

转载于:https://www.cnblogs.com/jacobb/p/6814317.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值