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使用vant中的checkbox实现全选功能
Nov 17 Vue.js
vue3.0实现点击切换验证码(组件)及校验
Nov 18 Vue.js
Vue 简单实现前端权限控制的示例
Dec 25 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
详解vite+ts快速搭建vue3项目以及介绍相关特性
Feb 25 Vue.js
vue脚手架项目创建步骤详解
Mar 02 Vue.js
使用这 6个Vue加载动画库来减少我们网站的跳出率
May 18 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
vue使用wavesurfer.js解决音频可视化播放问题
Apr 04 Vue.js
Axios代理配置及封装响应拦截处理方式
Apr 07 Vue.js
vue2的 router在使用过程中遇到的一些问题
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手册及PHP编程标准
2006/12/17 PHP
php强制运行广告的方法
2014/12/01 PHP
详解php用static方法的原因
2018/09/12 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
JavaScript异步编程Promise模式的6个特性
2014/04/03 Javascript
用javascript关闭本窗口不弹出询问框的方法
2014/09/12 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
JavaScript编写带旋转+线条干扰的验证码脚本实例
2016/05/30 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
js实现一键复制功能
2017/03/16 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
基于hover的用法实例(推荐)
2017/07/04 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
2018/03/27 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
2018/08/31 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
python实现爬虫下载漫画示例
2014/02/16 Python
windows下ipython的安装与使用详解
2016/10/20 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
2018/06/11 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
Python爬虫爬取电影票房数据及图表展示操作示例
2020/03/27 Python
法律进社区实施方案
2014/03/21 职场文书
本科生自荐信
2014/06/18 职场文书
师德师风整改措施
2014/10/24 职场文书
委托书格式要求
2015/01/28 职场文书
教师年度个人总结
2015/02/11 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL
python turtle绘图
2022/05/04 Python