关键帧 CSS 动画覆盖悬停过渡

2024-03-28

恐怕也有类似的问题,但我没有找到具体的解决方案,所以我创建了一个小提琴:

http://jsfiddle.net/Garavani/yrnjaf69/2/ http://jsfiddle.net/Garavani/yrnjaf69/2/

<div class= "category_item">

    <div class= "cat_button">
        <span class="title_cat">TEXT</span>
    </div>

</div> 

CSS:

.category_item {
    position: absolute;
    background-color: #999;
    top: 100px;
    left: 50px;
    width: 200px;
    height: 200px;
    /* seems to be overwriten by animation keyframes */
    -webkit-transition: -webkit-transform 0.215s ease-in-out;
            transition: transform 0.215s ease-in-out;
    cursor: pointer;
}

.category_item:hover {
    -webkit-animation-name: easeBack;
            animation-name: easeBack;
    -webkit-animation-duration: 1s;
            animation-duration: 1s;
    -webkit-animation-fill-mode: forwards;
            animation-fill-mode: forwards;
}

@-webkit-keyframes easeBack {
    0% {
        -webkit-transform: translateY(0);
                transform: translateY(0);
    }
    50% {
        -webkit-transform: translateY(-50px);
                transform: translateY(-50px);

    }
    100% {
        -webkit-transform: translateY(-30px);
                transform: translateY(-30px);
    }
}   

.cat_button {
    position: absolute;
    width: 200px;
    height: 55px;
    bottom: 0;
    border: 2px solid #fff;
    color: #fff;
    -webkit-transition: background 0.215s ease-in-out, border 0.215s ease-in-out, color 0.215s ease-in-out;
    transition: background 0.215s ease-in-out, border 0.215s ease-in-out, color 0.215s ease-in-out;
}

.category_item:hover .cat_button {
    background: #fff;
    border-color: #fff;
    color: #511c5b;
}   

在此(简化的)动画中,除了鼠标离开整个框外,一切正常。动画从原始状态开始,但是突然。 基本的过渡时间(和易用性)被忽略,因为关键帧似乎具有更高的重要性并覆盖它。

我需要的是关键帧动画触发,并且当鼠标离开时它应该顺利返回到原始状态。

有没有解决办法 1)纯CSS 2)也许只用一些小的javascript?

预先感谢您的帮助和想法!

EDIT:

在实施托尼好心提供的解决方案后,这是正确的小提琴:

http://jsfiddle.net/yrnjaf69/40/ http://jsfiddle.net/yrnjaf69/40/

再次感谢托尼!

EDIT 2:

遗憾的是,还有一个问题。尽管我也在这个小提琴中添加了所有 -moz- 供应商,但带有关键帧的部分并未在 Firefox 上执行:

http://jsfiddle.net/dr6Ld0wL/1/ http://jsfiddle.net/dr6Ld0wL/1/

Why?

PS:据我目前测试,它甚至可以在 Opera(Beta)中运行。唯一抵抗的浏览器是 Firefox

EDIT 3:正确的(工作的)代码现在在这个小提琴中:

http://jsfiddle.net/dr6Ld0wL/16/ http://jsfiddle.net/dr6Ld0wL/16/

关键帧还需要在供应商前缀中明确划分。耶稣基督。那些前缀...


这里有一个jsfiddle http://jsfiddle.net/yrnjaf69/31/达到这个目的。

.demo-hover {
    position: relative;
    margin: 100px;
    animation: complexProcessReversed 2s ease-in forwards;
    width: 160px;
    height: 160px;
    background-color: #88d;
}
.demo-hover:hover {
    animation: complexProcess 2s ease-in forwards;
    width: 100px;
    height: 100px;
    background-color: #732;
}

@keyframes complexProcess {
    /* keyframes */
}

@keyframes complexProcessReversed {
    /* keyframes (opposite) */
}

动画输出在主类的 css 中分配,然后悬停状态在悬停时启动,并且 css 在取消悬停时重新应用原始类属性。

动画确实会在页面加载时向后触发,因此您可能需要考虑调整动画以考虑到这一点,例如这个例子 http://jsfiddle.net/JjHNG/35/, 捏自这个答案 https://stackoverflow.com/a/16516826/1249829。或者,使用 javascript(或 jquery),例如这个例子 http://jsfiddle.net/yrnjaf69/25/其中通过使用 jquery 添加和删除类到目标来触发动画:

JavaScript

$('.demo-hover').hover(
    function() {
        // mouse in
        $(this).removeClass('forwards--reversed').addClass('forwards');
    },    
    function() {
        // mouse out
        $(this).removeClass('forwards').addClass('forwards--reversed');
    }
);

CSS

.forwards {
    animation: complexProcess 2s ease-in forwards;
    width: 100px;
    height: 100px;
    background-color: #732;
}

.forwards--reversed {
    animation: complexProcessReversed 2s ease-in forwards;
    width: 160px;
    height: 160px;
    background-color: #88d;
}

另外,我会用@keyframe or transition. Use transition如果你只需要一个简单的改变n to m但当事情更复杂时,例如一件事均匀变化超过 100%,但另一件事直到动画播放完 50% 后才开始,然后使用@keyframe

使用两者会导致混乱,特别是当您尝试为相同的属性设置动画时。

Finally 需要 css 供应商前缀

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关键帧 CSS 动画覆盖悬停过渡 的相关文章

  • 我应该向所有内容添加类/id,还是使用其他选择器

    我永远不确定选择元素的最佳 最有效 方法是什么 假设我有以下布局 非常简单的示例 div ul li Link 1 li li Link 2 li li Link 3 li ul div 我想选择我的无序列表 确保我不会影响整个网站中的任何
  • 如何使字形更大? (改变尺寸?)

    我想让地球字形更大 以便它覆盖页面的很大一部分 它是矢量图像 它不是在按钮或任何东西中 而是在按钮中 它只是孤独的 有没有办法做到这一点 div class jumbotron span class glyphicon glyphicon
  • 如何在具有动态高度的固定 div 标题后设置 div 内容样式

    以下情况 div style width 100 place holder for header div div style width 100 margin top 100px content div 我需要标题始终可见且位于顶部 因此该
  • 如何处理触摸设备上的悬停效果

    我有以下代码 div img src http placehold it 350x150 div class link cont a href click here to see more info a div div div width
  • CSS 文本装饰:反向

    我很惊讶 CSS 中没有 text decoration reverse 因为使用 JavaScript 来实现似乎非常尴尬 IE 将元素的前景色和背景色分别设置为父元素的背景色和前景色 我注意到了 JavaScript 技术here ht
  • CSS 3假3D立方体在2个盒子之间旋转

    我使用 css 实现了翻转旋转 flip card position relative z index 1 webkit perspective 1000px moz perspective 1000px o perspective 100
  • 具有水平和垂直冻结窗格的 Gridview

    在你说之前 是的 这个问题可能是重复的 https stackoverflow com questions 2912890 gridview freeze pane solutions https stackoverflow com que
  • CSS 居中变换

    为什么使用变换居中可以完美地平移并左 50 居中 相对于父级的位置 但右 50 却不能 工作示例 span class icon position absolute top 50 left 50 transform translate 50
  • 带切边、边框和透明背景的 Div

    我一直在试图弄清楚如何在 CSS 中制作一个视觉上看起来像这样的自定义形状 拥有以下财产background rgba 44 44 48 0 9 and border 6px solid rgba 29 30 35 0 9 我的问题是我找不
  • 分页符不分页

    我想要分页符 但它不起作用 我试图发布整个代码 但它超出了字符数 我想知道什么可能导致分页符不起作用 media print div pagebreak display block important page break after al
  • 如何创建包含左对齐元素的宽度不确定的居中 div?

    我有几个统一的蓝色元素 div style display inline block 位于紫色 div 内的红色 div 内 Mockup https i stack imgur com ylTm9 png 图 我希望蓝色元素左对齐 一行中
  • 使用 javascript 更改整个 CSS 类的样式

    有没有办法使用 javascript 更改 CSS 类的属性 p class fool p
  • 具有自定义尺寸的线性渐变

    我有这样的设计 它已经用 html css 创建 但我需要删除 1 和 5 的额外线条 这是通过添加绝对位置元素来创建灰线来实现的 但容器点的大小是响应式的 我的想法是为每个容器创建一个背景线性渐变 如下所示 for all backgro
  • 将变换值添加到元素上已有的当前变换中?

    假设我有一个div那有translateX and translateY动态添加的值 div class object child0 style width 50px height 50px 我想添加rotateY 20deg 到当前的变换
  • 使用 jQuery Mobile 和响应式布局/CSS 媒体查询是否多余?

    我正在退房http mediaqueri es http mediaqueri es 今天发现这些网站非常适合移动设备 所以我想知道将 jQuery Mobile 和响应 自适应布局与媒体查询一起使用是否是多余的 因为仅使用媒体查询似乎是一
  • 单击菜单外部以关闭菜单时,Bootstrap 导航栏“闪烁”

    我遇到了导航栏问题 当您单击菜单外部以关闭菜单时 导航栏会出现 闪烁 如果在单击菜单外时按住鼠标 则闪烁会持续存在 如下所示 我认为这可能与角度有关 而不是与CSS有关 主要是因为其他人未能在小提琴上复制它 上一个问题在这里 https s
  • 如何在移动设备上垂直堆叠 div 而在网页版本上保持水平放置?

    我添加了一些 div 标签以在 WordPress 帖子中创建两列 这是我使用的代码 container width 100 one width 50 float left two width 50 float right 我将上面的代码添
  • IE 9 的子元素不透明,我无法使用 captify 阻止它

    好的 我正在使用一段名为 Captify 的 javascript 它为您的图像添加了一个带有文本的小弹出窗口 适用于所有接受 IE9 的浏览器 IE9 会淡化弹出 div 中的所有内容 我已阅读其子元素问题 但无法修复它 由于在网上任何地
  • HTML5 拖放 - 没有透明度?

    当我将一个元素拖放到页面上时 该元素会变成 幻影 基本上它获得了一些透明度值 有什么办法可以做到吗opacity 1 看来是做不到了 拖动的元素被放入具有自己的不透明度 低于 1 的容器中 这意味着虽然您可以降低拖动元素的不透明度 但您无法
  • R Shiny - 修复了 Shiny 仪表板中的侧边栏和主标题

    我有一个简化的闪亮仪表板 请参阅下面的代码 我想修复侧边栏和主标题 因此 在其他帖子的帮助下 我编写了一个 CSS 文件来解决该问题 sidebar color FFF position fixed width 220px white sp

随机推荐