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


Posted in Javascript onJanuary 20, 2013

继续分享一个我自己写的 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 class='tooltip'></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提示插件(附源码) 
当然,里面是什么内容,那就要自己创造了,我只是写了一个展示div,用法很简单的。
源码下载
操作说明是对用户体验师的侮辱!
Javascript 相关文章推荐
JS IE和FF兼容性问题汇总
Feb 09 Javascript
理解JavaScript的caller,callee,call,apply
Apr 28 Javascript
javascript小数计算出现近似值的解决办法
Feb 06 Javascript
jQuery 选择器理解
Mar 16 Javascript
chrome原生方法之数组
Nov 30 Javascript
jQuery实现的兼容性浮动层示例
Aug 02 Javascript
ES6新特征数字、数组、字符串
Oct 01 Javascript
JavaScript实现同一个页面打开多张图片
Dec 29 Javascript
vue移动端路由切换实例分析
May 14 Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 Javascript
JavaScript使用闭包模仿块级作用域操作示例
Jan 21 Javascript
js+css3实现炫酷时钟
Aug 18 Javascript
使用jQuery.fn自定义jQuery翻页插件
Jan 20 #Javascript
javascript改变position值实现菜单滚动至顶部后固定
Jan 18 #Javascript
js+数组实现网页上显示时间/星期几的实用方法
Jan 18 #Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
Jan 18 #Javascript
js replace正则表达式应用案例讲解
Jan 17 #Javascript
Javascript模块化编程(三)require.js的用法及功能介绍
Jan 17 #Javascript
Javascript模块化编程(一)AMD规范(规范使用模块)
Jan 17 #Javascript
You might like
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
详解json在php中的应用
2018/09/30 PHP
非常好的js代码
2006/06/27 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
jQuery中click事件用法实例
2014/12/26 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
js实现点击切换checkbox背景图片的简单实例
2017/05/08 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
微信小程序与后台PHP交互的方法实例分析
2018/12/10 Javascript
React Native 混合开发多入口加载方式详解
2019/09/23 Javascript
layui table 列宽百分比显示的实现方法
2019/09/28 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
Python实现堆排序的方法详解
2016/05/03 Python
Python实现登陆文件验证方法
2018/10/06 Python
Python编程图形库之Pillow使用方法讲解
2018/12/28 Python
python 使用pandas计算累积求和的方法
2019/02/08 Python
python 多个参数不为空校验方法
2019/02/14 Python
python模块和包的应用BASE_PATH使用解析
2019/12/14 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
Skip Hop官网:好莱坞宝宝挚爱品牌
2018/06/17 全球购物
物业电工岗位职责
2013/11/20 职场文书
企业厂长岗位职责
2013/12/17 职场文书
小学生期末评语大全
2014/04/21 职场文书
2014年妇联工作总结
2014/11/21 职场文书
团组织推优材料
2014/12/29 职场文书
vue3中的组件间通信
2021/03/31 Vue.js
nginx共享内存的机制详解
2022/03/21 Servers
Python实现双向链表
2022/05/25 Python