悬停可顺利向上移动 div 卡

问题描述 投票:0回答:4

所以我有一个 div,它是一张卡片和其中的内容。我设法让它向上移动一点,但过渡属性似乎不起作用。

这是 HTML 代码

<div class="card">
  <p> Title </p>
</div>

这是 CSS 代码

.card:hover {
 position: relative; 
 top: -10px;
 transition: 1s;

}

所以基本上有多个卡片,并且当鼠标悬停在 .card 类的每张卡片上时它都会向上移动,但它会瞬间移动,过渡不起作用。有谁知道如何修复它?祝你有美好的一天

html css hover position card
4个回答
3
投票

这是因为您仅在

position
代码块中指定了
transition
:hover
,这意味着直到悬停已经发生之后才指定转换时间。换句话说,悬停时更改的项目(
top
值)应位于
:hover
中。

position
块之外指定
transition
:hover
,例如:

.card {
  position: relative;
  transition: 1s
}

.card:hover {
  top: -10px;
}

1
投票

您可以使用

transform: translateY

试试这个

body {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.box {
  border: 1px solid black;
  width: 150px;
  height: 150px;
  cursor: pointer;
  transition: all .5s ease-in-out;
}

.box:hover {
  transform: translateY(-10px);
}
<div class="box"></div>


0
投票

不用使用

top
,它需要一个位置属性将其移出流程,只需添加一个边距来替换元素:

.card:hover {
  margin-top: -20px;
  margin-bottom: 20px;
  transition: 1s;
}


/* for visualization purpose only */
body {
  padding-top: 50px;
}

div {
  border: 2px solid black;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 40vh;
  width: 10vw;
}
<div class="card">Card</div


0
投票

@Mohamad 的回答很正确,但如果您想要更流畅的动画和更短的动作,请尝试:

.box {
  transition: all .3s ease-in-out;
}

.box:hover {
  transform: translateY(-5px);
}
© www.soinside.com 2019 - 2024. All rights reserved.