vue2封装导航栏包含多个单元 每个单元中都放置了一张图片 单元1中的图片默认是a 背景色默认是purple 当鼠标悬浮到单元1上时 图片换为b 背景色为pink 当鼠标选中单元a的时候 图片换为c 背景色为red 单元2中的图片默认是d 背景色是purple 当鼠标悬浮到单元2上时 图片换为e背景色为pink 当鼠标选中单元2的时候 图片换为f 背景色为red 并且在选中某个单元之后 跳转到该单元对应的页面 以此类推 详细代码实现
时间: 2024-02-23 21:00:03 浏览: 48
基于vue-upload-component封装一个图片上传组件的示例
5星 · 资源好评率100%
好的,以下是一个简单的实现代码,供您参考:
```
<template>
<div class="nav">
<div
v-for="(item, index) in navItems"
:key="index"
:class="{'active': activeIndex === index}"
@click="handleClick(index)"
@mouseover="handleMouseOver(index)"
@mouseleave="handleMouseLeave(index)"
>
<img :src="item.img" :class="{'img-b': item.hoverImg && hoverIndex === index, 'img-c': activeIndex === index}">
</div>
</div>
</template>
<script>
export default {
data() {
return {
navItems: [
{ img: 'a.png', hoverImg: 'b.png', activeImg: 'c.png', bgColor: 'purple', hoverBgColor: 'pink', activeBgColor: 'red' },
{ img: 'd.png', hoverImg: 'e.png', activeImg: 'f.png', bgColor: 'purple', hoverBgColor: 'pink', activeBgColor: 'red' },
// 可以继续添加其他单元
],
activeIndex: -1, // 当前选中的单元索引
hoverIndex: -1 // 当前鼠标悬浮的单元索引
}
},
methods: {
handleClick(index) {
this.activeIndex = index
// TODO: 根据索引跳转到对应页面
},
handleMouseOver(index) {
this.hoverIndex = index
},
handleMouseLeave(index) {
this.hoverIndex = -1
}
}
}
</script>
<style>
.nav {
display: flex;
}
.nav div {
width: 100px;
height: 100px;
margin-right: 20px;
display: flex;
justify-content: center;
align-items: center;
background-color: purple;
cursor: pointer;
}
.nav div.active {
background-color: red;
}
.nav div:hover {
background-color: pink;
}
.img-b {
content: url('b.png');
}
.img-c {
content: url('c.png');
}
</style>
```
这里使用了 Vue.js 框架,并且将导航栏封装成了一个组件。在模板中,使用 `v-for` 循环渲染每个单元,根据当前状态绑定对应的样式和图片。在选中单元时,通过调用 `handleClick` 方法来改变选中状态,并且可以根据选中的索引跳转到对应的页面。在鼠标悬浮时和离开时,通过调用 `handleMouseOver` 和 `handleMouseLeave` 方法来改变鼠标悬浮状态。在样式中,使用 `content` 属性来改变图片的显示。
阅读全文