首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CSS动画类似MacOSX10.8无效密码“摇”?

CSS动画类似MacOSX10.8无效密码“摇”?
EN

Stack Overflow用户
提问于 2013-03-31 03:21:41
回答 2查看 16.1K关注 0票数 26

在MacOSX10.8“密码”屏幕上,如果输入无效密码,它将来回“摇晃”(即k.a)。左和右)。我试图实现一个类似的效果HTML密码输入字段使用CSS动画。

我创建了一个“密码摇动”,它似乎模仿了这种行为。然而,这似乎不太正确。我不确定显式关键帧和linear定时函数是否是正确的方法。这是我对CSS动画的第一次尝试,我正在寻找实现这一目标的正确方法的反馈。

代码语言:javascript
复制
<div class="box">
    <input type="password" id="demo-password" placeholder="password" autofocus />
</div>

JavaScript

代码语言:javascript
复制
$('#demo-password').on('keyup', function (e) {
    var $input = $(this);
    var val = $.trim($input.val());
    $input.removeClass("invalid");

    if (e.which !== 13 || !val) {
        return;
    }

    if (val != "password") {
        $input.select();   
        $input.addClass("invalid");
    }
});

CSS

代码语言:javascript
复制
#demo-password.invalid {
    outline-color: red;
    /* also need animation and -moz-animation */
    -webkit-animation: shake .6s linear;
}
/* also need keyframes and -moz-keyframes */
 @-webkit-keyframes shake {
    0% {
        left:-10px;
    }
    16% {
        left:9px;
    }
    33% {
        left:-6px;
    }
    50% {
        left:5px;
    }
    66% {
        left:-2px;
    }
    83% {
        left:1px;
    }
    100% {
        left: 0px;
    }
}

编辑

我确实找到了Animate.css,它有一个摇动动画。我在下面包含了(非浏览器前缀) CSS。而不是设置left,而是做一个transform: translateX(),这可能有一个更好的机会硬件加速。

代码语言:javascript
复制
.animated {
    animation-duration: 1s;
    animation-fill-mode: both;
}

@keyframes shake {
    0%, 100% {transform: translateX(0);}
    10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);}
    20%, 40%, 60%, 80% {transform: translateX(10px);}
}

.shake {
    animation-name: shake;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-13 18:12:47

我用我的iPad相机记录的屏幕。看起来每个方向震动3次,前2次是全距离,最后1次是较小的距离。

代码语言:javascript
复制
#demo-password.invalid {
    outline-color: red;
    /* also need animation and -moz-animation */
    -webkit-animation: shake .5s linear;
}
/* also need keyframes and -moz-keyframes */
 @-webkit-keyframes shake {
    8%, 41% {
        -webkit-transform: translateX(-10px);
    }
    25%, 58% {
        -webkit-transform: translateX(10px);
    }
    75% {
        -webkit-transform: translateX(-5px);
    }
    92% {
        -webkit-transform: translateX(5px);
    }
    0%, 100% {
        -webkit-transform: translateX(0);
    }
}
票数 62
EN

Stack Overflow用户

发布于 2013-04-03 12:51:31

我也会给jRumble一个机会,它有一套非常大的震动,它们可以结合在一起,使各种疯狂的事情发生。一些有趣的例子:

  • 按百分比摇动
  • 基于时间的抖动
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15726000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档