无法使用 CSS 在悬停时执行动画

Unable to execute animation on hover using CSS

我需要在将鼠标悬停在 <div> 上并使用 codeyad class (.codeyad) 后显示一些 <div> 框。

* {
  direction: rtl;
}

html,
body {
  display: flex;
  justify-content: center;
  align-items: center;
}

.container {
  text-align: center;
  font-size: 19px;
}

div :not(.container, .codeyad) {
  border: 1px solid rgb(59, 59, 59);
  padding: 5px;
  margin: 2px;
  position: relative;
  left: 120%;
  opacity: 0;
}

div.js {
  transition: left 0.3s 0.2s, opacity 0.3s 0.2s ease-in-out;
}

.python {
  transition: all 0.6s 0.2s ease-in-out;
}

.php {
  transition: all 0.9s 0.2s ease-in-out;
}

div.codeyad:hover div.js {
  left: 0%;
  opacity: 1;
}
<div class="container">
  <div class="codeyad">کدیاد</div>
  <div class="js">جاوا اسکریپت</div>
  <div class="python">پایتون</div>
  <div class="php">آموزش php</div>
</div>

问题出在以下部分:

div.codeyad:hover div.js{
  left: 0%;
  opacity: 1;
}

我需要在 class codeyad 悬停在 <div> 上后使用动画显示 <div> 和 class js,但它不执行! 有人可以帮忙吗?

您需要修改您的 select 或如下所示。仅当您将鼠标悬停在 div.codeyad 上时,它才会 select class .js。了解 + - (Adjacent sibling combinators).

它将一直有效,直到您保持 HTML 结构不变。即 .codeyad 紧接着 .js

div.codeyad:hover + div.js {
  left: 0%;
  opacity: 1;
}

下面的工作代码(更新了注释)

* {
  direction: rtl;
}

html,
body {
  display: flex;
  justify-content: center;
  align-items: center;
}

.container {
  text-align: center;
  font-size: 19px;
}

div :not(.container, .codeyad) {
  border: 1px solid rgb(59, 59, 59);
  padding: 5px;
  margin: 2px;
  position: relative;
  left: 120%;
  opacity: 0;
}

div.js {
  transition: left 0.3s 0.2s, opacity 0.3s 0.2s ease-in-out;
}

.python {
  transition: all 0.6s 0.2s ease-in-out;
}

.php {
  transition: all 0.9s 0.2s ease-in-out;
}

div.codeyad:hover~div.js,
div.codeyad:hover~div.php,
div.codeyad:hover~div.python {
  left: 0%;
  opacity: 1;
}
<div class="container">
  <div class="codeyad">کدیاد</div>
  <div class="js">جاوا اسکریپت</div>
  <div class="python">پایتون</div>
  <div class="php">آموزش php</div>
</div>

使用此代码(提供的最后一个代码段),您可以使用 class“js”访问 div,它是 div class“codeyad”的子项

你在告诉 css 像这样的事情 =>

<div class="codeyad"> // on hover, do something with child class js
   <div class="js"></div>
</div>

我认为最简单的解决方案是使用 javascript,您可以在其中访问悬停功能。或者你也可以尝试使用 CSS,但这有点棘手,你必须知道 CSS 选择器。 Link 提供 here.

是的,您可以使用以下方法实现此目的:https://developer.mozilla.org/en-US/docs/Web/CSS/Adjacent_sibling_combinator

使用时要记住的一点:它会工作“只有当它紧跟在第一个元素之后,并且两者都是同一父元素的子元素时”

因此,为了获得所需的结果,您可以这样做:

div.codeyad:hover+div.js {
  left: 0%;
  opacity: 1;
}