Open itboos opened 6 years ago
小程序的坑:
button::after {
border : none ;
}
wx.stopPullDownRefresh 放在最前面, 每次下拉时先停止
onPullDownRefresh: function () { wx.stopPullDownRefresh(); // 先停止 XXXXXXXXXXXXX其他代码 }
``` css
// 清除button 的默认样式
// 清除边框
button::after {
border : none ;
}
button {
background: none;
line-height: need px
padding: 0;
margin: 0;
}
小程序实现瀑布流加载图片:https://github.com/zarknight/wx-falls-layout
需要设置样式。弹出层弹出的时候,有滚动条的那个节点添加 style="overflow:hidden;"的属性就可以了。
2.cover-view 上, 安卓手机不能根据z-index 来调整层级, 后面的cover-view 元素会把前面的cover-view 元素挡住, IOS 上则不影响。 解决办法: 层级更高的元素放在 后面, 后面渲染的就能显示在上面
1. 三目运算符:
<view class="class1 class 2 {{ isTest ? 'a': 'b' }} "></view>
2. 绑定变量:( 使用计算属性,返回一个字符串变量 ), 变量的话,必须使用字符串
<view class=" a b {{ classObj }} {{ myName }} "></view>
classObj () {
return 'c1 c2 '
}
data:
myName: 'xq'
结果相当于:
<view class=" a b c1 c2 xq"></view>
具体描述: 父组件的页面里 想通过css 样式来改变子组件的样式, 结果发现没有 生效 原因: 子组件使用的是shodaw DOM , 外部样式无法对立面的内容生效
解决方法:
1. 小程序样式 引入需要使用相对路径(或者绝对路径),不能使用别名如: "@/assets/css/a.less"
2.引入公共样式时,可以直接引入 .wxss, 不要引入.less,否则,每个页面都会有一份共同的 csss。
使用:
a: @import (css) "../assets/css/common.wxss";
b: @import "../assets/css/common.less";
a 方式是告诉编译工具,保留动态引入的方式(因为引入的是wxss,无需再编译)。即 页面.wxss 也是使用 @import (css) "../assets/css/common.wxss"; 这样的动态引入语法。
b 方式是,引入less文件,(less文件需要编译,),它的结果就是 把编译后的文内容复制到了对应的页面,导致的问题就是 多个页面都含有相同的wxss 内容,增大了文件的体积。
原理是,开发者工具实际上是在dist读取代码,动态编译的过程中,已经把 .less编译成了.wxss, 而且路径和src目录是一一对应的。
栗子:
引入公共样式: "../assets/css/common.less"
会在dist目录里生成 assets/css/common.wxss, 所以,可以直接引入 wxss.
这样,打包后的.wxss 里, 就是保留了这句话,而不是把里面的代码复制一份过来,而是使用动态引入的方式。
这样,就缩小了文件体积。
picker-view中indicator-style没作用 有用的回答:
直接在indicator-style属性中写:
1. border: 1px solid #000; 即可设置选中框的边框
2. background-color: red; z-index: 0; 即可设置选中框的背景颜色,这里多说一句,
之所以要设置z-index,是因为选中框的z-index在组件源码中被设置成了3,
也就是设置了背景色后会覆盖选中框的文字。
3. 如果想要设置选中框的字体颜色的话,不能通过indicator-style设置。
问题描述: 当用户从 a页面进入 b页面后, 用户点击返回按钮,返回到 a页面, 这时,我们 a页面的保留了进入b页面之前的所有状态,我们希望 a 页面初始化成一开始的状态
查看文档后发现,小程序并没有监听页面返回的事件, 从 b 页面返回 a页面,会触发onShow 方法,但是并没有携带任何参数
getCurrentPage 方法可以获得当前页面的路由栈, 从 b 返回 a, 页面栈已经没有a 页面的路由了
解决方案:
js压缩: 配置wepy-plugin-uglifyjs插件
json、wxml压缩: 配置wepy-plugin-filemin插件
less压缩: 配置wepy-compiler-less插件
图片压缩: 配置wepy-plugin-imagemin插件、TinyPNG
其中TinyPNG工具压缩效果非常可观,400KB的图片压到40KB不足为奇,并且画质感知上几乎无损。
坑: repeat 标签渲染微信原生组件导致错误:
当需要循环渲染WePY组件时(类似于通过wx:for循环渲染原生的wxml标签),必须使用WePY定义的辅助 标签<repeat>,代码如下:
<template>
<!-- 注意,使用for属性,而不是使用wx:for属性 -->
<repeat for="{{list}}" key="index" index="index" item="item">
<!-- 插入<script>脚本部分所声明的child组件,同时传入item -->
<child :item="item"></child>
</repeat>
</template>
但如果循环列表中渲染了微信原生组件的话,repeat 写法就会出现错误(可能是某个奇怪的错误),这个时候,就需要使用wx:for 原生的列表循环写法。 对于微信原生组件: 微信原生组件名不能大写
<template>
<!-- 注意,使用for属性,而不是使用wx:for属性 -->
<block wx:for="{{list}}" wx:key="index" item="item">
<child item="{{item}}"></child>
</block>
</template>
// 不用写用户自定义的监听事件,写了也没效果
<click-behavior info = "{{ storesAdMap[item.boxId] }}" @addClick.user = "adClick">
<view class="store-gift">
</view>
</click-behavior>
<click-behavior info = "{{ storesAdMap[item.boxId] }}">
<view class="store-gift">
</view>
</click-behavior>
// 父组件在events 里 定义要监听的事件:
{
events: {
adClick: (data) => {
console.log('子组件的点击事件', data)
}
}
}
// 组件中触发事件:
this.emit('adClick', {...params})
// 更新wepy 组件中使用原生组件的方式
<click-behavior info = "item.info" @adClick.user = "adClick">
<view class="store-gift" id = "{{item.id}}">
<view class="store-gift-area">
<image class="store-gift-img" src="{{item.iconImg }}"></image>
</view>
</view>
</click-behavior>
// 或者:使用wx原生的组件监听方式,其实wepy编译后就是长这个样子
<click-behavior info = "item.info" bind:adClick = "adClick"></view>
// 父组件在events 里 定义要监听的事件:
methods: {
adClick: (data) => {
console.log('子组件的点击事件', data)
}
}
// 组件中触发事件:
这样调用的原因是因为 wepy页面里,this 是wepy 封装了的一个实例,this.$wxpage 是原生的wx当前页面的实例,里面才有 triggerEvent 方法 (至少目前是这样: 2019-06-03)
this.$wxpage.triggerEvent('adClick', {info: this.info})
wx.getNetworkType({
success(b) {
console.log('success:', b.networkType)
}
})
console.log('b')
// 现象:
// 在iOS 上, 先输出了 success 网络类型, 然后输出 b
// 在 开发者工具和安卓上: 先输出了 b , 然后输出了 success.
// 也就是说,获取网络状态的回调在 IOS 上是同步, 在安卓和开发者工具上是异步。
// 所以,先逻辑时, 不能假定 b 会比回调先执行,其它的API 也可能存在这个问题。
微信小程序官方文档