html - 在父悬停时更改子动画/过渡

标签 html css animation css-transitions

我想要实现的目标:
我试图在悬停父对象时更改子 CSS 动画。但是,由于某种原因,它不起作用。

解释:
.front-ball 从一开始就应用了 hvr-wobble-vertical。然后,我希望动画在悬停其父元素 .wbutton 时更改为 .front-ball 缩放动画。

HTML:

<a class="wbutton img-responsive center-block" role="button">
  <img class="front-logo" src="img/logos/logowork_03.png" />
  <img class="front-ball" src="img/logos/logowork_09.png" />
</a>

CSS:

.wbutton:hover > .front-ball {
  -webkit-transform: scale(1.1);
  transform: scale(1.1);
}

.front-ball {
  display: inline-block;
  vertical-align: middle;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
  box-shadow: 0 0 1px rgba(0, 0, 0, 0);
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  -moz-osx-font-smoothing: grayscale;
  -webkit-animation-name: hvr-wobble-vertical;
  animation-name: hvr-wobble-vertical;
  -webkit-transition-property: transform;
  transition-property: transform;
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-timing-function: ease-in-out;
  animation-timing-function: ease-in-out;
  -webkit-animation-iteration-count: infinite;
  animation-iteration-count: infinite;
}

@-webkit-keyframes hvr-wobble-vertical {
  16.65% {
    -webkit-transform: translateY(8px);
    transform: translateY(8px);
  }
  33.3% {
    -webkit-transform: translateY(-6px);
    transform: translateY(-6px);
  }
  49.95% {
    -webkit-transform: translateY(4px);
    transform: translateY(4px);
  }
  66.6% {
    -webkit-transform: translateY(-2px);
    transform: translateY(-2px);
  }
  83.25% {
    -webkit-transform: translateY(1px);
    transform: translateY(1px);
  }
  100% {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes hvr-wobble-vertical {
  16.65% {
    -webkit-transform: translateY(8px);
    transform: translateY(8px);
  }
  33.3% {
    -webkit-transform: translateY(-6px);
    transform: translateY(-6px);
  }
  49.95% {
    -webkit-transform: translateY(4px);
    transform: translateY(4px);
  }
  66.6% {
    -webkit-transform: translateY(-2px);
    transform: translateY(-2px);
  }
  83.25% {
    -webkit-transform: translateY(1px);
    transform: translateY(1px);
  }
  100% {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
}

很明显,我正在尝试一次使用 2 个动画/过渡,但我不知道达到我想要的效果的正确方法是什么。

最佳答案

你可以再做一个keyframes处理 scale animation并在悬停时替换 hvr-wobble-vertical使用您的新关键帧

.wbutton:hover > .front-ball {
  -webkit-transform: scale(1.1);
  transform: scale(1.1);
  -webkit-animation-name: hve-scale;
  animation-name: hve-scale;
  -webkit-animation-iteration-count: 1;
  animation-iteration-count: 1;
}

@-webkit-keyframes hve-scale {
  0% {
    -webkit-transform: scale(1);
  }
  100% {
    -webkit-transform: scale(1.1);
  }
}

@keyframes hve-scale {
  0% {
    transform: scale(1);
  }
  100% {
    transform: scale(1.1);
  }
}

演示:https://jsfiddle.net/yb1LrL5o/

关于html - 在父悬停时更改子动画/过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37511074/

相关文章:

javascript - 当我们点击一​​个按钮时,我们如何显示隐藏的段落?

javascript - 将文本类型输入更改为密码格式

javascript - 使用 JavaScript 从 firebase 中删除对象

css - 背景图像动画

html - Bootstrap 4 图像 slider 添加表单不能做小尺寸和居中

html - 如何使文本环绕 jssor 图像 slider ?

ios - UINavigationItem titleView动画

html - 带有滚动正文的 Bootstrap 固定表头

html - 为什么三 Angular 形与菜单背景的颜色不同?

javascript - 使用 Raphael.js 在图表中移动节点的动画