CSS 过渡变换

CSS transition transform

请问有没有办法只在鼠标滑过整个文字时才旋转图标?

代码如下所示:

.text .icon {
  vertical-align: middle;
  font-size: 40px;
  
  transition: transform 0.5s;
}

.icon:hover {
  transform: rotate(360deg);
}

.text {
  margin: 0 auto;
  clear: both;
  font-size: 23px;
}
<p class="text">
  <span class="icon">i</span><a href="#" target="_blank">Text</a>
</p>

图标会旋转,但只有在鼠标悬停在其自身上时才会旋转。

谢谢

您可以使用 .text:hover .icon 作为选择器,当悬停在 p 元素上时它会旋转。

首先,请注意带有 display: inline 的元素不应该是 transformable element,因此 transform 属性 不适用于它。要使其工作,您可以添加

.text > .icon {
  display: inline-block;
}

然后,要在悬停 .text 时将某些样式设置为 .icon,您应该使用此选择器:

.text:hover > .icon

.text {
  margin: 0 auto;
  font-size: 23px;
}
.text > .icon {
  vertical-align: middle;
  font-size: 40px;
  transition: transform 0.5s;
  display: inline-block;
}
.text:hover > .icon {
  transform: rotate(360deg);
}
<p class="text">
  <span class="icon">i</span><a href="#" target="_blank">Text</a>
</p>