如果把移动端的可视区域(320-768)的话,大部分网站都会因为太窄而显示错乱;
所以浏览器默认把viewport设置为一个较宽的值 980px或1024px,至少保证PC网站在移动端上可以显示,只不过出现了横向滚动条而已。
devicePixelRatio在不同浏览器中存在一些兼容性问题,并不是完全可靠的
需要用到
<meta name="viewport" content="width=device-width">
meta viewport 中有6个通用属性:
target-densitydpi = UI-width / device-width * window.devicePixelRation * 160 // UI-width: 布局宽度 // device-width:屏幕分辨率宽度 iphone4为640 // target-densitydpi=device-dpi 标示使用设备本身物理屏幕的像素,不会发生默认缩放
// 移动页面设计 480*854的比例 // dpi = 480/screen.width*window.devicePixelRatio*160; // scalevalue = screen.width/480; // 控制适配 分为5种组合 /* width + target-densitydpi(计算出来的) */ <meta name="viewport" content="width=480,target-densitydpi=dpi,minimal-ui"> /* width */ <meta name="viewport" content="width=480,minimal-ui"> /* width+target-densitydpi=device-dpi */ <meta name="viewport" content="width=480,targrt-densitydip=device-dip,minimal-ui"> /* width+initial-scale */ <meta name="viewport" content="width=480,initial-scale=scalevalue,maximum-scale=scalevalue,minimum-scale=scalevalue,minimal-ui"> /* targrt-densitydpi */ <meta name="viewport" content="targrt-densitydpi=dpi,minimal-ui"> // 通过顺序设置5次来实现适配 直到小于等于10表示viewport设置正确了。 Math.abs(window.innerWidth - 480) <= 10;
js代码控制
// 建议执行横竖屏的事件都通过一个侦听完成,做一个统一的管理;在屏幕横竖屏切换完成之后再执行相应的事件 window.addEventListener("orientationchange",function () { This.isOrietation = true; This.changeOriention(); });
css控制
// 定义横屏显示的样式 @media screen and(orientation:landspace){...} // 定义竖屏显示的样式 @media screen and(orientation:portrait){...} // 某个尺寸的特殊样式 竖屏时宽度为768px 符合一般ipad的条件 @media only screen and(orientation:portrait) and(device-width:768px){...}
您可能也喜欢: | ||||
WEB前端底层知识--浏览器是如何工作的 |
使用CloudFlare提升网站的访问体验和安全性 |
Node.js开发指南——第3章安装Node.js快速入门(一) |
240多个jQuery插件 功能强大 齐全 |
Adobe Cleaner Tool:Adobe完全卸载工具 |
无觅 |