js点赞效果实现

JavaScript012

js点赞效果实现,第1张

用AJAX实现:

举例jquery ajax:

var paramJSON = {参数1:"值1",参数2:"值2"}

//URL路径为你提交到后台录入数据库的操作,也就是你的图片对应的路径

//paramJSON为你需要传递的参数 可选

//function回调函数为你点赞录入数据库后返回的消息,比如是否录入数据库成功等

$.post("URL路径", paramJSON,

   function(data){

     alert("Data Loaded: " + data)

   })

需要学习JavaScript语言和HTML语言

使用方法

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>

首先只需要在body中定义一个button。和盛放心的盒子

<div id = "demo"></div>

<input type = "button" id = "btn1" value = "点个赞吧" />

由于还要引进心的图片,所以在这里我们在设置css样式的时候还要设置图片img的样式。

css代码如下:

<style type="text/css">

*{

margin: 0px

padding: 0px

}

#btn1{

position: absolute

bottom:100px

width: 200px

background-color: lightblue

font-size: 18px

left:45%

}

img{

bottom:100px

margin-left: -15px

width: 20px

height:20px

position: absolute

left: 50%

}

</style>

下来就是要写jquery函数。

(document).ready(function(){

// 1. 首先给按钮绑定点击事件。(“#btn1”).click(function(){

//2. 生成彩色的心,即随机选择图片。

// 2.1 生成随机数

var num = Math.floor(Math.random() * 3 +1)

//2.2 生成一个img元素,并为其添加src属性

var image = $(“”)

//三个图片的名字分别是 1.png\2.png\3.png,所以img的路径和图片名可以进行线面的字符串拼接

image.attr(“src”,”./images/”+num+”.png”)

//3。将生成的img追加到页面上

$(“#demo”).append(image)

//4. 下来就是让心动起来。从点击按钮的地方向上飘。利用jquery的动画函数animate()

//生成随机的距离左边的距离,这样就可以使心有种向上飘的感觉

var left = Math.random() * 800

image.animate({

‘bottom':'800px',

‘left':left,

‘opacity':'0'

},3000)

})

});

})