仅供记录
水平导航菜单的实现,鼠标悬停触发下拉菜单,下拉菜单可以横向分类
<template>
<div class="header">
<div class="title">
<div class="title-logo"></div>
<div class="title-text"></div>
</div>
<ul class="nav">
<li
class="nav-item"
@mouseenter="openDropdown"
@mouseleave="closeDropdown"
>
<span class="label">XXXX</span>
<div class="dropdown">
<ul class="dropdown-column">
<span class=" column-title no-border"> XX</span>
<li>XXX</li>
<li>XXX</li>
<li>XXX</li>
<li>XXX</li>
<li>XXX</li>
<li>XXX</li>
</ul>
<ul class="dropdown-column">
<span class="column-title"> XXX</span>
<li>XXX</li>
<li>XX</li>
<li>XX</li>
</ul>
<ul class="dropdown-column">
<span class=" column-title"> XXXX</span>
<li>XX</li>
<li>XX</li>
</ul>
</div>
</li>
<li class="nav-item">XXX</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {};
},
methods: {
openDropdown(e) {
e.target.lastElementChild.style.display = "flex";
},
closeDropdown(e) {
e.target.lastElementChild.style.display = "none";
}
},
mounted() {},
};
</script>
<style scoped>
.header {
width: 100%;
height: 70px;
box-sizing: border-box;
background-image: url("../../assets/image/header/header-bg.png");
background-color: #173147;
background-size: 100% 100%;
background-repeat: no-repeat;
position: fixed;
display: flex;
top: 0;
left: 0;
}
.title {
width: 460px;
height: 70px;
background-image: url("../../assets/image/header/title-bg.png");
background-size: 100% 100%;
background-repeat: no-repeat;
color: #fff;
}
.title-logo {
width: 70px;
height: 70px;
box-sizing: border-box;
margin-left: 44px;
display: inline-block;
background: url("../../assets/image/header/header-logo.png");
background-size: 65% 65%;
background-repeat: no-repeat;
background-position: center;
}
.title-text {
font-size: 26px;
display: inline-block;
letter-spacing: 1px;
line-height: 70px;
font-weight: 500;
vertical-align: top;
}
.nav {
height: 100%;
display: flex;
}
.nav > .nav-item {
height: 70px;
width: 130px;
text-align: center;
line-height: 70px;
font-size: 18px;
color: #fff;
position: relative;
}
.nav-item:hover {
background-image: url("../../assets/image/header/menu-hover.png");
background-size: 100% 100%;
background-repeat: no-repeat;
}
.nav-item .label {
display: block;
width: 100%;
height: 100%;
cursor: pointer;
}
.nav-item .dropdown {
display: flex;
position: absolute;
top: 70px;
left: 0;
margin: 0;
padding-bottom: 5px;
display: none;
border-bottom: 2px solid #008aff70;
border-left: 2px solid #008aff70;
border-right: 2px solid #008aff70;
background: linear-gradient(to left, #cdcdcd, #cdcdcd) left bottom no-repeat,
linear-gradient(to bottom, #cdcdcd, #cdcdcd) left bottom no-repeat,
linear-gradient(to left, #cdcdcd, #cdcdcd) right bottom no-repeat,
linear-gradient(to left, #cdcdcd, #cdcdcd) right bottom no-repeat;
background-size: 1px 10px, 10px 1px, 1px 10px, 10px 1px;
background-color: #173147cc;
}
.nav-item .dropdown-column > span {
display: block;
width: 160px;
height: 40px;
text-align: center;
line-height: 40px;
font-size: 18px;
}
.nav-item .dropdown-column > li {
width: 160px;
height: 40px;
text-align: center;
line-height: 40px;
font-size: 14px;
cursor: pointer;
}
.nav-item .dropdown-column > li:hover {
background: linear-gradient(
90deg,
rgba(0, 138, 255, 0) 0%,
rgba(0, 138, 255, 0.58) 53%,
rgba(0, 138, 255, 0.02) 100%
);
}
.dropdown-column span {
background-color: #0f3453;
}
.dropdown-column .column-title:not(.no-border) {
background-image: url("../../assets/image/header/bg1.png");
background-repeat: no-repeat;
background-size: 20px 60px;
background-position: 0 -10px;
}
</style>