vue实现下拉菜单效果

 更新时间:2022年09月01日 09:46:54   作者:凡小多  
这篇文章主要为大家详细介绍了vue实现下拉菜单效果,运用了hover显示与隐藏以及定位,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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中菜单再次点击内容不刷新问题

    解决vue中菜单再次点击内容不刷新问题

    当elementUI中菜单打开后,再次点击不会刷新的问题,导致菜单再次点击不刷新的根本原因是页面打开后,再次打开相同的页面是不会刷新的,这应该是框架的机制就是如此,小编整理了两个比较不错的解决方法,需要的朋友可以参考下
    2023-08-08
  • vue.js基于ElementUI封装了CRUD的弹框组件

    vue.js基于ElementUI封装了CRUD的弹框组件

    这篇文章主要介绍了vue.js基于ElementUI封装了CRUD的弹框组件,问咋会给你围绕主题展开详细的内容介绍,感兴趣的小伙伴可以参考一下
    2022-07-07
  • 关于vue中对window.openner的使用指南

    关于vue中对window.openner的使用指南

    opener属性是一个可读可写的属性,可返回对创建该窗口的Window对象的引用,下面这篇文章主要给大家介绍了关于vue中对window.openner使用的相关资料,需要的朋友可以参考下
    2022-11-11
  • Vue.js高效前端开发

    Vue.js高效前端开发

    Vue是构建Web界面的JavaScript库,原称为Vue.js,它可以通过简洁的API来提供高效的数据绑定和灵活的组件系统,本文详细介绍了Vue的使用安装和相关知识,有兴趣的同学可以参考借鉴
    2023-03-03
  • vue监听浏览器原生返回按钮,进行路由转跳操作

    vue监听浏览器原生返回按钮,进行路由转跳操作

    这篇文章主要介绍了vue监听浏览器原生返回按钮,进行路由转跳操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • vue+rem自定义轮播图效果

    vue+rem自定义轮播图效果

    这篇文章主要为大家详细介绍了vue+rem自定义轮播图效果,手指触摸左滑和右滑,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • vue将文件/图片批量打包下载zip的教程

    vue将文件/图片批量打包下载zip的教程

    这篇文章主要介绍了vue将文件/图片批量打包下载zip的教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • 利用纯Vue.js构建Bootstrap组件

    利用纯Vue.js构建Bootstrap组件

    这篇文章主要介绍了如何使用 Vue.js 和纯 JavaScript 构建 Bootstrap 组件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 详细聊聊Vue生命周期的那些事

    详细聊聊Vue生命周期的那些事

    这篇文章主要给大家介绍了关于Vue生命周期的那些事,在使用vue开发过程中经常会接触到生命周期的问题,但对于每个钩子函数都做了什么,应用场景比较模糊,希望通过这次梳理让自己清楚一些,需要的朋友可以参考下
    2021-09-09
  • vue-cli3项目在IE浏览器打开兼容问题及解决

    vue-cli3项目在IE浏览器打开兼容问题及解决

    这篇文章主要介绍了vue-cli3项目在IE浏览器打开兼容问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08

最新评论