Я пытаюсь реализовать отображение текста при наведении на изображение в 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
<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 под изображением, но потом я не могу получитьтекст, чтобы получить над изображением при наведении.И я не могу понять метод правильно ... Не совсем уверен, что это хороший способ сделать это,
Я также нашел этот пример кода ручки: https://codepen.io/oliviaisarobot/pen/xzPGvY
Это довольно близко к тому, что яхочу сделать, но я не могу получить текст для отображения здесь.
Я немного растерялся.Любая помощь, как сделать это в vue?
---------- ОБНОВЛЕНИЕ ----------
Я хочуящики с изображениями растягиваются так, чтобы они всегда умещались в окне, но я, кажется, получаю промежуток между строками флексбокса, от которого, похоже, не могу избавиться.Вы можете увидеть пустое пространство.Я прилагаю свою таблицу стилей.
.list-complete {display: flex;высота: авто;flex-direction: row;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;
}