logo头像
Snippet 博客主题

微信小程序-部分问题集锦

本文于 400 天之前发表,文中内容可能已经过时。

概述

微信小程序遇到的问题及解决方法集锦,持续更新…

1.去除小程序button点击时出现灰背景

答:hover-class=”btn-hover” 给button添加此属性即可去除点击时背景色;

2.动态改变page.json 里面的navigationBarTitleText标题

答: wx.setNavigationBarTitle({title: title});

3.去除小程序button的默认border样式

答:.btn:after {border: none;}

4.image标签跟view标签上下会有间隙

原因:

图片文字等inline元素默许是跟父级元素的baseline对齐,而baseline又和父级底边有必定间距;

方案一:

将图片转换为块级对象,即img{display:block;};

方案二:

设置图片的vertical-align属性为“top,text-top,bottom,text-bottom”也可以解决。如: img {vertical-align:top;};

方案三:

设置图片的浮动属性;即img {float:left;};

5.小程序input去除空格

1.给input绑定bindinput事件;

2.利用数据双向绑定同步当前input的value值;

3.利用正则去除空格(replace(/\s+/g, ‘’));

html:

1
<input type="text" bindinput="getValue" value="{{value}}" ></input>

js:

1
2
3
4
5
6
getValue:function(e){
let val = e.detail.value;
this.setData({
value: val.replace(/\s+/g, '')
})
}

6.在使用canvas绘图时,使用图片做背景遇到的问题

背景:在使用图片为背景通过canvsa绘制图片时,会遇到不同手机获取到的背景图片被截取程度会不同,生成的图片并不是我们想要的大小。

因此我们在使用图片作为canvas绘制图片的背景图片时,需要先获取屏幕的分辨率设置图片自适应大小:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 生成海报
createPoster: function (){
let that = this
, pageBg = this.data.pageBg //背景图片地址
, width;
wx.getSystemInfo({
success(res) {
width = res.screenWidth; //当前分辨率宽度
}
});
//设置自适应大小
const x = width / 750;
const ctx = wx.createCanvasContext('qrCodeCanvas');
console.log(ctx);
//主要布局
ctx.clearRect(0, 0, 750, 1204);
ctx.fillStyle = '#e04e4e';
ctx.fillRect(0, 0, 750, 1204);
//根据分辨率设置背景图片大小;750:图片宽度;1204:图片高度;
ctx.drawImage(pageBg, 0, 0, 750 * x, 1204 * x);
ctx.draw(false, function () {
setTimeout(() => {
// canvas画布转成图片
wx.canvasToTempFilePath({
x: 0,
y: 0,
width: 750,
height: 1204,
destWidth: 2250,
destHeight: 3612,
canvasId: 'qrCodeCanvas',
success: function (res) {
console.log(res.tempFilePath);
that.setData({
qrCodeImgCanvas: res.tempFilePath
})
},
fail: function (res) {
console.log("error");
console.log(res);
}
})
}, 200)
});
},