关于canvas的宽高

canvas元素默认宽 300px, 高 150px, 设置其宽高可以使用如下方法:
方法一:

<canvas width="500" height="500"></canvas>

方法二:使用HTML5 Canvas API操作

canvas.width = 500;
canvas.height = 500;

若通过如下方法设置宽高,那么Canvas元素将由原来大小被拉伸到所设置的宽高:
使用CSS 会被拉伸

 canvas{
     width:500px;
     height:500px;
 }

写在行间样式中的 style="" 里面,也会产生拉伸的情况。
使用HTML5 Canvas API操作style属性,会被拉伸

canvas.style.width = "500px";
canvas.style.height = "500px";

用jquery的$("#id").width(500);会被拉伸

其它:canvas的width和height也不能用百分比表示。canvas会将百分值当成数值显示

### HTML5 Canvas 设置 对于HTML5 `<canvas>` 元素,直接通过CSS设置其度和度为百分比并不能达到预期效果。这是因为`<canvas>` 的默认行为会拉伸图像而不是改变绘图区域的实际尺寸。为了使Canvas元素的度和度能够响应父容器的变化并保持一定的比例关系,可以采用JavaScript动态调整画布尺寸的方法。 #### 方法一:使用 JavaScript 动态调整 Canvas 尺寸 当页面加载或窗口大小发生变化时,可以通过监听事件来更新Canvas的真实尺寸: ```javascript function resizeCanvas() { var canvas = document.getElementById('myCanvas'); var parent = canvas.parentElement; // 获取父元素的计算样式 var style = window.getComputedStyle(parent); var width = parseInt(style.getPropertyValue('width'), 10); var height = parseInt(style.getPropertyValue('height'), 10); // 设置Canvas实际像素尺寸等于父元素的逻辑尺寸 canvas.width = width * devicePixelRatio; canvas.height = height * devicePixelRatio; // 清除之前的绘制内容重新渲染图形 const ctx = canvas.getContext('2d'); ctx.clearRect(0, 0, canvas.width, canvas.height); } // 页面初次加载时调用一次resizeCanvas函数 window.addEventListener('load', resizeCanvas); // 当浏览器窗口大小发生改变时也触发该函数 window.addEventListener('resize', resizeCanvas); ``` 这种方法确保了无论何时父容器改变了尺寸,Canvas都会相应地调整自己的真实分辨率以匹配新的布局空间[^1]。 #### 方法二:利用 CSS 和 Viewport Units (vw/vh) 另一种方式是在支持viewport units(视口单位)的现代浏览器中应用这些单位作为Canvas的基础尺寸,并配合媒体查询或其他技术手段控制不同屏幕下的表现形式。这种方式不需要额外编写JS代码即可实现自适应设计目标。 ```css .canvas-container { position: relative; padding-bottom: 56.25%; /* 这里假设比为16:9 */ height: 0; overflow: hidden; } .canvas-container canvas { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } ``` 此方案适用于希望完全依赖于CSS完成布局的情况,在某些场景下可能更为简洁效[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值