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 相关文章推荐
直接生成打开窗口代码,不必下载
May 14 Javascript
JavaScript获得选中文本内容的方法
Dec 02 Javascript
8个实用的jQuery技巧
Mar 04 Javascript
对js关键字命名的疑问介绍
Apr 25 Javascript
jquery实现倒计时代码分享
Jun 13 Javascript
JavaScript获取某年某月的最后一天附截图
Jun 23 Javascript
JavaScript实现左侧菜单效果
Dec 14 Javascript
js原生方法被覆盖,从新赋值原生的方法
Jan 02 Javascript
node.js到底要不要加分号浅析
Jul 11 Javascript
vue后台管理之动态加载路由的方法
Aug 13 Javascript
微信小程序 textarea 层级过高问题简单解决方案
Oct 14 Javascript
KnockoutJS数组比较算法实例详解
Nov 25 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 选项及相关信息函数库
2006/12/04 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
laravel5.1 ajax post 传值_token示例
2019/10/24 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
用jQuery技术实现Tab页界面之二
2009/09/21 Javascript
JavaScript isArray()函数判断对象类型的种种方法
2010/10/11 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
jQuery中change事件用法实例
2014/12/26 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
javascript实现禁止复制网页内容汇总
2015/12/30 Javascript
canvas实现流星雨的背景效果
2017/01/13 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
微信小程序之onLaunch与onload异步问题详解
2019/03/28 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)
2014/06/09 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
tensorflow实现训练变量checkpoint的保存与读取
2020/02/10 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
Python之Django自动实现html代码(下拉框,数据选择)
2020/03/13 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
KELLER SPORTS荷兰:在线订购最好的运动产品
2020/10/13 全球购物
创业计划书模版
2014/02/05 职场文书
公司年会抽奖活动主持词
2014/03/31 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书
试用期自我评价范文
2015/03/10 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
大学生心理健康教育心得体会
2016/01/12 职场文书