wctdreamlandwebsite-front/components/nav.vue

230 lines
4.9 KiB
Vue

<!-- Please remove this file from your project -->
<template>
<nav class="nav">
<div class="imgBox">
<!-- 测试查询 -->
<!-- <img
class="land"
src="../assets/mask/test_req.png"
alt=""
@click="showLandBox"
/> -->
<img class="logo" src="../assets/partOne/logo.png" alt="" />
</div>
<ul class="nav-list">
<li
v-for="(item, index) in navlist"
:key="item.class"
class="nav-item"
:class="index == activeIndex ? 'active' : ''"
>
<div v-if="activeIndex == index" class="active-line"></div>
<!-- <img
:class="'nav-' + item.class"
:src="item.src"
alt=""
@click="toViewSwiper(index)"
/> -->
<div
class="nav_img"
:class="'nav-' + item.class"
@click="toViewSwiper(index)"
></div>
</li>
</ul>
</nav>
</template>
<script>
export default {
props: {
activeIndex: {
type: Number,
default: 0,
},
},
data() {
return {
navlist: [
{
class: "home",
src: require("../assets/partOne/home.png"),
},
{
class: "trailer",
src: require("../assets/partOne/news.png"),
},
{
class: "world",
src: require("../assets/partOne/world.png"),
},
{
class: "Characters",
src: require("../assets/partOne/Characters.png"),
},
],
};
},
methods: {
toViewSwiper(index) {
this.$emit("toViewSwiper", index);
},
showLandBox() {
this.$emit("showLandBox");
},
},
};
</script>
<style lang="scss" scoped>
.nav {
width: 100vw;
height: 86px;
background: url("https://cdn.star-linear.com/resource/dream/top_bg.png") left
no-repeat;
background-size: cover;
display: flex;
justify-content: space-between;
overflow: hidden;
position: fixed;
left: 0;
top: 0;
z-index: 12;
&::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 61px;
transform: translateY(49%);
background: url("../assets/partOne/top_line.png") left no-repeat;
background-size: contain;
}
.imgBox {
display: flex;
justify-content: space-between;
margin-left: 60px;
}
.land {
cursor: pointer;
}
.logo {
width: 223px;
height: 84px;
margin-left: 60px;
}
.nav-list {
display: flex;
justify-content: center;
align-items: center;
list-style: none;
margin-top: 35px;
margin-right: 130px;
z-index: 2;
.nav-item {
margin-left: 88px;
position: relative;
&:first-child {
&::after {
width: 0;
}
}
&.active {
.active-line {
position: absolute;
bottom: -3px;
left: 37px;
width: 194px;
height: 142px;
background: url("../assets/partOne/light_bg.png") left no-repeat;
background-size: contain;
cursor: pointer;
opacity: 0.55;
}
&::before {
content: "";
position: absolute;
top: -15px;
left: 0;
width: 92px;
height: 88px;
background: url("../assets/partOne/light.png") left no-repeat;
background-size: contain;
animation: shake 0.8s ease infinite alternate;
transform: translateX(-10%);
z-index: 12;
}
}
@keyframes shake {
from {
opacity: 1;
}
to {
opacity: 0.5;
}
}
&::after {
content: "";
position: absolute;
top: 35%;
left: 0;
transform: translate(-83%, -50%);
width: 134px;
height: 50px;
background: url("../assets/partOne/line.png") left no-repeat;
background-size: cover;
}
}
img {
cursor: pointer;
height: 79px;
z-index: 13;
position: relative;
}
.nav_img {
background: url("../assets/partOne/nav_img.png");
background-size: auto 100%;
background-repeat: no-repeat;
cursor: pointer;
height: 84px;
}
.nav-home {
// height: 216px;
// height: 84px;
width: 156px;
background-position: 11px 0;
}
.nav-world {
// height: 216px;
width: 207px;
background-position: -115px 0;
}
.nav-Characters {
// height: 220px;
// width: 532px;
width: 200px;
background-position: -305px 0;
}
.nav-trailer {
// height: 218px;
// width: 618px;
width: 150px;
// height: 55px;
// background: url("../assets/partOne/news.png") center no-repeat;
// background-size: contain;
background-position: -507px 12px;
}
// .nav-home {
// background-size: contain;
// background-repeat: no-repeat;
// height: 79px;
// }
}
}
</style>