canvas 单位问题 类似rem和rpx自适应手机屏幕宽度
来源:互联网 发布:js then函数 编辑:程序博客网 时间:2024/04/27 18:37
//获取屏幕的宽度var clientWidth = wx.getSystemInfoSync().screenWidth;;//根据设计图中的canvas画布的占比进行设置var canvasWidth = Math.floor(clientWidth*200/720);再用数据驱动把宽高添加到page页面的canvas的style属性中
原文地址: https://segmentfault.com/a/1190000003502824
获得的是一个包含屏幕尺寸信息的对象wx.getSystemInfoSync()
数据驱动:
index.wxml
<!--index.wxml--><canvas style="width: {{width}}; height:{{width}};" class="canvas1" canvas-id="firstCanvas" /><!--当使用绝对定位时,文档流后边的 canvas的显示阶层高于前边的canvas--><canvas style="width: {{width}}; height: {{width}};" class="canvas2" canvas-id="secondCanvas" />
index.wxss
/**index.wxss**/page{ background-color: #777777;}.canvas1, .canvas2{ position: absolute;}.canvas1{ background-color: #cccccc; box-sizing: border-box;}
index.js
//index.js
//获取应用实例
var app = getApp()
var H = 750;
var W = 750;
function dawLine(context){
for(var i = 0; i < 20; i++){
//线条宽度
context.setLineWidth(1);
//线条颜色(支持颜色编码与rgb()函数)
context.setStrokeStyle("rgb(205,40,40)");
context.moveTo(0, i*25);
context.lineTo(750, i*25);
}
for (var i = 0; i < 20; i++) {
//线条宽度
context.setLineWidth(1);
//线条颜色(支持颜色编码与rgb()函数)
context.setStrokeStyle("rgb(205,40,40)");
context.moveTo(i * 25, 0);
context.lineTo(i * 25, 750);
}
context.stroke();
context.draw();
}
function snake(context){
context.setFillStyle("#00ff00");
context.setLineWidth(25);
// 画一个矩形,第一个和第二个参数代表坐标,第三个参数表示宽度,第四个参数表示高度
context.fillRect(0, 0, 25, 200);
context.stroke();
context.draw();
}
function move(context){
var count = 0;
// 蛇的长度
var h = 200;
setInterval(function (){
// 判断临界条件,蛇头走出画布
if(count < 200){
context.setFillStyle("#00ff00");
context.setLineWidth(25);
// 画一个矩形,第一个和第二个参数代表坐标,第三个参数表示宽度,第四个参数表示高度
context.fillRect(0, count, 25, 200);
context.stroke();
context.draw();
}
else{
}
count += 25;
}, 1000);
}Page({ data: { width: '', height:'' }, canvasIdErrorCallback: function(e){ console.error(e.detail.errMsg); }, onReady: function(e){ console.log(wx.getSystemInfoSync().screenWidth) // 获取屏幕的宽度 var clidentWidth = wx.getSystemInfoSync().screenWidth; console.log(clidentWidth); // 根据设计图中的canvas画布的占比进行设置 var canvasWidth = Math.floor(clidentWidth); // 使用wx.createCanvasContext获取上下文context var context = wx.createCanvasContext('firstCanvas'); var context2 = wx.createCanvasContext('secondCanvas'); this.setData({ width: canvasWidth + 'px', height: canvasWidth + 'px', }); // context.setStrokeStyle("#00ff00"); // context.setLineWidth(5); // // 画一个矩形,第一个和第二个参数代表坐标,第三个参数表示宽度,第四个参数表示高度 // context.rect(0, 0, 200, 200); // context.stroke(); // context.setStrokeStyle("#ff0000"); // context.setLineWidth(2); // context.moveTo(160, 100); // context.arc(100, 100, 60, 0, 2*Math.PI, true); // context,moveTo(140, 100); // context.arc(100, 100, 40, 0, Math.PI, false); // context.moveTo(85, 80); // context.arc(80, 80, 5, 0, 2*Math.PI, true); // context.moveTo(125, 80); // context.arc(120, 80, 5, 0, 2*Math.PI, true) // context.stroke(); // context.draw(); dawLine(context); // snake(context2); move(context2); }})
阅读全文
0 0
- canvas 单位问题 类似rem和rpx自适应手机屏幕宽度
- 微信小程序中单位rpx和rem的使用
- 前端自适应----单位rem
- 【干货#012】细解小程序自适应单位rpx
- 微信小程序 尺寸单位rpx与px,rem相互转换
- 微信小程序中rpx与rem单位使用
- 微信小程序中rpx与rem单位使用
- 微信小程序中rpx与rem单位使用
- 小程序单位:rpx、rem的具体使用方法及算法
- 微信小程序中rpx与rem单位使用
- 移动页面自适应手机屏幕宽度
- 移动页面自适应手机屏幕宽度
- 移动页面自适应手机屏幕宽度
- 移动页面自适应手机屏幕宽度
- 移动页面自适应手机屏幕宽度
- web页面自适应手机屏幕宽度
- 移动页面自适应手机屏幕宽度
- 移动页面自适应手机屏幕宽度
- JAVA批量在html文件中添加监测代码。
- 关于D3D9 Stretchrect
- 导航随着页面一直在置顶
- Java轻松查看源代码终极解决方案
- Spring框架学习笔记--HelloWorld(二)
- canvas 单位问题 类似rem和rpx自适应手机屏幕宽度
- CSDN日报20170705——《做一个永不停歇的程序员》
- java.util.ConcurrentModificationException 解决办法
- 《一个Android工程的从零开始》- 目录
- 给自己一个起点
- Android Studio中如何使用Git和Github来管理项目
- ajax跨域问题
- 二叉树排序查找
- 微信小程序 Node.js (基础十) 路由