前端关于移动端屏幕适配

1.先谈一下几个概念
像素是度量的单位,可以理解为点
1.css像素
html中度量的单位 用px来计算,在pc中往往 1 css px = 1 物理像素
在不同设备中1css像素对应不同的设备像素(物理像素)
例如:iphone3分辨率是320*480 即 css 1px = 1个物理像素;iphone4 分辨率640x960但屏幕尺寸没有改变,意味着同一块区域像素多了1倍 即 css 1px =2个物理像素;
2.物理像素
表示每英寸所拥有的像素数目,数值越高,代表屏幕能够以更高的密度来显示图像
3.分辨率
显示器所能显示的像素多少,显示器可以显示的像素越多,画面就越精细,同样的屏幕区域能显示的信息就越多
4.PPI :是每英寸所拥有的像素(Pixel)数目
2.css那些单位
px:绝对单位,页面按精确像素展示

100%:不是固定的,根据父元素决定的

em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值。

rem:相对单位,可理解为”root em”, 相对根节点html的字体大小来计算,CSS3新加属性,chrome/firefox/IE9+支持。

vw:viewpoint width,视窗宽度,1vw等于视窗宽度的1%。
vh:viewpoint height,视窗高度,1vh等于视窗高度的1%。
vmin:vw和vh中较小的那个。
vmax:vw和vh中较大的那个。
vw, vh, vmin, vmax:IE9+局部支持,chrome/firefox/safari/opera支持,iOS safari 8+支持,Android browser4.4+支持,chrome for android39支持
3.哪种方法更适合来屏幕适配呢?
1.px?
不好用是因为不管在哪都是一样的值,所以造成很大的差别,比如font-size:14px,pc的14px比手机的14px要大
2.100%?
百分比布局时:div结构自适应,字体却不能适应,不好用
3.em?em等于当前元素下字体的大小
不好的地方是改一处就会造成乱了
4.vw,vh虽然很好用但是目前浏览器支持不老老高。
5.综合以上这里推荐rem,根据屏幕的宽设置rem,当屏幕变大,所有随之改变。
rem适配攻关点:
1.获得当前屏幕的大小
2.设置html的fontsize即rem
3.当屏幕大小改变,触发函数重新计算
4.用到的关于代码:
 获取当前屏幕的大小用:
1、若网页中含有有了标准声明(即页面加上<!DOCTYPE html">这行代码,标准声明的存在会对document.body和document.documentElement的属性值有影响)时,
则应该使用document.documentElement
2、若网页中只有<html>而没有上面的一行代码,则JS脚本应该使用document.body

6.具体代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>关于屏幕适配</title>
<style type="text/css">
*{
margin: 0;
padding: 0;
}
.main{
width: 10rem;
height: 6rem;
background: red;
}
</style>
</head>
<body>
<div class="main">
我好你好大家好好好好好好
</div>
<script type="text/javascript">
// 不想手动刷新,希望页面加载完毕的时候自动刷新
// 所以定义了一个匿名函数
(function(win,doc){
var fres=function(){
var html=doc.documentElement;
// 获取屏幕的宽
var w=html.clientWidth;
// console.log(w);
// fontsize设置成1/10大,即rem
// 设置fontsize
html.style.fontSize=w/10+‘px‘;
}
// 如果页面加载完毕就调用函数fres(),
// 否则监听页面加载完毕 ,且完毕后fres();
// 页面加载完毕判断方法是从jquery中提取的
if(document.readyState===‘complete‘){
fres();
}else{
document.addEventListener(‘DOMContentLoaded‘,fres,false);
}

win.addEventListener(‘resize‘,fres,false);
})(window,document)

</script>
</body>
</html>

时间: 2024-10-12 05:31:39

前端关于移动端屏幕适配的相关文章

移动端屏幕适配原理以及方法讲解

序言: 今天周日,我正坐在黄埔区图书馆,思索着关于移动端屏幕适配的问题.作为一名年纪轻轻的前端马蓉,不,是码农,移动端屏幕适配的方案的帖子没读过100篇吧,也读过几十篇了.可是今天我又在思考这个问题了,因为下周我有个关于移动端适配的演讲.人生这么短暂,我却把有限的时间奉献到了无限的前端道路上. 根据我不(cong)太(ming)灵(jue)活(ding)的大脑的努力思考.我发现现阶段比较流行移动端适配原理只有一个--就是对元素进行放大和缩小,具体到执行的时候方法有两个(求不打脸). 1个是网页大

移动端屏幕适配方案

本文来源:http://mp.weixin.qq.com/s?__biz=MjM5MTA1MjAxMQ==&mid=201811994&idx=1&sn=1c3bae60e2fe13d3bc3aeecaa6a4ef00&scene=23&srcid=abqLbfgvESx4DGNysdG8#rd pc上的网站在移动端上怎么办? 1:如果把移动端的可视区域(320-768)的话,大部分网站都会因为太窄而显示错乱: 2:所以浏览器默认把viewport设置为一个较宽的值

h5移动端屏幕适配

1.rem <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no&

移动端屏幕适配解决方案

因原在做移动端适配过程中,一直都是应用淘宝的flexible高清方案解决,也没有认真的去研究过源码.这几天又看到一些普通的适配方案,于是把两者源码放在一起比较,发现高清方案是通过动态的获取了当前设备的dpr值,然后根据dpr值的大小来设定手机的视口的缩放比例,从而实现高清.比如:dpr=2时,设定initial-scale = 0.5 ;  dpr=3时 ,设定initial-scale = 0.333 : 一.手机端viewport详解 <meta name="viewport"

谈谈移动端屏幕适配的几种方法

移动端web开发相对于PC端web开发,我们可以庆幸不用兼容那么多浏览器了,但是随之而来的却是各种屏幕尺寸的适配,个人觉得,比PC端还要费精力.在使用了腾讯优测进行软件测试后,问题得到了有效解决. 响应式布局 简而言之,就是页面元素的位置随着屏幕尺寸的变化而变化,通常会用百分比来定位,而在设计上需要预留一些可被“压缩”的空间. 如上图,其实就相当于页面被压矮了. Cover布局 就跟background-size的cover属性一样,保持页面的宽高比,取宽或高之中的较小者占满屏幕,超出的内容会被

web移动端屏幕适配方案

因为手机屏幕的分辨率大小不一 ,如果使用传统的静态布局,把每个元素的宽高样式写死,在不同的屏幕中就有各种各样的显示效果.这显然不是我们想要的结果.我们需要的是根据屏幕分辨率的不同,来适配不同的样式大小.使不同的手机分辨率下都有相同的样式布局 1.rem适配 1rem就是html标签font-size的大小,在rem适配方案中,我们以rem作为基值来设定元素的大小.1rem单位越大,元素的大小也就越大,1rem单位越小,元素的大小也就越小 实现方法:通过js获取屏幕的分辨率来动态设置1rem的大小

移动端屏幕适配viewport

一般,自适应移动端加这个语句即可 <meta name="viewport" content="width=device-width">但是,不知道为什么加了这个语句还是没用,查了查可能跟下面这几个元素有关系,所以可以尝试这样子加: <script> var viewportContent = ''; if (window.devicePixelRatio = 1) { viewportContent = 'width=device-widt

移动端屏幕适配问题

为了做移动适配,css3出了一个新单位rem,rem就是相对于根元素<html>的font-size来做计算,根目录一般用20px(一是方便计算,二是谷歌浏览器不支持12px以下的字体): html{font-size:20px},默认为20px: @media only screen and (max-width: 1220px) and (min-width: 992px){ html{ font-size: 50px; }} 意思就是屏幕的尺寸在992px和1220px范围内html的字

vue 移动端屏幕适配 使用rem

要想移动端适配 并使用 rem  您需要先看这篇文章,配置好less ?? 在vue 中使用 less,就可以使用rem了 如果项目已经开发的差不多了,没有用到rem 又要使用rem,您用这招. postcss-pxtorem:转换px为rem的插件 安装 postcss-pxtorem npm install postcss-pxtorem --save 新建rem.js文件 const baseSize = 32 // 设置 rem 函数 function setRem () { // 当前