Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

移动端web #22

Open
HolyZheng opened this issue Jul 17, 2018 · 0 comments
Open

移动端web #22

HolyZheng opened this issue Jul 17, 2018 · 0 comments

Comments

@HolyZheng
Copy link
Owner

HolyZheng commented Jul 17, 2018

像素和视口

riskers同学的移动端适配方案上
riskers同学的移动端适配方案下

像素

  1. 设备像素pt(物理像素)
  2. css像素px(设备独立像素)
  3. 设备像素比(device pixel ratio)dpr = 设备像素 / CSS像素 window.devicePixelRatio

视口

  1. 布局视口 document.documentElement.clientWidth/Height
  2. 视觉视口 window.innerWidth/Height
  3. 理想视口,它是对设备来说最理想的布局视口尺寸
    <meta name="viewport" content="width=device-width">
  4. 完美视口 <meta name="viewport" content="width=device-width,initial-scale=1">

click事件300ms延迟

原因

移动端,click点击事件会有300ms的延迟,造成这种延迟的原因在于:当用户点一次点击屏幕之后,浏览器并不能立即判断用户是要进行双击缩放,还是进行单击操作,所以会等待300ms来查看用户是否再次点击。

解决方案

  1. 禁用缩放,安卓上的Chrome32+会禁用300ms延迟
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
  1. 将视窗宽度设为设备宽度,安卓上的chrome浏览器会禁用300ms延迟
<meta name="viewport" content="width=device-width">
  1. css 的 touch-action属性禁用双击缩放,IE浏览器
. xx {
  touch-action: none
}
  1. fastClick.js库,它的原理:修改浏览器的touch事件来模拟一个click事件,并把浏览器在300ms之后的click事件阻止掉。,让前端开发人员以熟悉的click来书写代码
if ('addEventListener' in document) {
    document.addEventListener('DOMContentLoaded', function() {
        FastClick.attach(document.body);
    }, false);
}

点透事件

出现条件

  • touchstart 和 click 事件混用。
  • touchstart触发后,消失掉,300ms之后的click事件在相同位置的底层元素上被触发。

解决方案

  1. 不要touchstart 和 click 混用
  2. 让绑定了touchstart事件的元素延迟隐藏。
  3. fastclick.js,解决300ms的延迟的同时,阻止300ms后发出的click事件。
@HolyZheng HolyZheng changed the title 移动端和pc端差异(待填坑) 移动端web Jul 22, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant