javascript - 使用 Vue.js 将鼠标悬停在元素上时如何更改背景图像?
问题描述
将鼠标悬停在四个不同的元素上时,我必须更改背景图像(每个元素一个图像)
我试过这个:
HTML:
<div class="projects">
<a v-on:mouseover="hover=myimage1" v-on:mouseout="hover=myimage1">
<router-link to="/project1">Project1</router-link>
</a>
<a v-on:mouseover="hover=myimage2" v-on:mouseout="hover=myimage1">
<router-link to="/project2">Project2</router-link>
</a>
<a v-on:mouseover="hover=myimage3" v-on:mouseout="hover=myimage1">
<router-link to="/project3">Project3</router-link>
</a>
<a v-on:mouseover="hover=myimage4" v-on:mouseout="hover=myimage1">
<router-link to="/project3">Project3</router-link>
</a>
</div>
<div class="images">
<div id="img1">
{{ hover }}
</div>
</div>
脚本:
<script>
import myimage from '../assets/images/posters/poster1-2.png'
import myimage2 from '../assets/images/front2.png'
import myimage3 from '../assets/images/front3.png'
import myimage4 from '../assets/images/front4.png'
export default {
name: 'Index',
data () {
return {
hover: '',
myimage1,
myimage2,
myimage3,
myimage4
}
}
}
</script>
问题是它不显示实际图像,而是显示字符串:
/static/img/poster1-2.e797348.png
我该怎么办?
解决方案
您可以使用 CSS 轻松解决此问题,只需为每个图像背景创建一个类并将其直接放入<router-link class="..." ...>
(无需在元素内部)<router-link>
。<a>
这是一个纯 HTML 示例:
<html>
<head>
<style>
.btn {
font-size: 1rem;
background-color: #fff;
cursor: pointer;
padding: 2rem 4rem;
}
.btn:hover {
background-image: url(https://picsum.photos/200);
color: #fff;
}
</style>
</head>
<body>
<button class="btn">
Hover Me
</button>
</body>
</html>
推荐阅读
- postgresql - Knex Raw 选择带有变量的 Postgresql
- c++ - C++ 成员函数回调和对象生存期
- java - 如何在 RecyclerView 中汇总检查项目数据值
- c++ - 为什么当你将函数的返回值乘以零时它不会短路?
- python - 如何按多个标准对二维列表进行排序:整数和字母?
- mysql - 使用 mysql 总共运行了 N 天
- android - 升级 pre 1.12 Android 项目后未找到实现
- makefile - 使用 OpenBLAS、ARPACK、LAPACK 和 SuperLU 构建静态犰狳
- javascript - Discord.js 赠品命令计时器和成员选择
- java - 如何在光线追踪中为物体颜色添加镜面闪电和反射颜色?