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编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
详解Vue2的diff算法
Jan 06 Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
vue.js实现点击图标放大离开时缩小的代码
Jan 27 Vue.js
vue 实现click同时传入事件对象和自定义参数
Jan 29 Vue.js
Vue 实现可视化拖拽页面编辑器
Feb 01 Vue.js
vue基于Teleport实现Modal组件
May 31 Vue.js
教你部署vue项目到docker
Apr 05 Vue.js
vue实现可以快进后退的跑马灯组件
Apr 08 Vue.js
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 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数组实例总结与说明
2011/08/23 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
document.compatMode介绍
2009/05/21 Javascript
javascript 关闭IE6、IE7
2009/06/01 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
jquery text(),val(),html()方法区别总结
2013/11/04 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
JS实现的表格行鼠标点击高亮效果代码
2015/11/27 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
BootStrap table表格插件自适应固定表头(超好用)
2016/08/24 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
详解js的六大数据类型
2016/12/27 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
vue 2.0封装model组件的方法
2017/08/03 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
2018/09/28 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
2019/01/08 Javascript
[02:09:59]火猫TV国士无双dota2 6.82版本详解(下)
2014/09/29 DOTA
[00:58]PWL开团时刻DAY5——十人开雾0换5
2020/11/04 DOTA
tensorflow 获取模型所有参数总和数量的方法
2018/06/14 Python
Python基于多线程实现ping扫描功能示例
2018/07/23 Python
python实现简单的文字识别
2018/11/27 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
浅谈keras中的keras.utils.to_categorical用法
2020/07/02 Python
python之语音识别speech模块
2020/09/09 Python
中药专业自荐信范文
2014/03/18 职场文书
毕业寄语大全
2014/04/09 职场文书
环保标语大全
2014/06/12 职场文书
社区助残日活动总结
2014/08/29 职场文书
幼儿园2015年度工作总结
2015/04/01 职场文书
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis
详解nginx安装过程并代理下载服务器文件
2022/02/12 Servers
无线电知识基础入门篇
2022/02/18 无线电