#html #css #image #hover
#HTML #css — код #изображение #наведите курсор
Вопрос:
Я попытался изменить изображение на другое при наведении курсора мыши, но вместо этого появилось второе изображение, а первое не исчезло. это код, я что-то сделал не так. надеюсь, вам понятен вопрос
.card {
width: 130px;
height: 195px;
position: relative;
display: inline-block;
margin: 50px;
}
.card .img-top {
display: none;
position: absolute;
top: 0;
left: 0;
z-index: 99;
}
.card:hover .img-top {
display: inline;
}
.card {
width: 130px;
height: 195px;
position: relative;
display: inline-block;
margin: 50px;
}
.card .img-top {
display: none;
position: absolute;
top: 0;
left: 0;
z-index: 99;
}
.card:hover .img-top {
display: inline;
}
<div class="card">
<img src="redlo.jpg" width="100" height="100" alt="first">
<img src="whitelo.jpg" class="img-top" width="100" height="100" alt="second">
</div>
Комментарии:
1. 1. Я рекомендую использовать фоновое изображение, если хотите изменить его с помощью css. 2. С изображением вы можете использовать javascript для достижения того же самого, используя тег img. 3. добавьте два разных класса, т.е. img-top-1, img-top-2, .card .img-top-1 { display : none;} .card img-top-2 { display: встроенный}
Ответ №1:
Я не совсем уверен, правильно ли я понимаю ваш вопрос. На .card:hover
втором изображении показано выше первого и закрывает первое, поэтому его больше не видно.
Итак, ваш код работает хорошо, и нет дополнительной необходимости делать первое изображение «исчезающим».
Но если вы (однако) хотите / должны это сделать, просто добавьте в свой css:
.card:hover img:first-child {
display: none;
}
Приятное дополнительное замечание: ваш css удваивается. Вам нужно только написать классы .card
.card .img-top
и .card:hover .img-top
один раз 😉
ОБНОВЛЕНИЕ: ВАШ РАБОЧИЙ КОД С ИЗОБРАЖЕНИЯМИ
Здесь вы можете увидеть, насколько корректно работает ваш код. Просто удалил удвоенный css.
.card {
width: 130px;
height: 195px;
position: relative;
display: inline-block;
margin: 50px;
}
.card .img-top {
display: none;
position: absolute;
top: 0;
left: 0;
z-index: 99;
}
.card:hover .img-top {
display: inline;
}
.card {
width: 130px;
height: 195px;
position: relative;
display: inline-block;
margin: 50px;
}
<div class="card">
<img src="https://dummyimage.com/100x100/0000ff/ffffffamp;text=Image one" width="100" height="100" alt="first">
<img src="https://dummyimage.com/100x100/ff0000/ffffffamp;text=Image two" class="img-top" width="100" height="100" alt="second">
</div>
Комментарии:
1. большое вам спасибо, я только что попробовал, и это прекрасно работает
Ответ №2:
Кажется, что высота вашего изображения равна 0
Вы можете попробовать:
.card:hover .img-top {
display: block;
}
если не работает, добавьте это в .img-top
селектор
.card .img-top {
display: none;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
z-index: 99;
}
Комментарии:
1. Нет. Размер обоих изображений в обоих случаях корректен , задан в html с
100x100px
помощью . Код работает правильно. В реальном примере изображения не используются, поэтому вы видите только атрибуты alt … но нет второго изображения , которое закрывало бы первое … таким образом , вы все еще можете видеть атрибут alt с первого изображения:hover
.
Ответ №3:
Это должно помочь
.card {
width: 130px;
height: 195px;
position: relative;
margin: 50px;
}
.img-top {
display: none;
position: absolute;
top: 0;
left: 0;
z-index: 99;
}
.card:hover .img-top {
display: block;
}
.card:hover .img-top1 { display: none }
<div class="card">
<img src="redlo.jpg" width="100" class="img-top1" height="100" alt="first">
<img src="whitelo.jpg" class="img-top" width="100" height="100" alt="second">
</div>
Комментарии:
1. Пожалуйста, полностью объясните свой ответ
2. Вы не скрывали свое первое изображение при наведении курсора мыши на элемент карты, и я просто добавил к нему display none. Остальные изменения просто очищаются