【发布时间】:2019-07-22 23:57:39
【问题描述】:
我试图在 vue.js 中将鼠标悬停在图像上时实现显示文本,但我有点卡住了。我试图在具有多个图像的数组上实现此示例: https://www.w3schools.com/howto/tryit.asp?filename=tryhow_css_image_overlay_fade
我有一个非常大的 vue 文件,但这是必不可少的:
模板:
</template>
[...]
<div v-for="item in filteredPeople" v-bind:key="item.id" class="list-complete-item">
<router-link @mouseover.native="hovertext" :to="'/'+item.link">
<img class="list-complete-img" :src="'http://placehold.it/400x300?text='+item.id" alt>
</router-link>
</div>
[...]
</template>
脚本
<script>
export default {
data() {
return {
info: [
{
id: 1,
title: "Title one",
link: "project1",
hovertext: "project1 hover text lorem lorem lorem",
category_data: {
"1": "Category 1"
}
},
[...]
methods: {
hovertext() {
console.log("");
},
我有一些想法尝试使用一种方法将文本放在图像下方的 div 中,但是我无法让文本在悬停时出现在图像上方。而且我无法正确使用方法...不太确定这是一种好方法,
我还发现了这个 codepen 示例: https://codepen.io/oliviaisarobot/pen/xzPGvY
这与我想要做的非常接近,但我也无法在此处显示文本。
我有点失落。任何帮助如何在 vue 中做到这一点?
--------- 更新 ----------
我希望图像框可以拉伸,以便它们始终适合窗口,但我的 flexbox 行之间似乎有一个我似乎无法摆脱的间隙。您可以看到空白区域。我附上我的样式表。
.list-complete { 显示:弯曲; 高度:自动; 弹性方向:行; flex-flow:换行; }
.list-complete-item {
flex: 0 1 50%;
display: inline-block;
}
.list-complete-item a {
display: inline-block;
position: relative;
width: 100%;
height: auto;
outline: 1px solid #fff;
}
.list-complete-img {
width: 100%;
}
.text {
color: rgb(186, 74, 74);
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
text-align: center;
}
.list-complete-item a:hover .overlay {
opacity: 1;
}
.overlay {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
overflow: hidden;
height: 60%;
width: 100%;
opacity: 0;
transition: 0.5s ease;
background-color: #008cba;
}
【问题讨论】:
-
您尝试做的很多事情都依赖于 CSS。