ul li:hover{ background: rgba(16,29,64,0.28); }鼠标悬停时有这个颜色,那鼠标点击之后,还想有这个颜色,该怎么办呢,vue3\
时间: 2024-09-15 20:10:40 浏览: 38
要在Vue3中实现鼠标点击和悬停时都保持相同的背景色效果,你可以结合CSS和Vue的组件属性或者事件来控制。如果你正在使用一个列表项(li)并希望在选中时也应用同样的背景颜色,可以尝试以下几种方法:
1. 使用CSS伪类`:active`:
```css
li {
transition: background-color 0.3s ease; /* 添加过渡效果,让颜色变化平滑 */
}
li:hover,
li:active {
background: rgba(16, 29, 64, 0.28);
}
```
这里的`:active`伪类会在元素被激活(如鼠标点击)时触发。
2. Vue绑定CSS类名:
在Vue组件中,当`li`元素被点击时,你可以添加一个名为`.active`的类:
```html
<template>
<li :class="{ active: isSelected }" @click="toggleSelection">
<!-- 内容 -->
</li>
</template>
<script>
export default {
data() {
return {
isSelected: false,
};
},
methods: {
toggleSelection() {
this.isSelected = !this.isSelected;
},
},
};
</script>
<style scoped>
.active {
background: rgba(16, 29, 64, 0.28);
}
</style>
```
当你点击时,`isSelected`变量会切换,对应的`.active`样式会应用或移除。
3. 使用CSS `v-bind:class` 动态绑定:
```html
<li v-bind:class="{ hover: hovered, active: isActive }">
<!-- 内容 -->
</li>
<script>
export default {
data() {
return {
hovered: false,
isActive: false,
};
},
computed: {
hovered() {
return hovered || event.targetTouches.length > 0; // 检查触摸设备
},
isActive() {
return this.isSelected;
},
},
methods: {
select() {
this.isActive = true;
},
deselect() {
this.isActive = false;
},
},
};
</script>
```
这里,`hovered`和`isActive`分别对应鼠标悬停和点击状态。
阅读全文