这是一款效果非常炫酷的仿Twitter“点赞”红心按钮CSS3动画特效。该“点赞”特效使用一颗心形按钮,在用户点击心形按钮的时候,心形按钮由灰色变为红色,同时会在心形按钮的四周产生类似烟花爆炸的效果。
使用方法
HTML结构
该“点赞”红心按钮的HTML结构是将心形按钮放在一个超链接的后面或下面,它的HTML结果如下:
<div class="feed" id="feed1"> <p>jQuery之家 <a href="http://www.htmleaf.com/">http://www.htmleaf.com/</a></p> <div class="heart" id="like3" rel="like"></div> <div class="likeCount" id="likeCount3">24</div> </div>
CSS样式
整个“点赞”烟花爆炸效果实际上是使用背景图片的连续播放来完成的,它使用一张很长的雪碧(Sprite)图片,然后在点击红心按钮是逐帧进行播放。下面是开始时显示第一帧的CSS样式:
.heart { background: url(images/web_heart_animation.png); background-position: left; background-repeat: no-repeat; height: 50px; width: 50px; cursor: pointer; position: absolute; left:-14px; background-size:1450px; //实际背景图片尺寸2900px } .heart:hover{ background-position: right; //显示最后一个红心帧 } .likeCount{ margin-top: 13px; margin-left: 28px; font-size: 16px; color: #999999 }
下面的代码是逐帧播放红心背景图片,它使用CSS3 keyframe帧动画来完成。
@-webkit-keyframes heartBlast { 0% {background-position: left;} 100% {background-position: right;} } @keyframes heartBlast { 0% {background-position: left;} 100% {background-position: right;} } .heartAnimation { -webkit-animation-name: heartBlast; //webkit内核浏览器 animation-name: heartBlast; -webkit-animation-duration: .8s; animation-duration: .8s; -webkit-animation-iteration-count: 1; animation-iteration-count: 1; -webkit-animation-timing-function: steps(28); //共28个背景图片帧 animation-timing-function: steps(28); background-position: right; }
JavaScript
在这个“点赞”红心动画特效中使用jQuery代码来使红心按钮在点击时与相应的总点赞数量进行联动。你可以通过ajax来进行数据库操作。当用户点赞时,总数量加1,取消点赞时,总数量减1。
<script> $(document).ready(function(){ $('body').on("click",'.heart',function(){ var A=$(this).attr("id"); var B=A.split("like"); //splitting like1 to 1 var messageID=B[1]; $(this).css("background-position","") var D=$(this).attr("rel"); $.ajax({ type: "POST", url: "message_like_ajax.php", data: dataString, cache: false, success: function(data){ $("#likeCount"+messageID).html(data); if(D === 'like') { $(this).addClass("heartAnimation").attr("rel","unlike"); //applying animation class } else{ $(this).removeClass("heartAnimation").attr("rel","like"); $(this).css("background-position","left"); } }); //ajax end });//heart click end }); </script>