vue中移动端适配

最近需要完全新建vue项目,基于vue-cl3搭建项目框架时,又开始纠结px,rem等单位问题,看了很多博客

目前最好用的单位是rem、vw

目前最常用的适配方案是:

普通元素:按照设计稿大小,使用px,再利用工具转化为rem

font字体大小:使用px不进行rem转化,对不同的dpr分别设置大小,类似如下:

div {
    width: 1rem;
    height: 0.4rem;
    font-size: 12px; // 默认写上dpr为1的fontSize
}
[data-dpr="2"] div {
    font-size: 24px;
}
[data-dpr="3"] div {
    font-size: 36px;
}  

为了方便,可利用less,sass的函数

@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;
    }
}  

图片: 在高清手机下,对图片清晰度要求比较高时,图片切为二倍图2x和三倍图3x,对不同的dpr使用不同大小的图片,类似如下

// 背景图片,此方法是stylus的写法,仅供理解
bg-image($url)
  background-image: url($url + "@2x.png")
  @media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3)
    background-image: url($url + "@3x.png")  

以下为:在vue-cli3构建的项目中使用rem

vue中使用rem,最终选择的方案是lib-flexible+px2rem-loader

使用rem最关键的两个步骤便是:动态设置html的font-size大小和把设计稿的px手动转化为rem

lib-flexible会自动在html的head中添加一个meta name="viewport"的标签,同时会自动设置html的font-size为屏幕宽度除以10
所以若屏幕宽度为414,html的font-size的大小自动设置为41.4px

由此lib-flexible便解决了动态设置html的font-size大小的问题,同时由于会自动设置meta 标签,所以以前我们喜欢在移动端加的meta便不需要自己添加了

px2rem-loader可以把px转化为rem,配置好后只需要按设计稿大小写px就行了,不需要考虑转为rem的问题

以下为vue-cli3中的配置:

1.安装

npm install lib-flexible --save
npm install px2rem-loader --save

2、引入lib-flexible

在项目入口文件main.js 中引入lib-flexible

import ‘lib-flexible‘

3、去掉目标文件的index.html头里的meta标签。

public/index.html中去掉此行代码

4.vue.config.js中配置css.loaderOptions

module.exports = { 

css: {
    loaderOptions: {
        postcss: {
            plugins: [
                require(‘postcss-plugin-px2rem‘)({
                    rootValue: 75, //换算基数, 默认100
                    // unitPrecision: 5, //允许REM单位增长到的十进制数字。
                    //propWhiteList: [],  //默认值是一个空数组,这意味着禁用白名单并启用所有属性。
                    // propBlackList: [], //黑名单
                    exclude: /(node_module)/,  //默认false,可以(reg)利用正则表达式排除某些文件夹的方法,例如/(node_module)/ 。如果想把前端UI框架内的px也转换成rem,请把此属性设为默认值
                    // selectorBlackList: [], //要忽略并保留为px的选择器
                    // ignoreIdentifier: false,  //(boolean/string)忽略单个属性的方法,启用ignoreidentifier后,replace将自动设置为true。
                    // replace: true, // (布尔值)替换包含REM的规则,而不是添加回退。
                    mediaQuery: false,  //(布尔值)允许在媒体查询中转换px。
                    minPixelValue: 3 //设置要替换的最小像素值(3px会被转rem)。 默认 0
                })
            ]
        }
    }
},
}

此时rootValue为75是因为设计稿为750px,为375的二倍设计图
若在375下:html,font-size会被设置为:37.5px
设计稿上div的width为750px,我们在css中就直接写750px;
计算结果为:750/75*37.5=375px,刚好符合我们的预期
所以rootValue大小根据设计稿尺寸/10,若设计稿宽度为375px,rootValue: 37.5

vw的还没研究好,以后再记录啦

原文地址:https://www.cnblogs.com/Anne3/p/11214040.html

时间: 2024-08-28 18:27:55

vue中移动端适配的相关文章

vue rem移动端适配

p.p1 { margin: 0.0px 0.0px 0.0px 36.0px; font: 14.0px Tahoma; color: #e36c0a; background-color: #ffffff } p.p2 { margin: 0.0px 0.0px 0.0px 36.0px; font: 12.0px "PingFang SC"; color: #000000; background-color: #d9d9d9 } p.p3 { margin: 0.0px 0.0px

vue中移动端自适应的postcss-plugin-px2rem插件

flexible 主要是用来响应式改变根元素的字体大小 安装命令 npm install lib-flexible --save 在main.js里面导入命令import 'lib-flexible' 要把index.html里面的<meta name='viewport'>标签删除;因为会自动添加 postcss-plugin-px2rem配置内容解释 安装命令 npm i --save postcss-plugin-px2rem 创建一个名为vue.config.js的文件写入 model

如何在Vue项目中使用vw实现移动端适配

https://www.w3cplus.com/mobile/vw-layout-in-vue.html  原文网址 如何在Vue项目中使用vw实现移动端适配 作者:大漠 日期:2018-01-25 点击:10362 vw Layout 布局 Vue mobile 编辑推荐:使用 Coding.net 搭建静态博客,自定义域名,全站 HTTPS 加密,自动实时部署, 立即托管您的网站! 有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页

转:如何在Vue项目中使用vw实现移动端适配

https://www.w3cplus.com/mobile/vw-layout-in-vue.html 有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着viewport单位越来越受到众多浏览器的支持,因此在<再聊移动端页面的适配>一文中提出了vw来做移动端的适配问题.到目前为止不管是哪一种方案,都还存在一定的缺陷.言外之意,还没有哪一个方案是完美的. 事实上真的不完美

基于vue-cli3的vue项目移动端样式适配,lib-flexible和postcss-px2rem

1,安装 flexible和 postcss-px2rem(命令行安装) npm install lib-flexible --save npm install postcss-px2rem --save 简要介绍这两个包的用途: flexible会为页面根据屏幕自动添加<meta name='viewport' >标签,动态控制initial-scale,maximum-scale,minimum-scale等属性的值. 例如在Galaxy S III: 例如在iphone6/7/8: po

移动端固定头部和固定左边第一列的实现方案(Vue中实现demo)

最近移动端做一份报表,需要左右滚动时,固定左边部分:上下滚动时,固定头部部分. 代码在Vue中简单实现 主要思路是: a.左边部分滚动,实时修改右边部分的滚动条高度 b.头部和内容部分都设置固定高度,当内容部分内容高度大于设置的高度时,产生滚动条 c.左右部分也设置固定宽度,左边设置固定宽度,右边设置成窗口的宽度减去左边部分的宽度,当右边部分的宽度大于设置的宽度时产生滚动条 扩展思路: a.监控左右(x)滚动条滚动到右边边缘时,可以触发事件(如:加载下一批数据) b.监控上下(y)滚动条滚动到下

Vue在移动端App中使用的问题总结

1.客户端中弹出键盘使得fixed布局错乱 Vue 在移动端中使用,当弹出键盘时,fixed 布局的元素可能会被键盘顶起. 例子图示及解决方法参考:https://blog.csdn.net/qq_31929931/article/details/92838497 2.Vue 中使用 BScroll 在 Vue 中使用 BScroll,控制 bscroll 的隐藏显示必须用v-show,不能用v-if,否则会报错. 原文地址:https://www.cnblogs.com/wenxuehai/p

vue.js移动端app实战1

本系列将会用vue.js2制作一个移动端的webapp单页面,页面不多,大概在7,8个左右,不过麻雀虽小,五脏俱全,常用的效果如轮播图,下拉刷新,上拉加载,图片懒加载都会用到.css方面也会有一些描述,像不同分辨率的适配,flex布局以及scss来编写mixin来处理2x,3x图等. 初始工作: 通过vue-cli安装webpack模板后,会自动生成一大堆文件,通常我们只关心src/目录下的东西.个人习惯在src下新建一个base目录,用来存放通用的css及js,比如样式重置css,一切js工具

移动端适配方案研究

初次接触移动端的时候,以为终于可以不用像pc那样考虑令人头疼的ie浏览器兼容问题,有强大的css3的帮助,可以随心所欲..可是后来才发现原来移动端各种层次不齐的终端更会让人抓耳挠腮,同样的页面在不同的手机上显示的完全不一样的效果,于是抛开功能,页面适配性也成了一个大的课题. 说到移动端,下面这一行代码大家一定不陌生: <meta name="viewport" content="width=device-width, initial-scale=1, maximum-s