移动端布局适配方案解决retina(视网膜)屏1px边框的问题

来源:程序思维浏览:1516次
下面我给大家分享一下移动端布局的要领,和解决1px边框的问题:


viewport使用

<meta name="viewport" content="width=device-width,initial-scale=1.0, maximum-scale=1.0,user-scalable=no" />

width:设置layout viewport 的宽度,为一个正整数,或字符串"device-width"

initial-scale:设置页面的初始缩放值,为一个数字,可以带小数

minimum-scale:允许用户的最小缩放值, 为一个数字,可以带小数

maximum-scale:允许用户的最大缩放值,为一个数字,可以带小数

height:设置layout viewport 的高度,这个属性对我们并不重要,很少使用

user-scalable:是否允许用户进行缩放,值为"no"或"yes", no 代表不允许,yes代表允许

format-detection使用

<meta name=“format-detection” content=“telephone=no,email=no,date=no,address=no” />

telephone:电话
eamil:邮箱
date:日期
address:地址

移动端如何做适配?

采用rem作为布局单位。

什么是rem?

rem是CSS3新增的相对长度单位,是指相对于根元素html的font-size计算值的大小。
简单可理解为屏幕宽度的百分比。

rem与em的区别?

rem是针对根元素的html的font-size计算值大小计算的。
em是根据父元素的font-size大小计算的。

使用手淘flexible.js计算rem

比如:750px设计稿,那么1rem=75px, div的高是50px ,50px换算成rem公式:
50px/75px=0.7rem;

解决1px细线问题

问题出现原因:

在retina(视网膜)屏上面, devicePixelRatio(物理像素)这个值是2或3, 所以1px长度映射到物理像素上就有2px或3px那么长。

解决方案:

viewport + rem 方案

<meta name=“viewport” content=“initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no” />

接下来的任务就是js的动态修改缩放比 以及 实现rem根元素字体大小的设置。

var viewport = document.querySelector("meta[name=viewport]");
if (window.devicePixelRatio == 1) {
     viewport.setAttribute('content', 'width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no')
}
if (window.devicePixelRatio == 2) {
      viewport.setAttribute('content', 'width=device-width, initial-scale=0.5, maximum-scale=0.5, minimum-scale=0.5, user-scalable=no')
}

if (window.devicePixelRatio == 3) {
     viewport.setAttribute('content', 'width=device-width, initial-scale=0.333333333, maximum-scale=0.333333333, minimum-scale=0.333333333, user-scalable=no')
}
var docEl = document.documentElement;
var fontsize = 10 * (docEl.clientWidth / 320) + 'px';
docEl.style.fontSize = fontsize;

面试解答:

判断devicePixelRatio物理像素如果为1,设置viewport缩放大小为1,如果为2设置viewport缩放大小为0.5,如果为3设置viewport缩放大小为0.33….。
精品好课
最新完整React+VUE视频教程从入门到精,企业级实战项目
React和VUE是目前最火的前端框架,就业薪资很高,本课程教您如何快速学会React和VUE并应用到实战,教你如何解决内存泄漏,常用库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习Re...
VUE2+VUE3视频教程从入门到精通(全网最全的Vue课程)
VUE是目前最火的前端框架之一,就业薪资很高,本课程教您如何快速学会VUE+ES6并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习VUE高薪就...
Vue2+Vue3+ES6+TS+Uni-app开发微信小程序从入门到实战视频教程
2021年最新Vue2+Vue3+ES6+TypeScript和uni-app开发微信小程序从入门到实战视频教程,本课程教你如何快速学会VUE和uni-app并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己...
React实战视频教程仿京东移动端电商
React是前端最火的框架之一,就业薪资很高,本课程教您如何快速学会React并应用到实战,对正在工作当中或打算学习React高薪就业的你来说,那么这门课程便是你手中的葵花宝典。
最新完整React视频教程从入门到精通纯干货纯实战
React是目前最火的前端框架,就业薪资很高,本课程教您如何快速学会React并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习React高薪就...
HTML5基础入门视频教程易学必会
HTML5基础入门视频教程,教学思路清晰,简单易学必会。适合人群:创业者,只要会打字,对互联网编程感兴趣都可以学。课程概述:该课程主要讲解HTML(学习HTML5的必备基础语言)、CSS3、Javascript(学习...
jQuery视频教程从入门到精通
jquery视频教程从入门到精通,课程主要包含:jquery选择器、jquery事件、jquery文档操作、动画、Ajax、jquery插件的制作、jquery下拉无限加载插件的制作等等......
HTML5视频播放器video开发教程
适用人群1、有html基础2、有css基础3、有javascript基础课程概述手把手教你如何开发属于自己的HTML5视频播放器,利用mp4转成m3u8格式的视频,并在移动端和PC端进行播放支持m3u8直播格式,兼容...
收藏
扫一扫关注我们