vue-cli中实现响应式布局的方法


Posted in Vue.js onMarch 02, 2021

我们在进行前端开发中必然会遇到PC与移动端的适配,面对这样的问题有些公司会准备两个页面,移动是移动,PC是PC,而响应式布局就是根据用户不同的机型展示不同的页面,废话不多说,直接贴代码

首先我们这个功能是借助vuex实现的,没下载的小伙伴可以先下一个

yarn add vuex

既然是响应式布局就要准备两套css,一个是PC端的css,一个是移动端的css,我们暂且将PC端的样式称为computer,移动端的样式称为mobile

我们首先要做的就是当前屏幕的宽度

state: {
  screenWidth: document.documentElement.clientWidth,
  screenHeight: document.documentElement.clientHeight
 }

这是vuex的state,我们后续还要实时监控屏幕宽度,所以还需要提供一个改变screenWidth的方法,于是我又写了一mutations

mutations: {
  setWidth (state, value) {
   state.screenWidth = value
  },
  setHeight (state, value) {
   state.screenHeight = value
  }
 }

这样我们的vuex的文件就写好了,而后就是APP.vue,我们需要在这个文件下添加一个window.onresize事件实时更新vuex中的screenWidth值,在这里我们使用了辅助函数

import { mapState, mapMutations } from 'vuex'

在mounted钩子函数中添加事件

mounted () {
  window.onresize = () => { 
   this.setWidth(document.documentElement.clientWidth) 
  }
}

这样好比说我们网页中的导航,移动端时我们需要它在底部,PC端时我们需要它在顶部,这样我们就可以在nav.vue这个组件中用watch或computed监听screenWidth的值,这里我们用的是computed

<ul :class="computedPhone">//根据screenWidth提供不同的class名
   <router-link to='/file' tag="li" active-class="active">电影</router-link>
   <router-link to='/cinma' tag="li" active-class="active">影院</router-link>
   <router-link to='/center' tag="li" active-class="active">个人中心</router-link>
</ul>
computed: {
  ...mapState('stylesheet', ['screenWidth']),
  computedPhone () {
   if (this.screenWidth < 1024) {
    return 'mobile'
   } else {
    return 'computer'
   }
  }
 }

这样只要写好两套css就可以实现响应式布局了

到此这篇关于vue-cli中实现响应式布局的方法的文章就介绍到这了,更多相关vue-cli 响应式布局内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
Vue开发中常见的套路和技巧总结
Nov 24 Vue.js
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
如何在vue中使用video.js播放m3u8格式的视频
Feb 01 Vue.js
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
vue实现锚点定位功能
Jun 29 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
Vue实现导入Excel功能步骤详解
Jul 03 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
教你部署vue项目到docker
Apr 05 Vue.js
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
vue实现登陆页面开发实践
May 30 Vue.js
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 #Vue.js
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 #Vue.js
vue实现拖拽进度条
Mar 01 #Vue.js
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 #Vue.js
vue前端和Django后端如何查询一定时间段内的数据
Feb 28 #Vue.js
vue-router路由懒加载及实现的3种方式
Feb 28 #Vue.js
vue-router懒加载的3种方式汇总
Feb 28 #Vue.js
You might like
php+mysql实现无限级分类 | 树型显示分类关系
2006/11/19 PHP
PHP include_path设置技巧分享
2011/07/03 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
php查看请求头信息获取远程图片大小的方法分享
2013/12/25 PHP
最常用的8款PHP调试工具
2014/07/06 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
php判断类是否存在函数class_exists用法分析
2014/11/14 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
js验证表单大全
2006/11/25 Javascript
javascript 冒号 使用说明
2009/06/06 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
配置nodejs环境的方法
2017/05/13 NodeJs
layui选项卡效果实现代码
2017/05/19 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
javascript实现电脑和手机版样式切换
2017/11/10 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
vue+axios 拦截器实现统一token的案例
2020/09/11 Javascript
python使用psutil模块获取系统状态
2016/08/27 Python
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
Python的多维空数组赋值方法
2018/04/13 Python
通过python将大量文件按修改时间分类的方法
2018/10/17 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
python实现视频读取和转化图片
2019/12/10 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
jupyter notebook读取/导出文件/图片实例
2020/04/16 Python
行政专员工作职责
2013/12/22 职场文书
大学生职业生涯规划范文
2014/01/08 职场文书
品质标语大全
2014/06/21 职场文书
2016年政治理论学习心得体会
2016/01/25 职场文书