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声明数组,对象在jsp页面中(获得ajax得到json数据)
Nov 05 Javascript
Seajs的学习笔记
Mar 04 Javascript
介绍一个简单的JavaScript类框架
Jun 24 Javascript
JS简单实现城市二级联动选择插件的方法
Aug 19 Javascript
JavaScript实现非常简单实用的下拉菜单效果
Aug 27 Javascript
js精美的幻灯片画集特效代码分享
Aug 29 Javascript
用NODE.JS中的流编写工具是要注意的事项
Mar 01 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
Mar 07 Javascript
基于Bootstrap+jQuery.validate实现表单验证
May 30 Javascript
Javascript封装id、class与元素选择器方法示例
Mar 13 Javascript
vue组件实现可搜索下拉框扩展
Oct 23 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 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
了解咖啡雨林联盟认证 什么是雨林认证 雨林认证是什么意思
2021/03/05 新手入门
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
PHP+Mysql树型结构(无限分类)数据库设计的2种方式实例
2014/07/15 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP回调函数简单用法示例
2019/05/08 PHP
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
JS事件Event元素(兼容IE,Firefox,Chorme)
2012/11/01 Javascript
javascript判断非数字的简单例子
2013/07/18 Javascript
javascript制作坦克大战全纪录(1)
2014/11/27 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
2015/09/21 Javascript
JS实现DIV容器赋值的方法
2015/12/14 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
jquery实现表格中点击相应行变色功能效果【实例代码】
2016/05/09 Javascript
jquery选择器中的空格与大于号&gt;、加号+与波浪号~的区别介绍
2016/06/24 Javascript
利用JavaScript的%做隔行换色的实例
2017/11/25 Javascript
JavaScript的数据类型转换原则(干货)
2018/03/15 Javascript
解决vue 表格table列求和的问题
2019/11/06 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
[01:32]DOTA2上海特锦赛现场采访:最想COS的英雄
2016/03/25 DOTA
Python将主机名转换为IP地址的方法
2019/08/14 Python
python关于变量名的基础知识点
2020/03/03 Python
Python基于pyjnius库实现访问java类
2020/07/31 Python
python 绘制国旗的示例
2020/09/27 Python
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
澳大利亚在线时尚精品店:Hello Molly
2018/02/26 全球购物
MATCHESFASHION.COM美国官网:英国奢侈品零售商
2018/10/29 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
大学同学聚会邀请函
2014/01/19 职场文书
考试没考好检讨书
2014/01/31 职场文书
音乐兴趣小组活动总结
2014/07/07 职场文书
党员考试作弊检讨书1000字
2015/02/16 职场文书
2019年房屋委托租赁合同范本(通用版)!
2019/07/17 职场文书
Java完整实现记事本代码
2022/06/16 Java/Android