vue實現(xiàn)下拉菜單效果
本文實例為大家分享了vue實現(xiàn)下拉菜單效果的具體代碼,供大家參考,具體內(nèi)容如下
下拉菜單主要運用了hover顯示與隱藏以及定位的問題
效果圖:

可能出現(xiàn)的問題
定位后菜單的div無法自適應(yīng)(寬度由定位的父元素決定導致?lián)Q行)
div {
?? ?white-space: nowrap;
?? ?width: auto;
}制作下拉菜單時,a標簽列表根據(jù)最大的內(nèi)容自適應(yīng)寬度撐滿盒子
a {
?? ?display: block;
?? ?width: 100%;
}CSS下拉菜單鼠標移入菜單內(nèi)容時,菜單隱藏消失的問題
首先,我們用 css 寫下拉菜單,一般過程是這樣:一個大的父元素框架—— drop-list ,包含一個觸發(fā)下拉菜單的起點—— drop-text,和一個菜單內(nèi)容——drop-content,鼠標移動到父元素上時,下拉菜單顯示,鼠標移開時,菜單內(nèi)容隱藏。
按照道理來說,鼠標放置父元素整體范圍是不會收起菜單內(nèi)容的,經(jīng)過排錯后發(fā)現(xiàn),drop-content與 drop-text 存在空隙,鼠標移動到那個縫隙時,就離開了父元素,所以會存在鼠標移動時,菜單內(nèi)容收起的情況。
解決方法:
1、讓空隙消失,設(shè)置 droptext 的下外邊距為0即 margin-bottom:0; drop-content 的上外邊距為0 即 margin-top:0。
2、若需要間隙可以在drop-content內(nèi)包裹一層在里面設(shè)置間隙,把drop-content透明隱藏。
代碼如下:
<template>
? <div class="container">
? ? <div class="dropdown">
? ? ? <!-- 標題 -->
? ? ? <span class="dropdown-title"> 下拉菜單 </span>
? ? ? <!-- 下拉菜單內(nèi)容 -->
? ? ? <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%; ?// 自適應(yīng)寬度
? ? ? ? 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>以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue項目出現(xiàn)ERESOLVE could not resolve問題及解決
這篇文章主要介紹了vue項目出現(xiàn)ERESOLVE could not resolve問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-10-10
nuxt 自定義 auth 中間件實現(xiàn)令牌的持久化操作
這篇文章主要介紹了nuxt 自定義 auth 中間件實現(xiàn)令牌的持久化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
ant design vue 表格table 默認勾選幾項的操作
這篇文章主要介紹了ant design vue 表格table 默認勾選幾項的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

