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 相关文章推荐
jQuery的slideToggle方法实例
May 07 Javascript
js判断横竖屏及禁止浏览器滑动条示例
Apr 29 Javascript
使用focus方法让光标默认停留在INPUT框
Jul 29 Javascript
jQuery绑定自定义事件的魔法升级版
Jun 30 Javascript
web.js.字符串与正则表达式操作
May 13 Javascript
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
原生JS实现列表子元素顺序反转的方法分析
Jul 02 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
Aug 31 Javascript
Vue-CLI3.x 设置反向代理的方法
Dec 06 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
Feb 19 Javascript
jquery简单实现纵向的无缝滚动代码实例
Apr 01 jQuery
浅谈如何优雅处理JavaScript异步错误
Nov 12 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
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
2008/03/28 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
2013/04/24 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
php删除左端与右端空格的方法
2014/11/29 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
jQuery筛选器children()案例详解(图文)
2013/02/17 Javascript
JavaScript的arguments对象应用示例
2014/09/15 Javascript
使用coffeescript编写node.js项目的方法汇总
2015/08/05 Javascript
jQuery ajax应用总结
2016/06/02 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
微信小程序进入广告实现代码实例
2019/09/19 Javascript
python数据结构之列表和元组的详解
2017/09/23 Python
python实现闹钟定时播放音乐功能
2018/01/25 Python
详解python中的装饰器
2018/07/10 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
python语言基本语句用法总结
2019/06/11 Python
django多文件上传,form提交,多对多外键保存的实例
2019/08/06 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
wxpython+pymysql实现用户登陆功能
2019/11/19 Python
Python 写了个新型冠状病毒疫情传播模拟程序
2020/02/14 Python
python mongo 向数据中的数组类型新增数据操作
2020/12/05 Python
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
给儿子的表扬信
2014/01/15 职场文书
大学生职业生涯规划书模板
2014/01/18 职场文书
计算机求职信
2014/07/02 职场文书
小学元宵节活动总结
2015/02/06 职场文书
background-position百分比原理详解
2021/05/08 HTML / CSS
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL