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 +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
Nov 18 Vue.js
vuex的数据渲染与修改浅析
Nov 26 Vue.js
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
Dec 04 Vue.js
Vue中ref和$refs的介绍以及使用方法示例
Jan 11 Vue.js
Vue单页面应用中实现Markdown渲染
Feb 14 Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
Vue CLI中模式与环境变量的深入详解
May 30 Vue.js
vue中利用mqtt服务端实现即时通讯的步骤记录
Jul 01 Vue.js
vue 实现弹窗关闭后刷新效果
Apr 08 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
vue 给数组添加新对象并赋值
Apr 20 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中使用CURL伪造来路抓取页面或文件
2011/05/04 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
利用PHP绘图函数实现简单验证码功能的方法
2016/10/18 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
巧用局部变量提升javascript性能
2014/02/24 Javascript
jQuery简单图表peity.js使用示例
2014/05/02 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
超简单的Vue.js环境搭建教程
2017/03/17 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
ES6/JavaScript使用技巧分享
2017/12/14 Javascript
Vue 引入AMap高德地图的实现代码
2019/04/29 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
Python中对象的引用与复制代码示例
2017/12/04 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
python 实现rolling和apply函数的向下取值操作
2020/06/08 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
小学岗位竞聘方案
2014/01/22 职场文书
设备售后服务承诺书
2014/05/30 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
初中数学教学反思范文
2016/02/17 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
mongodb的安装和开机自启动详细讲解
2021/08/02 MongoDB