console.log('最干净的显示区域', document.documentElement.clientwidth); // 常用
console.log('最干净的显示区域 + 滚动条', window.innerwidth);
console.log('最干净的显示区域 + 滚动条 + 浏览器边框', window.outerwidth);
console.log('与浏览器无关,当前设备分辨率横向的值', screen.width);
document.documentElement.clientwidthwindow.innerwidthmeta-viewport 标签是苹果公司在 2007 年引进的,用于控制移动端布局视口
1.width 布局视口的宽度,可以是设备标识 device-width,也可以是具体值,但有些安卓手机不支持具体值,IOS 全系都是支持的。
2.initial-scale 【系统】初始缩放比例
3.maximum-scale 【用户】缩放的最大比例
4.minimum-scale 【用户】缩放的最小比例
5.user-scable 使用允许用户通过手指缩放 苹果浏览器 safari不识别该属性
6.viewport-fit 设置为 cover值可以解决刘海屏的留白问题
由于移动端设备的屏幕尺寸不一致,会出现同一个元素,在两个不同的手机上显示效果不一样(比例不同)。
想让同一个元素在不同的设备上显示效果保持一致,就需要适配
无论采取何种适配方式,中心原则永远是等比
em 和 rem 都是 css 中的相对长度单位,区别:
- em 相对的是父级元素的字体大小- rem 相对的是根元素的字体大小
淘宝,百度的移动端使用此方案。
1.设置完美视口
2.通过 js 设置根字体大小=(当前设备横向独立像素值*100)/设计稿宽度
3.编写样式时,直接以 rem 为单位,值为:设计值/100
4. 书写 js 代码进行实时适配
不过 vw 和 vh 有一定的兼容性问题
vw 兼容性问题请看这里 详情
应用场景:
注意:
touch 事件结束后会默认触发元素的click事件
如果 touch 事件隐藏了元素,则 click 事件动作将作用到新的元素上,触发新的 click事件或页面跳转,这种现象被称为点击穿透。有点类似于事件冒泡。
解决方案1:阻止默认行为
nodeElement.addEventListener('touchstart', (ev)=> {ev.preventDefault()
})
解决方案 2:使其背后的元素失去click事件特性,改用 touchstart,即用touchxxx来代替背后元素的 click事件
nodeElement.addEventListener('touchstart', ()=> {location.href = 'http://www.xxx.com'
})
上一篇:迈阿密男单首轮:穆雷贝雷难兄难弟,小黑拉约夕阳之战! 迈阿密男单首轮:穆雷贝雷难兄难弟,小黑拉约夕阳之战!
下一篇:爱德华兹:掘金末节开始夹击我 他们在迫使我传球方面做得很好 爱德华兹:掘金末节开始夹击我 他们在迫使我传球方面做得很好