【发布时间】:2022-01-21 06:44:32
【问题描述】:
我有一个.card,它默认显示一个箭头。当用户将鼠标悬停在此 .card 上时,我希望“了解更多”文本从右侧滑入并随之移动箭头。
我试图把.card__footer 放到width: 0;然后尝试在悬停时给它width,但是,由于文本正在过渡,有时它会出现在两行,然后一旦过渡结束,就会变成一行。
除了使用width,我怎样才能让这种效果在悬停时起作用?或者实现它的正确方法是什么?我目前的做法:
.cards {
background: lightblue;
padding: 60px 0;
}
.container {
max-width: 720px;
display: flex;
justify-content: space-between;
align-items: center;
margin: 0 auto;
}
.card {
background-color: white;
padding: 30px;
cursor: pointer;
transition: all 0.5s ease;
width: 250px;
}
.card:hover {
box-shadow: 0px 20px 25px 0px rgba(0, 0, 0, 0.1);
}
.card:hover .card__arrow {
transform: translateX(5px);
}
.card:hover .card__label {
display: inline-block;
visibility: visible;
margin-right: 6px;
opacity: 1;
}
.card__header {
margin-bottom: 30px;
}
.card__footer {
display: flex;
justify-content: flex-start;
align-items: center;
}
.card__label {
margin-right: 10px;
}
@media (hover: hover) {
.card__label {
margin: 0;
transition: opacity 0.5s;
visibility: hidden;
opacity: 0;
display: none;
}
}
<div class="cards">
<div class="container">
<div class="card">
<div class="card__header">
header
</div>
<div class="card__footer">
<span class="card__label">Learn more</span>
<img class="card__arrow" src="https://i.imgur.com/onjXVGW.png" alt="arrow" />
</div>
</div>
<div class="card">
<div class="card__header">
header 2
</div>
<div class="card__footer">
<span class="card__label">Learn more</span>
<img class="card__arrow" src="https://i.imgur.com/onjXVGW.png" alt="arrow" />
</div>
</div>
</div>
</div>
我追求的是什么:
-
.footer__arrow默认显示左侧(就像在演示中一样) -
.footer__label默认隐藏 - 在
.card悬停时,我希望.footer__label滑入,同时推动arrow图像(以便它显示“了解更多”,然后在悬停时显示箭头。 - 目前我的
.footer__label刚刚出现,而我希望标签慢慢滑入并使其具有我的箭头被推到它旁边的效果。
【问题讨论】: