ElementUI顶部菜单响应式实现

解决系统首页响应式布局

目前前端的UI框架使用的时Element-UI,布局提前使用了类似于Bootstrap框架的网格布局,不过Bootstrap中的的最大网格数时12,而Element-UI的时24格,并且也参照了Bootstrap的响应式设计,预设了五个响应尺寸:xs、sm、md、lg 和 xl。这样就可以解决不同屏幕的适配问题了。具体的使用和特性大家可以访问Element-UI的官网中的Layout布局这一介绍。

顶部菜单栏响应式设计

虽然在布局上可以采用上面提到的布局来实现响应式,但是顶部菜单栏它不想Bootstrap那样支持预设好的响应式样式和设计,所以这里需要我们自己实现一下。我的实现方式是通过监控屏幕的长宽比来动态的对顶部菜单进行显示。先看一下最终的效果图
这是PC大屏的显示
在这里插入图片描述
手机端的显示
在这里插入图片描述
可以看到在PC端的菜单时展示所有,当在手机端的屏幕上将其余的选项放到更多里进行下拉显示,当然大家可以根据自己的需求和设计进行自定义的显示。

实现过程

整体实现过程时通过监听屏幕的长宽比来判断时手机端还是PC端,需要注意的时在ElementUI中window.resize()这种方式是有问题的会报没有resize()这个方法 参考网上的资料后发现可能是是与element-ui里的drawer冲突,drawer也使用了window.onresize,__这里使用window.addEventListener来代替__同样能实现一样的效果。
首先在data的return中定义一个Boolean值,命名为isMobile,如果为true则表示为手机端反之为PC端,默认我们给它false,然后在methods中定义了来个方法,分别如下:

getScreen() {
      let screenWidth = document.body.clientWidth;	//获取屏幕的宽
      let screenHeight = document.body.clientHeight;	//获取屏幕的高
      return screenWidth / screenHeight;	//返回宽除以高
    },
listenScreen() {
   let initScale = this.getScreen();	//初始化判断
   if (initScale < 1) {	//如果小于1说明宽度小于高度,则识别为手机反之为PC
     this.isMobile = true;
   }
   window.addEventListener("resize", () => {	//添加屏幕变化监听,判断逻辑与上方相同
     this.isMobile = this.getScreen() < 1 ? true : false;
   });
 },

然后在mounted方法中调用listenScreen()方法就可以实现了。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@胡海龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值