最近在和设计沟通关于设计图尺寸大小和前端实际页面尺寸大小不一致的情况,我们的UI设计是使用的iPone6的,(iphone6:    375px*667px  实际像素:750px*1334px)如果按照她给的尺寸直接复制那么你的页面尺寸就是一个放大镜,正常人都知道那是不对的,我在做的时候有两种解决办法:

  一、UI设计尺寸定基数

    可以和UI沟通在给你的标记尺寸大小时候,让她基于一个数值,一般是16px。给你标注的时候选择保留两个小数,给你标注成px或者rem。

    开发者这时候需要配置开发者工具了,我使用的是 Visual Studio Code,需要安装插件cssrem,安装完成时候再次重启,可以看到px和rem的转换。

二、使用lib-flexible适配UI尺寸

    使用lib-flexible.js需要在开始引入可以npm引入或者html引入。

    使用lib-flexible.js需要注释:html中的

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

    html引入:

      引入地址:https://github.com/821945617/tools下载lib-flexible.js

      使用这种引入方式需要计算px与rem的兑换公式,如果一个div的宽度在iPone6设计稿上面为200px,那么750/10 = 75 ,实际rem就是200/75 = 2.666667rem,即这个公式是:

        需转换的px值 / 设计稿宽度px值 * 10

    npm引入

npm install lib-flexible --save

import "lib-flexible" // 在main.js引入

      需要安装px转rem插件安装px2rem-loader自动将px转换为rem

npm install px2rem-loader --save-dev

    接下来就是配置px2rem

       在build/uitils.js中添加配置

exports.cssLoaders = function (options) {
options = options || {} const cssLoader = {
loader: 'css-loader',
options: {
sourceMap: options.sourceMap,
importLoader: 2 // 在css-loader前引用的loader的数目,默认为0,如果不加,那么@important的外部文件不能正常转换,如果还不行,试着调大字数
}
}
const px2remLoader = {
loader: 'px2rem-loader',
options: {
emUnit: 75 // 设计稿的1/10
}
}

   在下面的generateLoaders方法配置:

  function generateLoaders (loader, loaderOptions) {
const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}

安装px2rem后使用px有些变化,主要有三个方面需要注意:

  1、直接写px,编译后会直接转化成rem —- 除开下面两种情况,其他长度用这个

  2、在px后面添加/no/,不会转化px,会原样输出。 — 一般border需用这个

  3、在px后面添加/px/,会根据dpr的不同,生成三套代码。—- 一般字体需用这个

  示例代码

  

.div{
width: 150px;
height: 64px; /*px*/
font-size: 28px; /*px*/
border: 1px solid #ddd; /*no*/
}

这样基本配置就完成了,重启项目就可以使用lib-flexible+rem编写移动端页面了

  注意:以下是使用了UI框架字体缩小配置

      这里有个问题,如果你使用了UI框架,引入框架的样式会字体很小,这时候就需要手动转px变rem了。

    首先删除px2remLoader 修改配置 在build/uitils.js中generateLoaders方法配置px2remLoader删除

    

// const px2remLoader = {
// loader: 'px2rem-loader',
// options: {
// emUnit: 75 // 设计稿的1/10
// }
// }
function generateLoaders (loader, loaderOptions) {
const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
if (loader) {
loaders.push({
loader: loader + '-loader',
options: Object.assign({}, loaderOptions, {
sourceMap: options.sourceMap
})
})
}

  一、卸载postcss-px2rem(如果有)

  

npm  uninstall postcss-px2rem --save-dev

  二、安装postcss-px2rem-exclude

npm install postcss-px2rem-exclude --save

  三、正确的配置位置是项目根目录下的postcss.config.js(或者是postcss.js)文件,如果你的项目没有生成这个独立文件,就需要在你的package.json里设置。

  

module.exports = {
'plugins': {
'postcss-px2rem-exclude': {
remUnit: 75,
exclude: /node_modules|folder_name/i
}
}
}

  四、html添加<meta></meta>

    这时仍需要自适应适配meta

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

  编辑器

  这里你可以使用手动转rem的插件或者自动插件

   1、手动插件px to rem

  

  在Vscode插件px to rem的扩展配置设置中,如果设计图是750px确保这里是75。使用快捷键ALT+Z可以转化为rem

  2、自动插件px2rem

  

使用lib-flexible.js适配移动端UI设计750px设计图的更多相关文章

  1. 使用手淘flexible.js适配移动端布局

    下载flexible: https://github.com/amfe/lib-flexible //未压缩版 (function flexible (window, document) { var ...

  2. 移动端适配插件(flexible.js)

    ;(function(win, lib) { var doc = win.document; var docEl = doc.documentElement; var metaEl = doc.que ...

  3. vue.js移动端配置flexible.js

    前言 最近在用vue做移动端项目,网上找了一些移动端适配的方案,个人觉得手淘团队flexible.js还是比较容易上手,在这里做下总结. 主体 flexible.js适配方案采用rem布局,根据屏幕分 ...

  4. 配合sublime使用flexible.js实现微信开发页面自适应

    什么是flexible.js 是一个终端设备适配的解决方案.也就是说它可以让你在不同的终端设备中实现页面适配. 是一个用来适配移动端的javascript框架.根据宽度的不同设置不同的字体大小,样式间 ...

  5. 解决手淘lib-flexible.js在移动端首次加载页面页面先放大后正常问题

    例如这样 然后这样 出现这样的原因一般是   静态的,即html里有一些静态的(即非js动态添加的) 如果在页面加载完成后,页面是用js动态添加的,这个问题就不太明显, doc.addEventLis ...

  6. 移动端 750px UI 设计稿

    750px UI 设计稿 App 小程序 H5 rem & vh/vw 在移动端页面开发中,UI 一般会用750px(iphone 6)来出设计稿; 然后要求能够做到页面是自适应屏幕的,这种情 ...

  7. 移动端适配--flexible.js

    引言: H5适配一直是一个比较普遍的问题,很多文章都会讲,最近开发了一个H5的项目使用了一下淘宝的 flexible.js,写一篇文章自己总结一下. 一.背景介绍: Flexible.js是淘宝公开的 ...

  8. 移动端适配方案 flexible.js

    前言 移动端适配一直以来都是前端开发中不可或缺的重要组成部分,如果没有了它,那么你做出来的页面极有可能会出现各种意外(写出来的页面与设计稿之间的差别).所有我们得找到一种相对来说让人比较满意的解决方案 ...

  9. 从flexible.js引入高德地图谈起的移动端适配

    曾几何时,前端还仅仅是PC端的.随着移动时代的兴起,h5及css3的推陈出新.前端的领域慢慢的由传统的pc端转入了移动端,这也导致了前端这一职业在风口的一段时间出尽了风头. 从开始的惶恐和无从下手,慢 ...

随机推荐

  1. SpringBoot SpringCloud版本对应

  2. Shiro learning - 认证流程(3)

    Shiro认证流程 在学习认证流程之前,你应该先了解Shiro的基本使用流程 认证 身份认证: 证明用户是谁.用户需要提供相关的凭证principals(身份标识)和Credentials (凭证,证 ...

  3. Redis(十四)Redis 在Java Web 中的应用

    在传统的 Java Web 项目中,使用数据库进行存储数据,但是有一些致命的弊端,这些弊端主要来自于性能方面. 由于数据库持久化数据主要是面向磁盘,而磁盘的读/写比较慢,在一般管理系统中,由于不存在高 ...

  4. Spring(二)装配Spring Bean

    控制反转的概念:控制反转是一种通过描述(在Java中或者是XML或者注解)并通过第三方去产生或获取特定对象的方式. 在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependenc ...

  5. fenby C语言P24

    #include <stdio.h> int main(){ char cArr[]={'I','L','O','V','E','C'}; char sArr[]="ilovec ...

  6. WEB安全的历史

    exp  ===  exploit     漏洞利用代码 中国 黑客发展的 几个阶段  启蒙时代  ,黄金时代 ,黑暗时代 启蒙时代  -- 大致在 20世纪 19年代 中国互联网刚起步  一些青年收 ...

  7. NOIP模拟 12

    今天过的还真是心态炸裂.. 还是莫提了吧,今日之果一定对应着今日之因. 考试前非常心虚,莫名其妙地产生了一种紧张感(????)然后果然就在T1卡题了... T1想到了减去前一项的菲波数,但是没想到交替 ...

  8. Linux下安装nexus

    下载地址:https://help.sonatype.com/repomanager3/download tar xf nexus-linux-3.19.1-01.tar.gz cd nexus-li ...

  9. Eclipse下载安装并运行第一个Hello world(详细)

    Eclipse下载安装并运行第一个Hello world(详细) 1.下载安装和配置JDK JDK详细的安装教程参考:https://www.cnblogs.com/mxxbc/p/11845150. ...

  10. MySQL系列:MySQL的基本使用

    数据库的基本操作 在MySQL数据库中,对于一个MySQL示例,是可以包含多个数据库的. 在连接MySQL后,我们可以通过 show databases; 来进行查看有那么数据库.这里已经存在一些库了 ...