vue实现下拉菜单效果

Leona ·
更新时间:2024-11-10
· 1631 次阅读

本文实例为大家分享了vue实现下拉菜单效果的具体代码,供大家参考,具体内容如下

下拉菜单主要运用了hover显示与隐藏以及定位的问题

效果图:

可能出现的问题

定位后菜单的div无法自适应(宽度由定位的父元素决定导致换行)

div {     white-space: nowrap;     width: auto; }

制作下拉菜单时,a标签列表根据最大的内容自适应宽度撑满盒子

a {     display: block;     width: 100%; }

CSS下拉菜单鼠标移入菜单内容时,菜单隐藏消失的问题

首先,我们用 css 写下拉菜单,一般过程是这样:一个大的父元素框架—— drop-list ,包含一个触发下拉菜单的起点—— drop-text,和一个菜单内容——drop-content,鼠标移动到父元素上时,下拉菜单显示,鼠标移开时,菜单内容隐藏。

按照道理来说,鼠标放置父元素整体范围是不会收起菜单内容的,经过排错后发现,drop-content与 drop-text 存在空隙,鼠标移动到那个缝隙时,就离开了父元素,所以会存在鼠标移动时,菜单内容收起的情况。

解决方法:

1、让空隙消失,设置 droptext 的下外边距为0即 margin-bottom:0; drop-content 的上外边距为0 即 margin-top:0。
2、若需要间隙可以在drop-content内包裹一层在里面设置间隙,把drop-content透明隐藏。

代码如下:

<template>   <div class="container">     <div class="dropdown">       <!-- 标题 -->       <span class="dropdown-title"> 下拉菜单 </span>       <!-- 下拉菜单内容 -->       <div class="dropdown-content">         <div class="dropdown-menu">           <div class="menuItem">菜单1</div>           <div class="menuItem">菜单菜单1</div>           <div class="menuItem">菜单2</div>           <div class="menuItem">菜单菜单菜单1</div>           <div class="menuItem">菜单3</div>         </div>       </div>     </div>   </div> </template> <script> export default {   data() {     return {};   },   mounted() {},   methods: {}, }; </script> <style lang="scss" scoped> .container {   padding: 20px; } .dropdown {   margin: 0 20px;   .dropdown-title {     display: inline-block;     position: relative;     height: 60px;     line-height: 60px;     font-size: 20px;     color: #fff;     background-color: #000;     padding: 0 24px;     border-radius: 4px;     cursor: pointer;     // transition: all 1s ease-in-out;   }   .dropdown-content {     // 定位显示局域     position: absolute;     visibility: hidden; // 隐藏     opacity: 0; // 隐藏     transition: all 0.6s ease-in-out;     .dropdown-menu {       margin-top: 4px;  // 与title制造距离       padding: 10px 8px 15px; // 给下面多留一点距离,抵消视觉差       color: white;       background-color: rgba($color: #000, $alpha: 0.8);       border-radius: 4px;       .menuItem {         width: 100%;  // 自适应宽度         white-space: nowrap;         padding: 10px 16px;         font-size: 16px;         color: white;         cursor: pointer;         border-radius: 4px;         &:hover {           background-color: #ccc;         }       }     }   }   &:hover .dropdown-content {     visibility: visible;     opacity: 1;   } } </style>



VUE 菜单 下拉菜单

需要 登录 后方可回复, 如果你还没有账号请 注册新账号