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加号&quot;+&quot;的二义性说明
Mar 04 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
Jun 20 Javascript
JavaScript实现级联菜单的方法
Jun 29 Javascript
jQuery toggle 代替方法
Mar 22 Javascript
Es6 写的文件import 起来解决方案详解
Dec 13 Javascript
利用NPM淘宝的node.js镜像加速nvm
Mar 27 Javascript
Vue网页html转换PDF(最低兼容ie10)的思路详解
Aug 24 Javascript
Angular angular-file-upload文件上传的示例代码
Aug 23 Javascript
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
Vue在 Nuxt.js 中重定向 404 页面的方法
Apr 23 Javascript
express框架中使用jwt实现验证的方法
Aug 25 Javascript
Flexible.js可伸缩布局实现方法详解
Nov 13 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 array_push 数组函数
2009/12/26 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
2016/11/15 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
JavaScript中的Document文档对象
2008/01/16 Javascript
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
比较简单的异步加载JS文件的代码
2009/07/18 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
2016/12/19 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
Angular.js ng-file-upload结合springMVC的使用教程
2017/07/10 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
浅谈layui里的上传控件问题
2019/09/26 Javascript
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
在Python的Django框架中获取单个对象数据的简单方法
2015/07/17 Python
python使用matplotlib绘制折线图教程
2017/02/08 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
分析Python中解析构建数据知识
2018/01/20 Python
python实现抽奖小程序
2020/04/15 Python
Python读取YAML文件过程详解
2019/12/30 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
迅雷Cued工作心得体会
2014/01/27 职场文书
大学生自我评价范文分享
2014/02/21 职场文书
小学生寒假家长评语
2014/04/16 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
幼儿园清明节活动总结
2014/07/04 职场文书
高中生第一学年自我鉴定
2014/09/12 职场文书
通报表扬范文
2015/01/17 职场文书
ktv服务员岗位职责
2015/02/09 职场文书
初中数学教学随笔
2015/08/15 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript