移动端适配知识点

2018-12-17  本文已影响0人  神话降临

前言

大大小小做了十几个pc项目,感觉自己上可九天揽月,下可五洋捉鳖能得不行,但是仔细想一下在一个公司业务做的很6,好像并没有什么值得骄傲的,因为不同公司业务方向不同,其实还有很多都没有实战过的知识点,比如移动端,前端缓存,前端性能测试等一系列的东西,毕竟前端的丰富多样,总能给你不一样得惊喜,要学得还有很多,切不可骄傲自满……

移动端适配初探

关于rem适配原理的讲解

最初接触rem适配是在慕课网上 吕小鸣老师的rem适配秘籍,虽然讲的比较初级,讲真的听完之后还是很迷

可能也跟当时基础较差有关,不懂什么是媒体查询(听名字感觉很高大上),不懂什么是sass,现在回头看的时候感觉当时自己是真的菜

进入正题---记得老师举了一个例子以iphone6,7,8为例(375 * 667),ui给的2倍稿 750 * 1334,然后老师给了一个如下的scss函数

//scss
@function px2rem($px){
  $rem: 37.5px;
  @return ($px / $rem) + rem
}
//获取视窗宽度
let htmlWidth = document.documentElement.clientWidth || document.body.scrollWidth;
console.log(htmlWidth);

//获取视窗高度
let htmlDom = document.getElementsByTagName('html')[0];
//根据当前手机宽度设置字体大小
htmlDom.style.fontSize = htmlWidth / 10 + 'px';

当时看完之后楞是没有转过弯,为什么我把$rem定死成37.5px,如果是这样那么不管如何改变手机尺寸,px2rem函数返回得都是固定的值,那么这么写的意义在哪里???
直到再次看的时候才反应过来,返回相同的rem值有问题吗??? 那当然是没有问题的---只要根元素字号的px不同,宽度自然是不同的

举个例子,有一个div的设计稿宽度是100px,通过上面的px2rem返回的都是固定的值2.66667rem,这又如何能达到适配???

这次回头看视频,把视频讲的东西串起来,才恍然大悟,上面的第二部分代码就是动态的设置根字体的大小,而 1rem = html根字体的大小,不同大小的屏幕根字体的大小不一样,可不就达到适配的要求了吗

再讲一些大佬们都已经讲烂了的知识点

设备像素比 = 物理像素 / 设备独立像素

image.png

实战 vue + elementui + flexible.js

//px 转成 rem
@function px2rem($px){
  $rem: 37.5px;
  @return ($px / $rem) + rem
}

//混合宏设置字体
@mixin font-dpr($font-size){
  font-size: $font-size;

  [data-dpr="2"] & {
    font-size: $font-size * 2;
  }

  [data-dpr="3"] & {
    font-size: $font-size * 3;
  }
}

![传送门] (https://github.com/yourdear/mobile-first

上一篇 下一篇

猜你喜欢

热点阅读