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 String 对象
Apr 25 Javascript
js中将URL中的参数提取出来作为对象的实现代码
Aug 16 Javascript
在浏览器窗口上添加遮罩层的方法
Nov 12 Javascript
Jquery实现自定义弹窗示例
Mar 12 Javascript
Javascript类型转换的规则实例解析
Feb 23 Javascript
jQuery实现的自定义滚动条实例详解
Sep 20 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
Oct 26 Javascript
JS实现的四级密码强度检测功能示例
May 11 Javascript
Vue框架中正确引入JS库的方法介绍
Jul 30 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
Sep 28 Javascript
node+multer实现图片上传的示例代码
Feb 18 Javascript
Vue中使用JsonView来展示Json树的实例代码
Nov 16 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
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
简单解析PHP程序的运行流程
2016/06/23 PHP
php中str_pad()函数用法分析
2017/03/28 PHP
PHP中关键字interface和implements详解
2017/06/14 PHP
Jquery利用mouseenter和mouseleave实现鼠标经过弹出层且可以点击
2014/02/12 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(一)之数据支持json字符串、list集合
2016/08/11 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
JS中call和apply函数用法实例分析
2018/06/20 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
JS严格模式原理与用法实例分析
2020/04/27 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
2020/11/11 Javascript
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
2018/05/22 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
Python Scrapy图片爬取原理及代码实例
2020/06/12 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
个人安全生产承诺书
2014/05/22 职场文书
学校志愿者活动总结
2014/06/27 职场文书
个人简历求职信范文
2015/03/20 职场文书
2015年党员个人工作总结
2015/05/13 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
python 实现体质指数BMI计算
2021/05/26 Python
python for循环赋值问题
2021/06/03 Python
利用Python实时获取steam特惠游戏数据
2022/06/25 Python