19-03-18

221 阅读2分钟

关于getBoundingClientRect的兼容性问题

Dom.getBoundingClientRect().y 在华为手机上取不到,事实上这个.y.top的值是一样的,而.top才是w3c的标准,以后统一取.top

上拉拖拽mixin中忽略的一个bug

container设置了min-height:100%,但是,如果container填充了初始元素后,高度没能达到100%,那么就会出现bug,即使元素拉到了底,computedPullState中PULL_UP_STATUS也不会被设置为true,也就无法实现上拉记载,解决的办法有两个

  1. 使用calc给container的height设置为calc(100%+ 100px)强行撑开父元素【经试验并不行,height设置为calc属性会报错】

上边calc报错的原因,calc中运算符两边必须有空格,但是设置了calc以后,仍然不行,说不明白自己试

  1. 边界累加制,当到达一种边界状态的时候,拖动不会直接唤醒pull-up组件,而是将值累加,到达一定程度后才唤醒

首次引入了调试工具eruda

用法见17mall项目 main.js

让你的网页更顺滑

juejin.cn/post/684490…

如何不择手段提升scroll性能

zhuanlan.zhihu.com/p/30078937

解决ios,华为手机上橡皮筋效果的原理

并不是在子页的listener事件中执行e.preventDefault(),因为子页的default效果正是我们要的效果, 而真正要prevent的是document对象的默认效果,而且,并不是所有情况下都要prevent,下拉刷新需要, 而上滑没有皮筋效果就不需要。还要注意一点,子页的listener事件不能添加passive,这个属性会让事 件默认不可不阻止,也不能在子页listener事件中添加e.stopPropagation(),因为如果子页事件取消 冒泡,那么document中没有事件发生,也就无法执行事件函数中的e.preventDefault()

【大bug】17mall项目travel-note页

用常规布局始终无法解决滑动中突然卡住的情况,只能将containeroverflow:hidden转移给上一层div, 【已解决】原因在containerlist组件中,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加以解决

模拟触发事件

www.jianshu.com/p/b3294bcca…