jquery实现漂浮在网页右侧的qq在线客服插件示例


Posted in Javascript onMay 13, 2013

很实用的一款QQ在线客服代码,点击QQ图标,可直接与客服对话。具体实现代码如下:
html页面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>jquery实现qq客服</title> 
<link rel="stylesheet" type="text/css" href="css/base.css"/> 
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script> 
<script type="text/javascript" src="js/qqservice.js"></script> 
<script type="text/javascript"> 
$(function(){ 
$("body").Sonline({ 
Position:"right",//left或right 
Top:200,//顶部距离,默认200px 
Effect:true, //滚动或者固定两种方式,布尔值:true或false 
DefaultsOpen:true, //默认展开:true,默认收缩:false 
Qqlist:"<SPAN>435027|客服01,435027|客服02,435027|客服03,435027|客服04,435027|客服05</SPAN>" //多个QQ用','隔开,QQ和客服名用'|'隔开 
}); 
}) 
</script> 
</head> 
<body> 
<div style="height:2500px"></div> 
<div style="text-align:center;clear:both"></div> 
</body> 
</html>

css样式
/*默认蓝色*/ 
.SonlineBox{ width:162px; font-size:12px;overflow:hidden; z-index:9999;} 
.SonlineBox .openTrigger{ width:30px; height:110px; position:absolute; top:0px; z-index:1; cursor:pointer; background:#0176ba url(../images/openTrigger.jpg) no-repeat;} 
.SonlineBox .titleBox{ width:158px; height:35px; line-height:35px; background:#038bdc url(../images/SonlineTitleBg.gif) repeat-x; border-bottom:2px solid #0176ba;} 
.SonlineBox .titleBox span{ margin-left:10px; color:#fff; font-size:14px; font-family:'微软雅黑','黑体';} 
.SonlineBox .contentBox{ width:158px; height:auto; border:2px solid #0176ba; background:#fff; position:absolute; z-index:2;} 
.SonlineBox .contentBox .closeTrigger{ width:25px; height:25px; display:block; cursor:pointer; position:absolute; top:5px;right:5px;-webkit-transition:all 0.8s ease-out;} 
.SonlineBox .contentBox .closeTrigger:hover{-webkit-transform:scale(1) rotate(360deg);} 
.SonlineBox .contentBox .listBox{overflow:hidden; margin-bottom:10px;} 
.SonlineBox .contentBox .listBox .QQList{ display:block; width:86%; height:22px; margin:10px auto 0px auto;} 
.SonlineBox .contentBox .listBox .QQList span{float:left; line-height:22px;} 
.SonlineBox .contentBox .listBox .QQList a{float:left;}

jquery脚本代码
/* 
此插件基于Jquery 
开发者 yaohucaizi 
Blog:http://blog.csdn.net/yaohucaizi/ 
*/ 
(function($){ 
$.fn.Sonline = function(options){ 
var opts = $.extend({}, $.fn.Sonline.defualts, options); 
$.fn.setList(opts); //调用列表设置 
if(opts.DefaultsOpen == false){ 
$.fn.Sonline.close(opts.Position,0); 
} 
//展开 
$("#SonlineBox > .openTrigger").live("click",function(){$.fn.Sonline.open(opts.Position);}); 
//关闭 
$("#SonlineBox > .contentBox > .closeTrigger").live("click",function(){$.fn.Sonline.close(opts.Position,"fast");}); //Ie6兼容或滚动方式显示 
if ($.browser.msie && ($.browser.version == "6.0") && !$.support.style||opts.Effect==true) {$.fn.Sonline.scrollType();} 
else if(opts.Effect==false){$("#SonlineBox").css({position:"fixed"});} 
} 
//plugin defaults 
$.fn.Sonline.defualts ={ 
Position:"left",//left或right 
Top:200,//顶部距离,默认200px 
Effect:true, //滚动或者固定两种方式,布尔值:true或 
DefaultsOpen:true, //默认展开:true,默认收缩:false 
Qqlist:"" //多个QQ用','隔开,QQ和客服名用'|'隔开 
} 
//展开 
$.fn.Sonline.open = function(positionType){ 
var widthValue = $("#SonlineBox > .contentBox").width(); 
if(positionType=="left"){$("#SonlineBox > .contentBox").animate({left: 0},"fast");} 
else if(positionType=="right"){$("#SonlineBox > .contentBox").animate({right: 0},"fast");} 
$("#SonlineBox").css({width:widthValue+4}); 
$("#SonlineBox > .openTrigger").hide(); 
} 
//关闭 
$.fn.Sonline.close = function(positionType,speed){ 
$("#SonlineBox > .openTrigger").show(); 
var widthValue =$("#SonlineBox > .openTrigger").width(); 
var allWidth =(-($("#SonlineBox > .contentBox").width())-6); 
if(positionType=="left"){$("#SonlineBox > .contentBox").animate({left: allWidth},speed);} 
else if(positionType=="right"){$("#SonlineBox > .contentBox").animate({right: allWidth},speed);} 
$("#SonlineBox").animate({width:widthValue},speed); 
} 
//子插件:设置列表参数 
$.fn.setList = function(opts){ 
$("body").append("<div class='SonlineBox' id='SonlineBox' style='top:-600px;'><div class='openTrigger' style='display:none' title='展开'></div><div class='contentBox'><div class='closeTrigger'><img src='images/closeBtnImg.gif' title='关闭' /></div><div class='titleBox'><span>客服中心</span></div><div class='listBox'></div></div></div>"); 
if(opts.Qqlist==""){$("#SonlineBox > .contentBox > .listBox").append("<p style='padding:15px'>暂无在线客服。</p>")} 
else{var qqListHtml = $.fn.Sonline.splitStr(opts);$("#SonlineBox > .contentBox > .listBox").append(qqListHtml); } 
if(opts.Position=="left"){$("#SonlineBox").css({left:0});} 
else if(opts.Position=="right"){$("#SonlineBox").css({right:0})} 
$("#SonlineBox").css({top:opts.Top}); 
var allHeights=0; 
if($("#SonlineBox > .contentBox").height() < $("#SonlineBox > .openTrigger").height()){ 
allHeights = $("#SonlineBox > .openTrigger").height()+4; 
} else{allHeights = $("#SonlineBox > .contentBox").height()+4;} 
$("#SonlineBox").height(allHeights); 
if(opts.Position=="left"){$("#SonlineBox > .openTrigger").css({left:0});} 
else if(opts.Position=="right"){$("#SonlineBox > .openTrigger").css({right:0});} 
} 
//滑动式效果 
$.fn.Sonline.scrollType = function(){ 
$("#SonlineBox").css({position:"absolute"}); 
var topNum = parseInt($("#SonlineBox").css("top")+""); 
$(window).scroll(function(){ 
var scrollTopNum = $(window).scrollTop();//获取网页被卷去的高 
$("#SonlineBox").stop(true,true).delay(0).animate({top:scrollTopNum+topNum},"slow"); 
}); 
} 
//分割QQ 
$.fn.Sonline.splitStr = function(opts){ 
var strs= new Array(); //定义一数组 
var QqlistText = opts.Qqlist; 
strs=QqlistText.split(","); //字符分割 
var QqHtml="" 
for (var i=0;i<strs.length;i++){ 
var subStrs= new Array(); //定义一数组 
var subQqlist = strs[i]; 
subStrs = subQqlist.split("|"); //字符分割 
QqHtml = QqHtml+"<div class='QQList'><span>"+subStrs[1]+":</span><a target='_blank' href='http://wpa.qq.com/msgrd?v=3&uin="+subStrs[0]+"&site=qq&menu=yes'><img border='0' src='http://wpa.qq.com/pa?p=2:"+subStrs[0]+":41 &r=0.22914223582483828' alt='点击这里'></a></div>" 
} 
return QqHtml; 
} 
})(jQuery);

效果图如下:
jquery实现漂浮在网页右侧的qq在线客服插件示例
Javascript 相关文章推荐
Mootools 1.2教程 输入过滤第二部分(字符串)
Sep 15 Javascript
jQuery提交多个表单的小例子
Jun 30 Javascript
JavaScript cookie的设置获取删除详解
Feb 11 Javascript
JavaScript函数定义的常见注意事项小结
Sep 16 Javascript
原生javaScript实现图片延时加载的方法
Dec 22 Javascript
Javascript中的getUTCDay()方法使用详解
Jun 10 Javascript
js获取时间精确到秒(年月日)
Mar 16 Javascript
总结Javascript中的隐式类型转换
Aug 24 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
Apr 12 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
May 07 Javascript
vue.js实现带日期星期的数字时钟功能示例
Aug 28 Javascript
原生js实现照片墙效果
Oct 13 Javascript
js 程序执行与顺序实现详解
May 13 #Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
May 13 #Javascript
JS 加入收藏夹的代码(主流浏览器通用)
May 13 #Javascript
jQuery实现长文字部分显示代码
May 13 #Javascript
jq选项卡鼠标延迟的插件实例
May 13 #Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
May 13 #Javascript
怎么清空javascript数组
May 11 #Javascript
You might like
php下关于中英数字混排的字符串分割问题
2010/04/06 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
浅析php-fpm静态和动态执行方式的比较
2016/11/09 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
强制设为首页代码
2006/06/19 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
JS 退出系统并跳转到登录界面的实现代码
2013/06/29 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
2016/09/06 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
vue.js动态数据绑定学习笔记
2017/05/19 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
使用weixin-java-miniapp配置进行单个小程序的配置详解
2019/03/29 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
基于scrapy实现的简单蜘蛛采集程序
2015/04/17 Python
Python之py2exe打包工具详解
2017/06/14 Python
详解使用 pyenv 管理多个版本 python 环境
2017/10/19 Python
对numpy.append()里的axis的用法详解
2018/06/28 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
python print输出延时,让其立刻输出的方法
2019/01/07 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
python颜色随机生成器的实例代码
2020/01/10 Python
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
GC是什么?为什么要有GC?
2013/12/08 面试题
经典优秀个人求职自荐信格式
2013/09/25 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
红歌会主持词
2015/07/02 职场文书
初中数学教学反思范文
2016/02/17 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书