vue导航栏下拉菜单(附带展开收缩动画)

本文介绍了如何在Vue.js中创建导航栏下拉菜单并实现展开收缩动画。通过两种方法实现:一是利用鼠标移入移出事件,优点是结构清晰,但事件处理复杂;二是使用CSS hover,简单明了但可能导致动画堆叠。详细代码案例供参考。
摘要由CSDN通过智能技术生成

先看效果:
在这里插入图片描述

下拉菜单铺满全屏
<div class="nav">...</div>
<div class="dropdown-content">...</div>
.nav {
   
	position: relative;
}
.dropdown-content {
   
	position: absolute;
	width: 100%;  // 拉满
}
下拉动画
方法一:鼠标移入移出事件

使用的是vue的 transition组件以及鼠标事件@mouseenter@mouseleave

.dropdown-enter-active {
   
  animation: expand-contract 1s ease;
}
.dropdown-leave-active {
   
  animation: expand-contract 1s ease reverse;
}
// 收缩展开动画
@keyframes expand-contract {
   
  0% {
   
    overflow: hidden;
    opacity: 0;
    max-height: 0;
  }
  100% {
   
    max-height: 300px;  // 大于等于下拉菜单的高度
    opacity: 1;
  }
}

// 菜单内容变化动画
@keyframes menu {
   
  0% {
   
    opacity: 0;
    transform: translateX(50%);
  }
  100% {
   
    opacity: 1;
    transform: translateX(0%);
  }
}

优点:

  1. 结构层次清楚
  2. 多个导航需要下拉菜单,且结构相似内容不同,只需要重新渲染数据即可。

缺点:

  1. 使用了事件处理相对复杂

案例代码

<template>
  <div class="app-container">
    <!-- 导航栏 -->
    <div class="nav" ref="navRef">
      <div class="nav-item" @mouseenter="isShow = false">导航栏1</div>
      <div class="nav-item" @mouseenter="showDropDown('2')">导航栏2</div>
      <div class="nav-item" @mouseenter="showDropDown('3')">导航栏3</div>
      <div class="nav-item" @mouseenter="isShow = false">导航栏4</div>
      <div class="nav-item" @mouseenter="isShow = false">导航栏5</div>
    </div>
    <!-- 下拉菜单 -->
    <transition name="dropdown">
      <div v-show="isShow" class=
  • 3
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凡小多

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

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

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

打赏作者

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

抵扣说明:

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

余额充值