- 关于 WXSS 默认属性样式优先级问题
在正常的浏览器中,浏览器自带的样式永远是优先级最低的,在一般介绍中 button[type=default] 这种属性选择器比 .my-btn 这种类选择器优先级要高。 但是如果 button[type=default] 是系统样式(浏览器自带样式),则优先级一定还是最低,一个普通的 class 就能覆盖。 在微信小程序中,button 的 type 默认值就是 default。 但下面两行的样式却完全不同 <button class="abc">测试</button> <button class="abc" type="default">测试</button> 假设现在有一段样式 .abc {color:#F00;} 这时第一个按钮文字是红色,而第二个则还是系统的颜色。 因为小程序自带的属性选择器优先而把 .abc 的样式给盖掉了,这时只有把 .abc 改成 button.abc 增加优先级才能搞定。 似乎小程序里 [type=default] 不在系统层的低优先级里,而是跟应用层完全在一个优先级层次上,这给开发过程中的按钮样式设置增加了很多麻烦。 某些情况,比如我自定义了一个带按钮的组件,这个组件的 type 属性对应内部按钮的 type 属性,模板剥去无关的部分大概是这样 <button type="{{type}}"><slot></slot></button> 这时 type 值为 null 的情况下,模板输出的是 <button type="">SomeText</button>,这时按钮的样式因为有 type 而被系统自己覆盖了,十分无奈,而且没法办法让这个 type 在没有值时并不存在。 我顺手搜了一下,发现很多年前就有人在说这个问题了,但现在依然有。
2018-06-07 - Mac 上的小程序开发工具提示都不能点击穿透
开发者工具里的 wx.showToast,wx.showLoading,即使 mask 强制设为 false,在显示期间也不能点击后面的界面,严重影响开发体验。 但在真机上没问题。
2018-05-26 - 关于小程序的组件应用形式
小程序的组件,在应用时外层会强制套了一层容器。 比如我写了个组件,模板是 [代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'my-custom-component'[代码][代码]>[代码] [代码] [代码][代码]Some other things.[代码] [代码]</[代码][代码]view[代码][代码]>[代码] 在实际应用时,会在页面的 usingComponents 加一个 "my-comp": "/components/my-custom-component" 然后在页面中使用的时候是 [代码]<[代码][代码]my-comp[代码][代码]></[代码][代码]my-comp[代码][代码]>[代码] 最后生成的是 [代码]<[代码][代码]my-comp[代码] [代码]is[代码][代码]=[代码][代码]"/component/my-custom-component"[代码][代码]>[代码] [代码] [代码][代码]#shadow-root[代码] [代码] [代码][代码]<[代码][代码]view[代码] [代码]class[代码][代码]=[代码][代码]'my-custom-component'[代码][代码]>[代码] [代码] [代码][代码] Some other things.[代码] [代码] [代码][代码]</[代码][代码]view[代码][代码]>[代码] [代码]</[代码][代码]my-comp[代码][代码]>[代码] 也就是组件实际使用后外层会有个 <my-comp> 的容器套在上面,导致很多小组件的样式容易出问题,或者不容易被控制。 这个不能像 vue 那样,组件内是什么样,实际应用后就是什么样吗?
2018-05-23 - wx.reLaunch 不会触发其它标签页的 onUnload
当某个页面调用了 wx.reLaunch(),文档里说的是关闭其它所有页面并打开指定的页面,所以理论上其它所有页面被关闭时应该都会触发 onUnload(),可实际上 reLaunch 关闭他们时并没有调用 onUnload,仅调用了当前页面栈中的 onUnload,因为其它标签页不在 getCurrentPages() 返回的页面栈中,所以就不会被调用。 假如我在一个页面 onLaunch() 中往全局注册了或写入了某些东西,在 onUnload() 卸载这些写入的东西,一旦多个标签页某个页面调用了 wx.reLaunch(),页面逻辑就会出问题。 所以这里是不是应该调整为 wx.reLaunch() 不只是触发打开 getCurrentPages() 返回的页面 onUnload(),也应该在关闭其它标签页时调用他们的 onUnload()
2018-05-21