<template>
<v-app-bar app :class="navClass" hide-on-scroll flat height="60">
<!-- 手机端导航栏 -->
<div class="d-md-none nav-mobile-container">
<div style="font-size: 18px; font-weight: bold">
<router-link to="/"> 星之卡比 </router-link>
</div>
<div style="margin-left: auto">
<a><i class="iconfont iconsousuo" /></a>
<a @click="openDrawer" style="margin-left: 10px; font-size: 20px">
<i class="iconfont iconhanbao" />
</a>
</div>
</div>
<!-- 电脑导航栏 -->
<div class="d-md-block d-none nav-container">
<div class="float-left blog-title">
<router-link to="/"> 星之卡比 </router-link>
</div>
<div class="float-right nav-title">
<div class="menus-btn">
<a><i class="iconfont iconsousuo" /> 搜索</a>
</div>
<div class="menus-item">
<router-link to="/">
<i class="iconfont iconzhuye" /> 首页
</router-link>
</div>
<div class="menus-item">
<router-link to="/archives">
<i class="iconfont iconguidang" /> 归档
</router-link>
</div>
<div class="menus-item">
<router-link to="/categories">
<i class="iconfont iconfenlei" /> 分类
</router-link>
</div>
<div class="menus-item">
<router-link to="/tags">
<i class="iconfont iconbiaoqian" /> 标签
</router-link>
</div>
<div class="menus-item">
<router-link to="/links">
<i class="iconfont iconlianjie" /> 友链
</router-link>
</div>
<div class="menus-item">
<router-link to="/about">
<i class="iconfont iconzhifeiji" /> 关于
</router-link>
</div>
<div class="menus-item">
<router-link to="/message">
<i class="iconfont iconpinglunzu" /> 留言
</router-link>
</div>
<div class="user-btn">
<a v-if="!this.$store.state.avatar">
<i class="iconfont icondenglu" /> 登录
</a>
<template v-else>
<img
class="user-avatar"
:src="this.$store.state.avatar"
height="30"
width="30"
/>
<ul class="user-submenu">
<li>
<router-link to="/user">
<i class="iconfont icongerenzhongxin" /> 个人中心
</router-link>
</li>
<li>
<a><i class="iconfont icontuichu" /> 退出</a>
</li>
</ul>
</template>
</div>
</div>
</div>
</v-app-bar>
</template>
<script>
export default {
mounted() {
window.addEventListener("scroll", this.scroll);
},
data: function () {
return {
navClass: "",
};
},
methods: {
scroll() {
const that = this;
let scrollTop =
window.pageYOffset ||
document.documentElement.scrollTop ||
document.body.scrollTop;
that.scrollTop = scrollTop;
if (that.scrollTop > 60) {
that.navClass = "nav-fixed";
} else {
that.navClass = "nav";
}
},
openDrawer() {
this.$store.state.drawer = true;
},
},
computed: {
avatar() {
return this.$store.state.avatar;
},
},
};
</script>
<style scoped>
i {
margin-right: 4px;
}
ul {
list-style: none;
}
.nav {
background: rgba(0, 0, 0, 0) !important;
}
.nav a {
color: #eee !important;
}
.nav .menus-item a {
text-shadow: 0.05rem 0.05rem 0.1rem rgba(0, 0, 0, 0.3);
}
.nav .blog-title a {
text-shadow: 0.1rem 0.1rem 0.2rem rgba(0, 0, 0, 0.15);
}
.theme--light.nav-fixed {
background: rgba(255, 255, 255, 0.8) !important;
box-shadow: 0 5px 6px -5px rgba(133, 133, 133, 0.6);
}
.theme--dark.nav-fixed {
background: rgba(18, 18, 18, 0.8) !important;
}
.theme--dark.nav-fixed a {
color: rgba(255, 255, 255, 0.8) !important;
}
.theme--light.nav-fixed a {
color: #4c4948 !important;
}
.nav-fixed .menus-item a,
.nav-fixed .menus-btn a,
.nav-fixed .blog-title a {
text-shadow: none;
}
.nav-container {
font-size: 14px;
width: 100%;
height: 100%;
}
.nav-mobile-container {
width: 100%;
display: flex;
align-items: center;
}
.blog-title,
.nav-title {
display: flex;
align-items: center;
height: 100%;
}
.blog-title a {
font-size: 18px;
font-weight: bold;
}
.user-btn,
.menus-btn,
.menus-item {
position: relative;
display: inline-block;
margin: 0 0 0 0.875rem;
}
.menus-btn a,
.menus-item a {
transition: all 0.2s;
}
.nav-fixed .menus-btn a:hover,
.nav-fixed .menus-item a:hover {
color: #49b1f5 !important;
}
.menus-item a:hover:after {
width: 100%;
}
.menus-item a:after {
position: absolute;
bottom: -5px;
left: 0;
z-index: -1;
width: 0;
height: 3px;
background-color: #80c8f8;
content: "";
transition: all 0.3s ease-in-out;
}
.user-btn a {
transition: all 0.2s;
}
.user-avatar {
cursor: pointer;
border-radius: 50%;
}
.user-btn:hover .user-submenu {
display: block;
}
.user-submenu {
position: absolute;
display: none;
right: 0;
width: max-content;
margin-top: 8px;
box-shadow: 0 5px 20px -4px rgba(0, 0, 0, 0.5);
background-color: #fff;
animation: submenu 0.3s 0.1s ease both;
}
.user-submenu:before {
position: absolute;
top: -8px;
left: 0;
width: 100%;
height: 20px;
content: "";
}
.user-submenu a {
line-height: 2;
color: #4c4948 !important;
text-shadow: none;
display: block;
padding: 6px 14px;
}
.user-submenu a:hover {
background: #4ab1f4;
}
@keyframes submenu {
0% {
opacity: 0;
filter: alpha(opacity=0);
transform: translateY(10px);
}
100% {
opacity: 1;
filter: none;
transform: translateY(0);
}
}
</style>