ASP.NET MVC+Bootstrap个人博客之praise.js点赞特效插件

1. 为啥要做这个点赞插件?

    praise.js是一款小巧的jQuery点赞插件,使用简便,效果美观。

  在做个人博客时遇到了文章点赞问题。联想到各大社交网络中的点赞特效:手势放大、红心放大等等,很酷很炫。但是并没有现成的好用的插件,于是就打算自己做一个类似的点赞插件,放上自己喜欢的点赞图标。

先来看一下效果图吧:也可以去我的博客站 www.zynblog.com亲身体验一下。

注:(博客地址:www.zynblog.com,采用ASP.NET MVC + Bootstrap搭建)

2. 插件源码

  praise.js:

 1 //***扩展对象点赞插件、点赞特效***//
 2 //***Zynblog**//
 3 //***2016-5-11**//
 4 //***用法:jQuery(‘.praisebtn‘).praise(options);***//
 5 ; (function ($) {
 6     $.fn.praise = function (options) {
 7         var defaults = {
 8             obj: null, //jq对象,针对哪个对象使用这个tipsBox函数
 9             str: "+1", //字符串,要显示的内容;也可以传一段html
10             startSize: "10px", //动画开始的文字大小
11             endSize: "30px",  //动画结束的文字大小
12             interval: 600, //文字动画时间间隔
13             color: "red",  //文字颜色
14             callback: function () { }  //回调函数
15         };
16         var opt = $.extend(defaults, options);
17         $("body").append("<span class=‘num‘>" + opt.str + "</span>");
18         var box = $(".num");
19         var left = opt.obj.offset().left + opt.obj.width()/2;
20         var top = opt.obj.offset().top - opt.obj.height();
21         box.css({
22             "position": "absolute",
23             "left": left + "px",
24             "top": top + "px",
25             "z-index": 9999,
26             "font-size": opt.startSize,
27             "line-height": opt.endSize,
28             "color": opt.color
29         });
30         box.animate({
31             "font-size": opt.endSize,
32             "opacity": "0",
33             "top": top - parseInt(opt.endSize) + "px"
34         }, opt.interval, function () {
35             box.remove();
36             opt.callback();
37         });
38     }
39 })(jQuery);
40
41 //点赞图标恢复原样
42 function niceIn(prop) {
43     prop.find(‘.praisenum‘).addClass(‘niceIn‘).css("color", "red");
44     setTimeout(function () {
45         prop.find(‘.praisenum‘).css("color", "#45BCF9").removeClass(‘niceIn‘);
46     }, 1000);
47 };

3. 使用方法:

在需要用到点赞插件的页面中引入jquery.js、prase.js,然后在$(function(){})中给"praisebtn"注册click事件即可。

HTML:

<span class="praisebtn">
     <img src="/Content/images/ico_praise.png" class="praisenum" data-bd-imgshare-binded="1">
       (<a href="#" praise-flag="0" data-id="7">2</a>)
</span>

jQuery: (本站并不强制访客进行注册登录后才能点赞,因此并不限制访客的点赞次数)

//点赞特效+Ajax统计点赞数量
    pariseShow: function () {
        //使用自定义的点赞特效插件,在zynblog.js前要先引入这个插件
        //jquery给暂未生成的标签绑定事件要用on(‘事件‘,‘对象‘,‘事件句柄‘)
        jQuery(document).on("click", ".praisebtn", function (e) {
            e.preventDefault();
            //获取被点赞文章的id  praise-flag:0没攒过,1:赞过了
            //页面刚生成时,可以从库中确定该用户是否点赞,并为praise-flag属性赋初值
            //这里没必要那么严谨,所以初值均为1,(顶多是再在cookie中给个标记)
            var praiseFlag = jQuery(this).children(‘a‘).attr(‘praise-flag‘);
            //alert(praiseFlag);
            var praiseArtId = jQuery(this).children(‘a‘).attr(‘data-id‘);
            //alert(praiseArtId);

            //1. 如果没赞过
            if (praiseFlag == 0) {
                var curPraise = jQuery(this).children(‘a‘);
                curPraise.attr(‘praise-flag‘, "1");//先把点赞标识的属性值设为1

                jQuery(this).praise({
                    obj: jQuery(this),
                    str: "+1",
                    callback: function () {
                        jQuery.post("/Archives/PraiseStatic", { "artId": praiseArtId }, function (data) {
                            if (data.Status == 1) {
                                var praisecount = parseInt(curPraise.text().match(/\d+/));
                                curPraise.text(curPraise.text().replace(praisecount, praisecount + 1));
                            } else if (data.Status == 2) {
                                alert(data.Message);
                            } else if (data.Status == 0) {
                                alert(data.Message);
                            }
                        });
                    }
                });
                niceIn(jQuery(this));
            } else if (praiseFlag == 1) {
                //2. 如果已经已赞
                jQuery("body").append("<span class=‘praisetip‘>您已赞过~</span>");
                var tipbox = jQuery(".praisetip");
                var left = jQuery(this).offset().left;
                var top = jQuery(this).offset().top + jQuery(this).height();
                tipbox.css({
                    "position": "absolute",
                    "left": left + "px",
                    "top": top + "px",
                    "z-index": 9999,
                    "font-size": "12px",
                    "line-height": "13px",
                    "color": "red"
                });
                tipbox.animate({
                    "opacity": "0"
                }, 1200, function () {
                    tipbox.remove();
                });
            }
        });
    },

praise.js源码下载:jquery.praise.js

如果有疑问或者建议的话,可以去我的博客站找我 www.zynblog.com/LeaveMsg 或者留言

时间: 2024-07-30 10:19:24

ASP.NET MVC+Bootstrap个人博客之praise.js点赞特效插件的相关文章

ASP.NET MVC+Bootstrap个人博客之文章打赏(六)

看到新浪微博.百度百家等等平台上都带有文章“打赏”功能,觉得很新鲜,于是也想在自己的博客中加入“打赏”功能. 当然,加入打赏功能并非是真的想要让别人打赏.因为只有那些真正能引起共鸣,发人深思,让人受益匪浅的文章才值得打赏,值得点赞. 而我的博客站仅仅是用作记录笔记,当做自己的知识库(如果能不经意间帮助别人那是再好不过了). 加入打赏功能纯粹是“觉得好玩”,就是这么简单,Just have a fun!(博主喜欢折腾,看见一个酷炫的功能就想去实现它) 先看一下这个打赏的Icon长什么样吧! 去站点

ASP.NET MVC使用Bootstrap系列(5)——创建ASP.NET MVC Bootstrap Helpers

序言 ASP.NET MVC允许开发者创建自定义的HTML Helpers,不管是使用静态方法还是扩展方法.一个HTML Helper本质上其实是输出一段HTML字符串. HTML Helpers能让我们在多个页面上公用同一段HTML标记,这样不仅提高了稳定性也便于开发者去维护.当然对于这些可重用的代码,开发者也方便对他们进行单元测试.所以,创建ASP.NET MVC Bootstrap Helpers是及其有必要的. 内置的HTML Helpers ASP.NET MVC内置了若干标准HTML

ASP.NET MVC Bootstrap极速开发框架

前言 每次新开发项目都要从头开始设计?有木有一个通用的快速开发框架?并且得是ASP.NET MVC  And Bootstrap?数据库不要手工创建?框架对未来业务支持的扩展性好?这么简单的功能还需要一天搭建基础环境?能不能只关心我所需要的业务? 有这样的一个项目,基于ASP.NET MVC.EntityFramework.Memcached.Bootstrap的快速项目开发框架,只需3秒钟即可创建一个带有简单用户管理的项目. 一键安装 懒人一键安装包下载地址,双击“install.bat”批处

Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是翔通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基本不用了.还有最主要的原因就是锻炼下自己的能力.好了其他就不多说了,下面来看下我对这个项目的整体概述吧: 目录: 目录我以后会在这边添加上去的 一.Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理 基本设计 项目中使用到的工具: Visual Studio 2013,

java基于MVC的简单博客系统

原文:java基于MVC的简单博客系统 源代码下载地址:http://www.zuidaima.com/share/1550463595760640.htm 采用技术:jsp+servlie+javaBean+mysql+ajax

将微博或者qq空间的说说同步至博客园 wcf+js(ajax)跨域请求(1)

前天刚写了篇文章使用Bootstrap为你的博客园自定义轮播图片(今天将图片加载的顺序调整了下,不在访问的时候直接加载,而是页面加载最后在脚本里面动态添加dom元素),虽说技术含量不怎么高,但是大家还算感兴趣.其实对博主来说最关键是博客的积分在涨.所以趁热打铁,再来一篇使用wcf+js ajax跨域请求数据同步空间说说的帖子. 因为是请求qq说说的数据,所以要登陆我的qq,这个很麻烦,总不能让每个访客都登陆的qq,然后把数据取出来吧,而且qq也没有相关的接口提供,登陆的时候还要处理验证码.所以这

ASP.NET MVC搭建项目后台UI框架—2、菜单特效

目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 上一篇,已经把整个项目的框框给搭建好了,但是还没有任何js效果实现.这一节,我就来说下关于菜单的特效实现.我需要的效果如下: 需求总结: 点击顶部菜单模块,左侧显示不同模块下面的菜单列表 点击左侧菜单选项,展开下面的子菜单,并折叠其它菜单模块,菜单图标折叠显示为+,展开显示为-. 1.先看下Top视图中代码: 2.在Top视图的head中添加如下js: <script sr

JS 简易控制台插件 [供 博客, 论坛 运行js用]

今天厚着脸皮来推荐下鄙人写的一个小插件吧.看过我博客的应该都熟悉这个插件了,其实就是这货. 这东西是我去年写的,当时水平也不怎么样,不过好歹还是实现了简单功能.我先简单介绍下这东西什么用吧. 因为在 论坛,博客 里写东西的时候,非常希望有个运行功能,当然目前大部分的功能都是 open 实现的.而且在 IE6-7 下没有 console 可供调试,所以当时脑子一热就写了这东西.可能你会说 Firebug Lite 不是很方便么,而且兼容 IE6 呢..确实,不过我的出发点不一样,只是写一个可供输出

ASP.NET MVC+Bootstrap 实现短信验证

短信验证大家都已经很熟悉了,基本上每天都在接触手机短信的验证码,比如某宝,某东购物,网站注册,网上银行等等,都要验证我们的手机号码真实性.这样做有什么好处呢. 以前咱们在做网站的时候,为了提高用户注册的质量,防止用户恶意注册,都会设置一些小阻碍,如网页验证码.邮件认证等等.但是道高一尺魔高一丈,很快网站的这些设置都被一些网络黑客利用注册机逐一攻破,这些功能也就随之变成了摆设. 但是魔高一丈道高两丈,随着移动设备的普及,短信验证的功能横空出世.他的出现轻松的排除了传统网站验证码的弊端,还提升了网站