使用局部滚动,而不是整页滚动html
在元素上加 pointer:cursor
vue
两种方法,一是使用 fastclick.js(推荐)。二是不绑 click
事件,绑在 tap
事件上(此方法会致使开发时调试困难,模拟设备模式下触发 tap
有 bug)android
没有很好的解决方案,应从产品设计层面避免这种状况(好比说作转场页面等)git
在弹窗上须要滚动的地方使用 Swiper,不须要滚动的地方加 ontouchmove="event.preventDefault()"
github
绑在 touchmove
事件上,但手指离开屏幕惯性滑动这段时间仍是没法触发,若是确实须要精细控制,可考虑 IScroll.jsweb
这一般能够提高用户体验,但有时咱们须要禁止这种记忆,加上下面两行ajax
history.scrollRestoration = 'manual'
window.onunload = () => window.scrollTo(0, 0)
复制代码
没法实现,没法实现,没法实现。这是厂商为避免偷取流量强制规定的。两个方法,一是从产品设计层面规避,二是降级为用户触屏播放,没有第三种可能数组
Array.prototype.sort
方法在某些手机上会不起做用sort 方法传入的比较函数应该返回一个数值,而不是布尔值。也就是应该使用 -
号,而不是 >
或 <
号浏览器
Object.assign
方法在某些手机上会不起做用参考 jQuery 的 $.extend
实现本身的对象合并方法。注意,Babel 仅转译语法,而不转译 API,因此使用这些 ES6+ 的 API 都存在不兼容的风险,若是引入了 Babel 的 polyfill,那就不用担忧,不然就须要本身 polyfillbash
加上前缀,加上前缀,加上前缀。加完前缀不敢说 100% 支持吧,90% 仍是有保证的,尤为是移动端。手动加是不可能手动加的,可以使用 autoprefixer 配合构建工具处理
这里的1像素并不是1逻辑像素(也就是CSS像素),而是1物理像素,能够采用缩放的方法实现,首先设置 width: 1px
,而后使用媒体查询根据不一样的dpr缩放不一样的比例,贴一下 less 的实现
.one-x { height: 1px;}
.one-y { width: 1px; }
@dpr: 1.5, 2, 3;
@len: length(@dpr) + 1;
.genScale(@n: 1) when (@n < @len) {
@val: extract(@dpr, @n);
@media (min-device-pixel-ratio: @val) {
.one-x {
transform: scaleY(1/@val);
}
.one-y {
transform: scaleX(1/@val);
}
}
.-fix-less-compiler-bug- {
display: block;
}
.genScale(@n + 1);
}
.genScale();
复制代码
IOS 直接使用 position: sticky
,安卓机型绑 scroll
事件。(须要提一句的是,IOS 的 scroll
事件触发不连续,安卓对 sticky
的支持不太好。因此上面的方法是比较科学地)附上机型判断代码
const ua = window.navigator.userAgent.toLowerCase()
const isAndroid = /android/.test(ua)
const isIOS = /iphone|ipad|ipod/.test(ua)
复制代码
data 的 key/value 键值对的 value 为 undefined 时 jQuery 会直接不传这一条,为 null 时传空字符串
就是不更新,就是不更新,就是不更新。这个官网还有写了。这个和 Vue 监测数据变化的机制有关。Vue 没法检测到对象的新增属性和 vm.arr[index] = newVal
这种方式更新的数组变化。可用如下方法触发
vm.arr = [ ...vm.arr ]
vm.obj = { ...vm.obj }
复制代码
加上 -webkit-overflow-scrolling: touch
加上 -webkit-tap-highlight-color: rgba(0, 0, 0, 0)
加上 ::-webkit-scrollbar{ display: none }
---------------------------- 我是结束线 ----------------------------
暂时就这些了,更多的之后更新