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 相关文章推荐
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
vue+element实现动态加载表单
Dec 13 Vue.js
vue3自定义dialog、modal组件的方法
Jan 04 Vue.js
vue实现拖拽进度条
Mar 01 Vue.js
vue3.0封装轮播图组件的步骤
Mar 04 Vue.js
如何理解Vue前后端数据交互与显示
May 10 Vue.js
详解Vue中$props、$attrs和$listeners的使用方法
Feb 18 Vue.js
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
vue实现省市区联动 element-china-area-data插件
Apr 22 Vue.js
Vue ECharts实现机舱座位选择展示功能
May 15 Vue.js
vue @ ~ 相对路径 路径别名设置方式
Jun 05 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设计模式 Proxy (代理模式)
2011/06/26 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
分享PHP函数实现数字与文字分页代码
2015/07/28 PHP
修改WordPress中文章编辑器的样式的方法详解
2015/12/15 PHP
老生常谈php中传统验证与thinkphp框架(必看篇)
2017/06/10 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
Javascript脚本实现静态网页加密实例代码
2013/11/05 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
angularJS中router的使用指南
2015/02/09 Javascript
jQuery实现的输入框选择时间插件用法实例
2015/02/28 Javascript
最新最热最实用的15个jQuery插件汇总
2015/07/05 Javascript
JavaScript File API实现文件上传预览
2016/02/02 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
javascript 内存模型实例详解
2020/04/18 Javascript
eslint+prettier统一代码风格的实现方法
2020/07/22 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
python根据经纬度计算距离示例
2014/02/16 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
Django import export实现数据库导入导出方式
2020/04/03 Python
一款简洁的纯css3代码实现的动画导航
2014/10/31 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
一份Java笔试题
2012/02/21 面试题
保密工作实施方案
2014/02/24 职场文书
英语专业自荐书
2014/06/13 职场文书
青年标兵事迹材料
2014/08/16 职场文书
单位同意报考证明
2015/06/17 职场文书
优秀学生干部主要事迹材料
2015/11/04 职场文书