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用mixin合并重复代码的实现
Nov 27 Vue.js
vue3+typeScript穿梭框的实现示例
Dec 29 Vue.js
基于VUE实现简单的学生信息管理系统
Jan 13 Vue.js
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 Vue.js
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
vue3.0中使用element的完整步骤
Mar 04 Vue.js
浅谈vue2的$refs在vue3组合式API中的替代方法
Apr 18 Vue.js
一文带你理解vue创建一个后台管理系统流程(Vue+Element)
May 18 Vue.js
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
vue修饰符.capture和.self的区别
Apr 22 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数组总结篇(一)
2008/09/30 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
php解析base64数据生成图片的方法
2016/12/06 PHP
php json_encode与json_decode详解及实例
2016/12/13 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
jQuery学习笔记之基础中的基础
2015/01/19 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
js控制li的隐藏和显示实例代码
2016/10/15 Javascript
详解使用fetch发送post请求时的参数处理
2017/04/05 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
ES6中new Function()语法及应用实例分析
2020/02/19 Javascript
python实现用于测试网站访问速率的方法
2015/05/26 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
python列表list保留顺序去重的实例
2018/12/14 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
python轮询机制控制led实例
2020/05/03 Python
Python3安装模块报错Microsoft Visual C++ 14.0 is required的解决方法
2020/07/28 Python
如何用Python提取10000份log中的产品信息
2021/01/14 Python
html5实现滑块功能之type=&quot;range&quot;属性
2020/02/18 HTML / CSS
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
巴西本土电商平台:Americanas
2020/06/21 全球购物
实习护士自我鉴定
2013/10/13 职场文书
大三毕业自我鉴定
2014/01/15 职场文书
2014镇党委班子对照检查材料思想汇报
2014/09/23 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
校运会班级霸气口号
2015/12/24 职场文书
浅析Python OpenCV三种滤镜效果
2022/04/11 Python
ConditionalOnProperty配置swagger不生效问题及解决
2022/06/14 Java/Android