1 Star 0 Fork 0

jeArts / showTips

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
jquery.showTips.js 6.29 KB
一键复制 编辑 原始数据 按行查看 历史
jeArts 提交于 2015-04-23 11:30 . showTips
// JavaScript Document
(function(jQuery) {
jQuery.fn.showTips = function(options,elem){
var config = {
skin:"trips",
content:$(this).attr("tips")||"弹出类型的气泡提示!", //气泡提示内容里面可以是HTML,默认显示自定义的提示内容
width:"auto", //默认为auto,可以写具体尺寸如:200
alignTo:["right","center"], //箭头方向
color:["rgb(247, 206, 57)","#FFFEF4"], //这里是提示层的风格,第一个参数为提示边框颜色,第二个参数为提示背景颜色
type:"html", //显示内容类型
trigger:"click", //默认为点击显示,show为初始化就显示,hover为经过显示,focus焦点显示,mouse跟随鼠标显示隐藏
spacing:10, //默认为箭头距离对象的尺寸
customid:"", //自定义ID
isclose:false, //是否显示关闭按钮
success : null //成功后的回调函数
};
var opts = jQuery.extend(config, options);
return this.each(function(){
var that = jQuery(this),tipBox,tipId,selfH,selfW,conId,docW, spa = opts.spacing, skin=opts.skin;
var Mathrandom = Math.floor(Math.random() * 9999999);
var pmr = (opts.customid=="") ? Mathrandom :opts.customid.replace(/[#.]/, "");
var pointer=opts.alignTo.length===1 ? ''+opts.alignTo[0]+'' : ''+opts.alignTo[0]+'-'+opts.alignTo[1]+'';
if(typeof elem == 'string') {
if(elem =="show"){
jQuery('#tip'+pmr).show(); jQuery("#con"+pmr).html(opts.content);
showPosition(pointer,jQuery('#tip'+pmr));
};
if(elem =="hide"){jQuery('#tip'+pmr).hide()};
};
if(typeof elem == '' || typeof elem == undefined){return true};
if(jQuery('#tip'+pmr).length==1){return false;}
tipBox=jQuery('<div class="'+skin+' '+skin+'-'+pointer+'" id="tip'+pmr+'"><i></i><em></em><div class="'+skin+'con" id="con'+pmr+'"></div></div>').appendTo(document.body);
tipId = jQuery("#tip"+pmr);
conId = jQuery("#con"+pmr);
var edgecolor='border-'+opts.alignTo[0]+'-color', tfi=tipId.find("i"), tfem=tipId.find("em"), tfiem=tipId.find("i,em");
tipId.css({'position':'absolute',border:'1px solid','border-color':opts.color[0],'background-color':opts.color[1]});
if(opts.alignTo[1]=='center'){ var offpos=50,percen="%"; }else{ var offpos=5,percen="px"; };
tfiem.css({width:0,height:0,content:'','position':'absolute'})
tfi.css({border:'8px solid transparent','z-index':5});
tfem.css({border:'7px solid transparent','z-index':10});
switch (pointer) {
case 'top-center':
case 'bottom-center':
case 'top-left':
case 'bottom-left':
var poi="left";
if(pointer=='top-center' || pointer=='bottom-center'){
tfi.css({"margin-left":"-8px"});
tfem.css({"margin-left":"-7px"});
}
break;
case 'left-center':
case 'right-center':
case 'left-top':
case 'right-top':
var poi="top";
if(pointer=='left-center' || pointer=='right-center'){
tfi.css({"margin-top":"-8px"});
tfem.css({"margin-top":"-7px"});
}
break;
default:
var poi="right";
break;
};
if(pointer=='follow'){
tfi.css({'border-bottom-color':opts.color[0],left:''+offpos+percen+'',bottom:'100%'});
tfem.css({'border-bottom-color':opts.color[1],left:''+(offpos+(opts.alignTo[1]=='center'?0:1))+percen+'',bottom:'100%'});
}else{
tfi.css(edgecolor,opts.color[0]).css(poi,''+offpos+percen+'');
tfem.css(edgecolor,opts.color[1]).css(poi,''+(offpos+(opts.alignTo[1]=='center'?0:1))+percen+'');
tfiem.css(opts.alignTo[0],'100%');
};
switch (opts.type) {
case 'html':conId.html(opts.content); break;
case 'id' :
var tempid=jQuery(opts.content) ,wrap = document.createElement("div");
if(tempid.css("display") == "none"){ tempid.css({display:"block"}); }
conId.append(tempid);
break;
};
if(opts.isclose){
jQuery('<span class="'+skin+'close" id="close'+pmr+'">&times;</span>').appendTo(tipId);
tipId.find("#close"+pmr+"").on("click",function(){tipId.hide();});
}
if(typeof opts.width === 'string'){
docW = parseInt(document.body.clientWidth*(opts.width.replace('%','')/100));
(typeof opts.width == 'auto' || typeof opts.width == '') ? tipBox.css({width:'auto'}) : tipBox.css({width:docW});
tipBox.height();
}else{
tipBox.width(opts.width).height();
}
function showPosition(pointer,cell){
var selfH = that.outerHeight(true), selfW = that.outerWidth(true);
var post=that.offset().top, posl=that.offset().left;
var tipCell=(cell=="" || cell==undefined) ? tipId : cell;
var tipH=tipCell.outerHeight(true), tipW=tipCell.outerWidth(true);
switch (pointer) {
case 'top-left': tipCell.css({top:post-tipH-spa,left:posl}); break;
case 'top-center': tipCell.css({top:post-tipH-spa,left:posl-(tipW/2)+(selfW/2)}); break;
case 'top-right': tipCell.css({top:post-tipH-spa,left:posl-(tipW-selfW)}); break;
case 'bottom-left': tipCell.css({top:post+selfH+spa,left:posl}); break;
case 'bottom-center': tipCell.css({top:post+selfH+spa,left:posl-(tipW/2)+(selfW/2)}); break;
case 'bottom-right': tipCell.css({top:post+selfH+spa,left:posl-(tipW-selfW)}); break;
case 'left-top': tipCell.css({top:post,left:posl-tipW-spa}); break;
case 'left-center': tipCell.css({top:post-(tipH/2)+(selfH/2),left:posl-tipW-spa}); break;
case 'right-top': tipCell.css({top:post,left:posl+selfW+spa}); break;
case 'right-center': tipCell.css({top:post-(tipH/2)+(selfH/2),left:posl+selfW+spa}); break;
case 'follow': that.mousemove(function(e) { tipCell.css({top:e.pageY + 30,left:e.pageX - 6}); }); break;
};
}
tipBox.hide();
switch (opts.trigger){
case 'show':showPosition(pointer);tipBox.show();break;
case 'click':that.click(function(){showPosition(pointer);tipBox.show();});break;
case 'hover':that.hover(function(){showPosition(pointer);tipBox.show(); tipBox.on("mouseover",function(){jQuery(this).show()}).on("mouseout",function(){jQuery(this).hide()})},function(){tipBox.hide();});break;
case 'focus':that.focus(function(){showPosition(pointer);tipBox.show();}); that.blur(function(){tipBox.hide();});break;
case 'mouse':that.hover(function(){showPosition(pointer);tipBox.show();},function(){tipBox.hide();});break;
};
setTimeout(function(){opts.success && opts.success();}, 1);
});
}
})(jQuery);
JavaScript
1
https://gitee.com/arts1986/showTips.git
git@gitee.com:arts1986/showTips.git
arts1986
showTips
showTips
master

搜索帮助