vue移动端屏幕适配详解


Posted in Javascript onApril 30, 2019

flexible

vue移动端屏幕适配,查看项目地址

效果预览

# 项目clone
git clone git@github.com:NicolasGui/flexible.git

# 进入项目目录
cd flexible

# 安装依赖
npm install

# 启动服务 localhost:8080
npm run dev

原理概述

插件安装

# 插件一:amfe-flexible
npm install amfe-flexible --save
#  插件二: node-sass
npm install amfe-flexible --save  # 同时,在main.js文件内引入
npm install sass-loader --save

编写js处理方法

在utils目录下创建flex.js文件,内容如下:

import Vue from 'vue'
Vue.prototype.$setTitle = function (text) {
 document.title = text
}
Vue.prototype.$getPX = function (design, designWidth = 750) { // 750为设计稿宽度
 // 获取窗口尺寸
 let width = document.documentElement.getBoundingClientRect().width
 // 计算缩放比例
 let scale = width / designWidth
 // 获取实时尺寸
 return design * scale
}

同时,在main.js文件内引入该js文件

import Vue from 'vue'
import App from './App'
import router from './router'
import 'amfe-flexible'
import './utils/flex'
Vue.config.productionTip = false

new Vue({
 el: '#app',
 router,
 components: { App },
 template: '<App/>'
})

编写css处理方法

在src目录创建styles目录,同时在该目录新增common.scss文件,内容如下:

body,div,ul,ol,dl,li,dt,dd,h1,h2,h3,h4,p,form,iframe,input,textarea,a,span,em,strong,img,html,nav,header,article,button,footer,var {
 padding:0;
 margin:0;
}
body { font:12px/1.2rem "Microsoft YaHei",tahoma,arial,sans-serif;min-width:320px;position:relative; }
form,input {background:none;border:none;}
ul,dl,ol {list-style-type:none;}
h1, h2, h3, h4, h5 { font:12px/1.2rem "Microsoft YaHei",arial,tahoma; }
a { text-decoration:none; }
a:hover,a:focus { outline:none; }
table { border-collapse:collapse;border-spacing:0; }
img { border:none; }
strong,b { font-weight:normal; }
em,i,var { font-style:normal; }
p { text-indent:0; }
.clear { clear:both;height:0;line-height:0;overflow:hidden;width:0; }
.clearfix:after { clear:both;content:".";display:block;font-size:0;height:0;visibility:hidden; }
 // 尺寸转换
 @function px2rem($px, $base-font-size: 75px) { /*设计稿宽度为750,因此此处为75*/
 @if (unitless($px)) {
  @return px2rem($px + 0px); 
 } @else if (unit($px) == rem) {
  @return $px;
 }
 @return ($px / $base-font-size) * 1rem;
 }
 // 字体转换
 @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;
 }
 }

css内使用

<style scoped lang='scss'>
 @import '../styles/common.scss';
 .content{
  width:px2rem(750); /*750为设计稿实际尺寸*/
  font-size:px2rem(20) /*20为设计稿实际尺寸*/
</style>

js内使用

export default {
 name:'test',
 data() {
  return {
  w:0;
  }
 },
 watch:{
  getWidth() {
   this.w=this.$getPX(500);
  }
  }
 },
 computed: {
  fun() {
  return (this.w/this.$getPX(500)*100).toFixed(2) + '';
  }
 }
 }

以上所述是小编给大家介绍的vue移动端屏幕适配详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Javascript 不能释放内存.
Sep 07 Javascript
js数组Array sort方法使用深入分析
Feb 21 Javascript
javascript中的取反再取反~~没有意义
Apr 06 Javascript
node.js中的buffer.toString方法使用说明
Dec 14 Javascript
jQuery实现视频作为全屏幕背景
Dec 18 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
JS实现动画兼容性的transition和transform实例分析
Dec 13 Javascript
Bootstrap modal使用及点击外部不消失的解决方法
Dec 13 Javascript
原生js实现类似fullpage的单页/全屏滚动
Jan 22 Javascript
JS交互点击WKWebView中的图片实现预览效果
Jan 05 Javascript
jQuery实现的老虎机跑动效果示例
Dec 29 jQuery
原生JavaScript创建不可变对象的方法简单示例
May 07 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
Apr 30 #Javascript
微信小程序时间戳转日期的详解
Apr 30 #Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
Apr 30 #Javascript
vue自动路由-单页面项目(非build时构建)
Apr 30 #Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 #Javascript
微信小程序页面间传值与页面取值操作实例分析
Apr 30 #Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
Apr 30 #Javascript
You might like
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
php简单判断两个字符串是否相等的方法
2015/07/13 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
关于ThinkPHP中的异常处理详解
2018/05/11 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
vue-cli webpack模板项目搭建及打包时路径问题的解决方法
2018/02/26 Javascript
微信小程序http连接访问解决方案的示例
2018/11/05 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
微信小程序停止其他视频播放当前视频的实例代码
2019/12/25 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
2015/04/16 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
Python中反射和描述器总结
2018/09/23 Python
Python面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
2019/01/05 Python
关于Python内存分配时的小秘密分享
2019/09/05 Python
Python3运算符常见用法分析
2020/02/14 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
如何完美的建立一个python项目
2020/10/09 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
美国休闲服装品牌:Express
2016/09/24 全球购物
英国家用电器购物网站:Hughes
2018/02/23 全球购物
委托与事件是什么关系?为什么要使用委托
2014/04/18 面试题
大学生毕业求职简历的自我评价
2013/10/24 职场文书
教师岗位职责范本
2013/12/29 职场文书
党员公开承诺践诺书
2014/03/25 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
浅析Python实现DFA算法
2021/06/26 Python
MySQL空间数据存储及函数
2021/09/25 MySQL
Golang解析JSON对象
2022/04/30 Golang