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 相关文章推荐
js 去掉空格实例 Trim() LTrim() RTrim()
Jan 07 Javascript
extJS中常用的4种Ajax异步提交方式
Mar 07 Javascript
JS数字抽奖游戏实现方法
May 04 Javascript
简单总结JavaScript中的String字符串类型
May 26 Javascript
javascript基础语法——全面理解变量和标识符
Jun 02 Javascript
js获取元素的标签名实现方法
Oct 08 Javascript
详解handlebars+require基本使用方法
Dec 21 Javascript
微信小程序 实战实例开发流程详细介绍
Jan 05 Javascript
js链表操作(实例讲解)
Aug 29 Javascript
详解如何去除vue项目中的#——History模式
Oct 13 Javascript
JS隐藏号码中间4位代码实例
Apr 09 Javascript
微信小程序 checkbox使用实例解析
Sep 09 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的无限分类实现想法~
2007/01/02 PHP
php中json_encode中文编码问题分析
2011/09/13 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
php微信公众平台开发之微信群发信息
2016/09/13 PHP
php简单统计中文个数的方法
2016/09/30 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
使用js获取QueryString的方法小结
2010/02/28 Javascript
Jquery事件的连接使用示例
2013/06/18 Javascript
Node.js中对通用模块的封装方法
2014/06/06 Javascript
JS简单计算器实例
2015/01/20 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
关于JS 预解释的相关理解
2016/06/28 Javascript
JS中用三种方式实现导航菜单中的二级下拉菜单
2016/10/31 Javascript
Bootstrap表单简单实现代码
2017/03/06 Javascript
AngularJS前端页面操作之用户修改密码功能示例
2017/03/27 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
微信小程序实现圆形进度条动画
2020/11/18 Javascript
Vue如何基于vue-i18n实现多国语言兼容
2020/07/17 Javascript
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
pycharm运行程序时在Python console窗口中运行的方法
2018/12/03 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
python实现飞行棋游戏
2020/02/05 Python
Python3和PyCharm安装与环境配置【图文教程】
2020/02/14 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
html5 Canvas画图教程(9)—canvas中画出矩形和圆形
2013/01/09 HTML / CSS
电气自动化个人求职信范文
2014/02/03 职场文书
销售人员职业生涯规划范文
2014/03/01 职场文书
幸福家庭标语
2014/06/27 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
思想作风整顿个人剖析材料
2014/10/06 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
师范生见习自我总结
2015/06/23 职场文书
Python利用FlashText算法实现替换字符串
2022/03/31 Python