关于getBoundingClientRect的兼容性问题
Dom.getBoundingClientRect().y 在华为手机上取不到,事实上这个.y与.top的值是一样的,而.top才是w3c的标准,以后统一取.top
上拉拖拽mixin中忽略的一个bug
container设置了min-height:100%,但是,如果container填充了初始元素后,高度没能达到100%,那么就会出现bug,即使元素拉到了底,computedPullState中PULL_UP_STATUS也不会被设置为true,也就无法实现上拉记载,解决的办法有两个
- 使用
calc给container的height设置为calc(100%+ 100px)强行撑开父元素【经试验并不行,height设置为calc属性会报错】
上边
calc报错的原因,calc中运算符两边必须有空格,但是设置了calc以后,仍然不行,说不明白自己试
- 边界累加制,当到达一种边界状态的时候,拖动不会直接唤醒pull-up组件,而是将值累加,到达一定程度后才唤醒
首次引入了调试工具eruda
用法见17mall项目 main.js
让你的网页更顺滑
如何不择手段提升scroll性能
解决ios,华为手机上橡皮筋效果的原理
并不是在子页的listener事件中执行e.preventDefault(),因为子页的default效果正是我们要的效果,
而真正要prevent的是document对象的默认效果,而且,并不是所有情况下都要prevent,下拉刷新需要,
而上滑没有皮筋效果就不需要。还要注意一点,子页的listener事件不能添加passive,这个属性会让事
件默认不可不阻止,也不能在子页listener事件中添加e.stopPropagation(),因为如果子页事件取消
冒泡,那么document中没有事件发生,也就无法执行事件函数中的e.preventDefault()了
【大bug】17mall项目travel-note页
用常规布局始终无法解决滑动中突然卡住的情况,只能将container的overflow:hidden转移给上一层div,
【已解决】原因在container的list组件中,list组件中循环渲染list-bar,
而list-bar的样式中包含有margin-top:...这一条,不要给任何元素中第一个元素赋予
margin-top的属性,总会引发这样或那样的bug
render函数中如何给事件添加修饰符
createElement('input',{
on: {
'!click': this.doThisInCapturingMode,
'~keyup': this.doThisOnce,
'~!mouseover': this.doThisOnceInCapturingMode
}
})
- .passive:
& - .capture:
! - .once :
~ - .capture.once 或 .once.capture :
~!
下拉刷新组件中遇到了不触发touchend事件的情况
最后添加了touchcancel事件,复用touched事件的handler加以解决