1.calc()
允许计算 CSS 的属性值,比如动态计算长度值。
在微信小程序中涉及到全屏适配的问题,试了很多方法没有结果,最后决定用100vh-500rpx来实现,这时候就需要用到calc进行计算
vh 即viewpoint height,视窗高度,1vh=视窗高度的1% 500rpx为算出来的页面其他元素的高度
min-height:calc(100vh - 500rpx)
tips: min-height高度不能继承,如果内部元素需要继承,如下操作即可
min-height:calc((100vh - 500rpx)*0.5 )
2.封装组件
子向父传值 通过triggerEvent触发
父级页面
<play-list bindfavouriteChange="favouriteChange"></play-list>
favouriteChange(e){
// 取到组件中通过{}传入的值,如index,subjectType等
}
子页面(组件)
this.triggerEvent('favouriteChange',{index: index,subjectType:list.subjectType})
3.如何在微信小程序中向数组中指定对象的属性传值?
this.setData({[`readWordsList[${index}].isStore`] : isStore})
4.关于 -webkit-overflow-scrolling: touch
-webkit-overflow-scrolling 属性控制元素在移动设备上是否使用滚动回弹效果.
auto: 使用普通滚动, 当手指从触摸屏上移开,滚动会立即停止。
touch: 使用具有回弹效果的滚动, 当手指从触摸屏上移开,内容会继续保持一段时间的滚动效果。继续滚动的速度和持续的时间和滚动手势的强烈程度成正比。同时也会创建一个新的堆栈上下文。(from MDN)
我在首页滚动中加个这个属性,结果导致上滑的时候出现花屏的问题。排查好久找到这个问题,特意记录一下
5关注同一主体的公众号功能
<official-account></official-account>
这个组件限定最小宽度为300px,高度为定值84px,样式几乎不可调,可考虑在外嵌套一个view进行样式的微调。
最让人抓狂的是这个组件的显示需要固定的场景值,详见微信开发文档。这样就给用户一会显示一会不显示的错觉。
6.微信小程序正向计时
使用setInterval 1000毫秒加1即可
分享一下补零和时间格式化函数
// 补零
padZero(str, dig = 2) {
str = "" + str;
while (str.length < dig) {
str = "0" + str;
}
return str;
},
// 时间格式化 传入毫秒
parseMs(ms) {
if (typeof ms !== "number") {
throw new TypeError("Expected a number");
}
const roundTowardsZero = ms > 0 ? Math.floor : Math.ceil;
const days = roundTowardsZero(ms / 86400000);
const hours = this.padZero(roundTowardsZero(ms / 3600000) % 24);
const minutes = this.padZero(roundTowardsZero(ms / 60000) % 60);
const seconds = this.padZero(roundTowardsZero(ms / 1000) % 60);
return { hours, minutes, seconds };
}