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动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
Vue在H5 项目中使用融云进行实时个人单聊通讯
Dec 14 Vue.js
Vue与React的区别和优势对比
Dec 18 Vue.js
vue+vant 上传图片需要注意的地方
Jan 03 Vue.js
如何在 Vue 表单中处理图片
Jan 26 Vue.js
vue-video-player 断点续播的实现
Feb 01 Vue.js
vue如何使用rem适配
Feb 06 Vue.js
vue Element-ui表格实现树形结构表格
Jun 07 Vue.js
vue实现滑动解锁功能
Mar 03 Vue.js
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
Apr 06 Vue.js
vue.js 使用原生js实现轮播图
Apr 26 Vue.js
ant design vue的form表单取值方法
Jun 01 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
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
2016/04/15 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
基于javascript显示当前时间以及倒计时功能
2016/03/18 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
ES6新特性六:promise对象实例详解
2017/04/21 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
JS实现的input选择图片本地预览功能示例
2018/08/29 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
微信用户访问小程序的登录过程详解
2019/09/20 Javascript
python使用7z解压apk包的方法
2015/04/18 Python
flask中过滤器的使用详解
2018/08/01 Python
彻底理解Python中的yield关键字
2019/04/01 Python
python绘制地震散点图
2019/06/18 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
纯CSS3代码实现switch滑动开关按钮效果
2016/08/30 HTML / CSS
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
美国家用和厨房电器销售网站:Appliances Connection
2020/01/24 全球购物
向全球直邮输送天然健康产品:iHerb.com
2020/05/03 全球购物
档案信息化建设方案
2014/05/16 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
中学生运动会广播稿
2015/08/19 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang