jQuery + CSS:创造一个脉动的心脏

Art*_*kov 1 html javascript css jquery css3

我用纯CSS做了一个简单的心.它由两部分组成,因此一件有白色box-shadow,另一件有红色.

可以在这里找到一个例子:JsFiddle(它有一个没有渐变的简化样式,所以它可能看起来不漂亮:)

所以,问题是:如何创建动画阴影?我所需要的只是让白色和红色的阴影产生脉动以产生心跳效果.

我跟了通过一些类似的问题了,但他们将无法正常工作,遗憾的是,仅仅是因为在我的情况下,我用:after:before伪类,这是不能被通过jQuery操纵.

CRA*_*OLO 5

我把它设置为无限,所以它不停地跳动(这是一件好事,所以心脏不会死?)但是你可以把它改成n次数.此外,您可以将5秒更改为更长或更短.如果你不希望盒子阴影变为0,你总是可以将它改为10px或者其他东西.

#b:before {
    animation: heartbeat 5s infinite;
}

@keyframes heartbeat {
    0% { box-shadow: 0 0 50px #fff; }
    25% { box-shadow: 0 0 0 #fff; }
    50% { box-shadow: 0 0 50px #fff; }
    75% { box-shadow: 0 0 0 #fff; }
    100% { box-shadow: 0 0 50px #fff; }
}
Run Code Online (Sandbox Code Playgroud)

body {
    width:100%;
    margin:0;
    background: #000;
}
#b {
    position:relative;
    width:500px;
    height:90px;
    margin: 100px auto;
    font-size: 12px;
}
#b:before {
    position: absolute;
    content:"";
    left: 208px;
    top: 10px;
    width: 208px;
    height: 320px;
    background: red;
    border-radius: 200px 200px 0 0;
    box-shadow: 0 0 50px #fff;
    animation: heartbeat 5s infinite;
}
#b:before {
    -webkit-transform: rotate(-45deg);
    -moz-transform: rotate(-45deg);
    -ms-transform: rotate(-45deg);
    -o-transform: rotate(-45deg);
    transform: rotate(-45deg);
    -webkit-transform-origin: 0 100%;
    -moz-transform-origin: 0 100%;
    -ms-transform-origin: 0 100%;
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
}
#b:after {
    position:absolute;
    content:"BlaBla!";
    color: #fff;
    left:0;
    top:10px;
    width:208px;
    height:320px;
    background: red;
    border-radius:200px 200px 0 0;
    -webkit-transform:rotate(45deg);
    -moz-transform:rotate(45deg);
    -ms-transform:rotate(45deg);
    -o-transform:rotate(45deg);
    transform:rotate(45deg);
    -webkit-transform-origin:100% 100%;
    -moz-transform-origin:100% 100%;
    -ms-transform-origin:100% 100%;
    -o-transform-origin:100% 100%;
    transform-origin:100% 100%;
    box-shadow: 10px 10px 100px #6d0019;
}

@keyframes heartbeat {
    0% { box-shadow: 0 0 50px #fff; }
    25% { box-shadow: 0 0 0 #fff; }
    50% { box-shadow: 0 0 50px #fff; }
    75% { box-shadow: 0 0 0 #fff; }
    100% { box-shadow: 0 0 50px #fff; }
}
Run Code Online (Sandbox Code Playgroud)
<div class="a">
    <div id="b"></div>
</div>
Run Code Online (Sandbox Code Playgroud)