手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >分享一个我自己写的ToolTip提示插件(附源码)
分享一个我自己写的ToolTip提示插件(附源码)
摘要:继续分享一个我自己写的ToolTip提示插件,希望大家支持我,给我点评论,哪怕骂我的也好啊,让我知道有人在关注我“小豆”嘿嘿。废话不多说上代...

继续分享一个我自己写的 ToolTip提示插件,希望大家支持我,给我点评论,哪怕骂我的也好啊,让我知道有人在关注我“小豆” 嘿嘿。废话不多说上代码!

复制代码 代码如下:

$.fn.ToolTip = function (option) {

var defaults = {

direction: "down",

star: function () { },

from: $(this),

url: '../images/arrow.png'

};

//方法内基础变量

var opt = $.extend(defaults, option),

dirarray = ['up', 'down', 'left', 'right'],

left = 0, top = 0, _left = 0, _top = 0, arrow_w = 15, arrow_h = 60, timeout, arrow = '0 0';

//开始遍历

$(this).each(function () {

var obj = $(this);

obj.on({

mouseenter: function () {

GetPos(obj);

var objtip = $("<div></div>").css({

position: "absolute",

top: top,

left: left,

border: "solid 1px #ccc",

width: $("#" + obj.attr("data-tooltip")).outerWidth(true),

height: $("#" + obj.attr("data-tooltip")).outerHeight(true),

'border-radius': '8px 8px',

'background-color': '#fff',

'z-index': 999

}).appendTo(obj);

var objtiphead = $("<div></div>").css({

width: arrow_w == 30 ? objtip.outerWidth(true) : 15,

height: arrow_h == 30 ? objtip.outerHeight(true) : 15,

position: "absolute",

top: _top,

left: _left

}).appendTo(objtip);

var objtiparrow = $("<div></div>").css({

width: arrow_w,

height: arrow_h,

"background-image": "url(" + opt.url + ")",

"background-repeat": "no-repeat",

"background-position": arrow

}).appendTo(objtiphead);

objtip.append($("#" + obj.attr("data-tooltip")).clone().show());

objtip.on({

mouseenter: function () {

obj.data({

attip: true

});

}, mouseleave: function () {

$(".tooltip").remove();

obj.removeData("attip");

}

});

}

, mouseleave: function () {

if (!obj.data("attip"))

$(".tooltip").remove();

obj.removeData("attip");

}

});

});

//得出位置

var GetPos = function (obj) {

var objtip = $("#" + obj.attr("data-tooltip"));

var tooltippos = {

up: function () {

arrow_w = 30; arrow_h = 15;

top = obj.position().top - 12 - objtip.outerHeight(true);

left = obj.position().left;

_top = objtip.outerHeight(true);

_left = 15;

arrow = '-50px -50px';

},

down: function () {

arrow_w = 30; arrow_h = 15;

top = obj.position().top + 12 + obj.height();

left = obj.position().left;

_top = -15;

_left = 15;

arrow = '-50px 0';

},

right: function () {

arrow_w = 15;

arrow_h = 30;

top = obj.position().top;

left = obj.position().left - 12 - objtip.outerWidth(true);

_top = 15;

_left = objtip.outerWidth(true);

arrow = '-80px -20px';

},

left: function () {

arrow_w = 15;

arrow_h = 30;

top = obj.position().top;

left = obj.position().left + obj.width() + 12;

_top = 15;

_left = -15;

arrow = '0 -20px';

}

};

opt.star();

opt.direction = $.inArray(opt.direction, dirarray) != -1 ? opt.direction : "down";

switch (opt.direction) {

case "up":

if (obj[0].getBoundingClientRect().top - 10 - objtip.outerHeight() > 0)

tooltippos.up();

else

tooltippos.down();

break;

case "down":

if (obj[0].getBoundingClientRect().top + 10 + obj.height() + objtip.outerHeight() < $(window).height())

tooltippos.down();

else

tooltippos.up();

break;

case "right":

if (obj[0].getBoundingClientRect().left - 10 - objtip.outerWidth() > 0)

tooltippos.right();

else

tooltippos.left();

break;

case "left":

if (obj[0].getBoundingClientRect().left + obj.width() + 10 + objtip.outerWidth() < $(window).width())

tooltippos.left();

else

tooltippos.right();

}

}

}

经测试,好像IE7 箭头有指向错误,大家可以修改下。小问题啦,洒洒水啦~

效果图:

分享一个我自己写的ToolTip提示插件(附源码)1

当然,里面是什么内容,那就要自己创造了,我只是写了一个展示div,用法很简单的。

操作说明是对用户体验师的侮辱!

【分享一个我自己写的ToolTip提示插件(附源码)】相关文章:

js实现时间显示几天前、几小时前或者几分钟前的方法集锦

初步使用Node连接Mysql数据库

一段实时更新的时间代码

基于Web标准的UI组件 — 树状菜单(2)

js比较日期大小的方法

使用node+vue.js实现SPA应用

一些有关检查数据的JS代码

JavaScript实现仿网易通行证表单验证

文本框栏目介绍

发现的以前不知道的函数

精品推荐
分类导航