tooltip提示插件
tooltip提示信息插件
原理:定位元素在页面中的位置即坐标信息,将显示节点元素插入到body中绝对应为到相应位置,显示内容从指定元素的属性(dataMess)中获取或者通过设置获取。
使用方法:
$("#test").iTooltip({"posType":"top"});
<div id="test" class="test" dataMess="测试数据中。。。<br/>测试数据中。。。">测试</div>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>tooltip提示插件</title>
<style>.iTooltipMes{
position: absolute;
display: block;
color: #000;
font-size: 12px;
padding: 10px;
background: #fff;
border: 1px solid #999;
border-radius: 3px;
box-shadow: 0px 1px 3px rgba(0,0,0,0.3);
z-index: 999999;
}
.iToolTri{
position: absolute;
z-index: 1;
display: block;
width: 0px;
height: 0px;
font-size: 0px;
line-height: 0px;
border: 8px solid #999999;
}
.iToolTri i{
position: absolute;
z-index: 1;
display: block;
width: 0px;
height: 0px;
font-size: 0px;
line-height: 0px;
border: 6px solid #ffffff;
}
.iToolTriTop{
left: 50%;
bottom: -16px;
margin-left: -8px;
border-color: #999999 transparent transparent transparent;
border-style: solid dashed dashed dashed;
}
.iToolTriTop i{
left: -6px;
bottom: -4px;
border-color: #ffffff transparent transparent transparent;
border-style: solid dashed dashed dashed;
}
.iToolTriBtm{
left: 50%;
top: -16px;
margin-left: -8px;
border-color: transparent transparent #999999 transparent;
border-style: dashed dashed solid dashed;
}
.iToolTriBtm i{
left: -6px;
top: -4px;
border-color: transparent transparent #ffffff transparent;
border-style: dashed dashed solid dashed;
}
.iToolTriRt{
left: -16px;
top: 50%;
margin-top: -8px;
border-color: transparent #999999 transparent transparent ;
border-style: dashed solid dashed dashed ;
}
.iToolTriRt i{
left: -4px;
top: -6px;
border-color: transparent #ffffff transparent transparent;
border-style: dashed solid dashed dashed;
}
.iToolTriLt{
right: -16px;
top: 50%;
margin-top: -8px;
border-color: transparent transparent transparent #999999;
border-style: dashed dashed dashed solid;
}
.iToolTriLt i{
right: -4px;
top: -6px;
border-color: transparent transparent transparent #ffffff;
border-style: dashed dashed dashed solid;
}
.animated {
-webkit-animation-duration: 0.3s;
animation-duration: 0.3s;
-webkit-animation-fill-mode: both;
animation-fill-mode: both;
}
.animated.hinge {
-webkit-animation-duration: 0.6s;
animation-duration: 0.6s;
}
@-webkit-keyframes fadeInDown {
0% {
opacity: 0;
-webkit-transform: translateY(-20px);
transform: translateY(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0);
}
}
@keyframes fadeInDown {
0% {
opacity: 0;
-webkit-transform: translateY(-20px);
-ms-transform: translateY(-20px);
transform: translateY(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
}
.fadeInDown {
-webkit-animation-name: fadeInDown;
animation-name: fadeInDown;
}
@-webkit-keyframes fadeInLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-20px);
transform: translateX(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes fadeInLeft {
0% {
opacity: 0;
-webkit-transform: translateX(-20px);
-ms-transform: translateX(-20px);
transform: translateX(-20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
}
.fadeInLeft {
-webkit-animation-name: fadeInLeft;
animation-name: fadeInLeft;
}
@-webkit-keyframes fadeInUp {
0% {
opacity: 0;
-webkit-transform: translateY(20px);
transform: translateY(20px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
transform: translateY(0);
}
}
@keyframes fadeInUp {
0% {
opacity: 0;
-webkit-transform: translateY(20px);
-ms-transform: translateY(20px);
transform: translateY(20px);
}
100% {
opacity: 1;
-webkit-transform: translateY(0);
-ms-transform: translateY(0);
transform: translateY(0);
}
}
.fadeInUp {
-webkit-animation-name: fadeInUp;
animation-name: fadeInUp;
}
@-webkit-keyframes fadeInRight {
0% {
opacity: 0;
-webkit-transform: translateX(20px);
transform: translateX(20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
transform: translateX(0);
}
}
@keyframes fadeInRight {
0% {
opacity: 0;
-webkit-transform: translateX(20px);
-ms-transform: translateX(20px);
transform: translateX(20px);
}
100% {
opacity: 1;
-webkit-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
}
}
.fadeInRight {
-webkit-animation-name: fadeInRight;
animation-name: fadeInRight;
}
</style>
<script src="http://files.cnblogs.com/kuikui/jquery-1.10.2.min.js"></script>
<style >
*{margin: 0px;padding: 0px;}
body{position: relative;height: 1500px; font-size: 14px; }
.test{position: absolute; width: 100px; height: 30px; line-height: 30px; text-align: center; border: 1px solid #f0f; cursor: pointer;}
.left{ left: 10px; top: 10px;}
.top{ left: 50%; top: 10px; margin-left: -50px;}
.right{right: 10px; top: 10px;}
.bottom{left: 50%; bottom: 10px; margin-left: -50px;}
.center{left: 50%; top: 50%; margin-left: -50px; margin-top: -15px;}
</style>
</head>
<body>
<div id="left" class="test left" dataMess="测试数据中。。。<br/>测试数据中。。。">测试左</div>
<div id="top" class="test top" dataMess="测试数据中。。。<br/>测试数据中。。。">测试上</div>
<div id="right" class="test right" dataMess="测试数据中。。。<br/>测试数据中。。。">测试右</div>
<div id="bottom" class="test bottom" dataMess="测试数据中。。。<br/>测试数据中。。。">测试下</div>
<div id="center" class="test center" dataMess="http://www.cnblogs.com/kuikui<br/>测试数据中。。。">测试中</div>
<script>(function($, window, document) {
var pluginName = "iTooltip",
defaults = {
addClass: "",
dataMess: "",
posType: "top" // [left|top|right|bottom]
};
function Plugin(element, options) {
var options = $.extend({}, defaults, options);
this.opts = options;
this.$elem = element;
this.elem = element.selector;
this.anis = {top:"fadeInDown",right:"fadeInLeft",bottom:"fadeInUp",left:"fadeInRight"};
this.tris = {top:"iToolTriTop",right:"iToolTriRt",bottom:"iToolTriBtm",left:"iToolTriLt"};
this.isOk = true;
this.tmpPosType = null;
this.init();
};
Plugin.prototype = {
init: function() {
var _this = this;
$(document).on("mouseover", _this.elem, function() {
var $this = $(this);
if (_this.isOk) {
_this.isOk = false;
_this.setShow($this);
}
});
$(document).on("mouseout", _this.elem, function() {
if(!_this.isOk){
_this.isOk = true;
_this.tmpPosType = _this.opts.posType;
$(".iTooltipMes").remove();
}
});
},
setShow: function(obj) {
var _this = this;
var l = obj.offset().left;
var t = obj.offset().top;
var w = obj.width();
var h = obj.height();
var mess = _this.opts.dataMess || obj.attr("dataMess");
var tmpHtml = "<div class='iTooltipMes animated'>" + mess + "<i class='iToolTri'><i></i></i></div>";
$("body").append(tmpHtml);
var iTooltipMes = $(".iTooltipMes");
var ow = iTooltipMes.outerWidth();
var oh = iTooltipMes.outerHeight();
var tmpt = 0;
var tmpl = 0;
var distance = 10;
var win = $(window);
var winW = win.width();
var winH = win.height();
var winTop = win.scrollTop();
if( t < (h + distance + winTop) && _this.opts.posType ==="top"){
_this.tmpPosType = "bottom";
}
if((l+w+ow > winW) && _this.opts.posType ==="right"){
_this.tmpPosType = "left";
}
if((l< ow ) && _this.opts.posType ==="left"){
_this.tmpPosType = "right";
}
if( ((t - winH + oh) > winTop) && _this.opts.posType ==="bottom"){
_this.tmpPosType = "top";
}
_this.tmpPosType = _this.tmpPosType || _this.opts.posType;
switch(_this.tmpPosType){
case "top":
tmpt = t - oh - distance;
tmpl = l + ((w-ow)/2);
break;
case "right":
tmpt = t - ((oh-h)/2) ;
tmpl = l + w + distance;
break;
case "bottom":
tmpt = t + h + distance;
tmpl = l + ((w-ow)/2);
break;
case "left":
tmpt = t - ((oh-h)/2);
tmpl = l - ow - distance;
break;
default:
break;
}
if(!!_this.opts.addClass){
iTooltipMes.addClass(_this.opts.addClass);
}
iTooltipMes.addClass(_this.anis[_this.tmpPosType]).css({
left: tmpl + "px",
top: tmpt + "px"
}).find(".iToolTri").addClass(_this.tris[_this.tmpPosType]);
}
};
$.fn[pluginName] = function() {
var args = arguments;
if(!$(this).selector){
return;
}
$(this).data("iTooltip", new Plugin(this, args[0]));
}
})(jQuery, window, document);</script>
<script type="text/javascript">
$("#left").iTooltip({ "posType":"right"});
$("#top").iTooltip({ "posType":"bottom"});
$("#right").iTooltip({ "posType":"left"});
$("#bottom").iTooltip({ "posType":"top"});
$("#center").iTooltip({ "posType":"top"});
</script>
</body>
</html>
运行代码
tooltip提示插件的更多相关文章
- BootStrap之 提示工具(Tooltip)插件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- Bootstrap-Plugin:提示工具(Tooltip)插件
ylbtech-Bootstrap-Plugin:提示工具(Tooltip)插件 1.返回顶部 1. Bootstrap 提示工具(Tooltip)插件 当您想要描述一个链接的时候,提示工具(Tool ...
- Bootstrap 提示工具(Tooltip)插件
一.提示工具(Tooltip)插件根据需求生成内容和标记,默认情况下是把提示工具(tooltip)放在它们的触发元素后面. 有以下两种方式添加提示工具(tooltip): 1.通过data属性:如需添 ...
- 2016 正确 sublime安装PHPcs PHPcodesniffer代码规范提示插件,修正网上部分不详细描述
对你有助请点赞,请顶,不好请踩------送人玫瑰,手留余香!-------------------14:37 2016/3/212016 正确 sublime安装PHPcs PHPcodesniff ...
- jQuery打造智能提示插件二(可编辑下拉框)
在上一篇 jQuery打造智能提示插件 上改进,增加下拉按钮,修复点击下拉区域外不隐藏BUG 效果 下拉按钮素材: js封装,注意红色部分为BUG修复,然后传入boxwidth不带px: /* /// ...
- 如何取消MSSQL自带智能提示步骤,使用第三方智能提示插件
步骤1如下: [工具]——[选项]——[文本编辑器]——[Transact-SQL]——[IntelliSense]——[Transact-SQL IntelliSense 设置]——(取消选择)—— ...
- 自己写的一个简单的jQuery提示插件
代码: /** * 2014年11月13日 * 提示插件 */ (function ($) { $.fn.tips = function (text) { var divtipsstyle = &qu ...
- jQuery Label Better – 友好的表单输入框提示插件
jQuery Label Better 帮助你标记您的表单输入域,带有美丽的动画效果而且不占用空间.这个插件的独特之处在于所有你需要做的就是添加一个占位符文本,只有当用户需要它的时候才显示标签. 您可 ...
- PNotify – 简单易用的 JS 通知,消息提示插件
PNotify 是一个 JavaScript 通知插件,前身为 Pines Notify.它旨在提供无与伦比的灵活性,同时很容易使用.它可以提供无阻塞的通知,允许用户无需关闭通知或者提示信息就可以点击 ...
随机推荐
- 关于hr标签兼容个浏览器的代码
hr标签,相信大家都能熟悉,我们一般用它来产生横线的效果.我们可以对它定义“颜色”.“高度”.“宽度”.“边框”等样式. 在此只讨论“颜色”和“边框”对于不同版本浏览器的兼容性. 颜色: 火狐.IE7 ...
- js中比较实用的时期格式化
在javascript中,关于时间格式的转换. 可以将“2010-1-2” 转换为 “2010-01-02 00:00:00” 或者将“2010-1-2 2:13:6" 转换为 “2010- ...
- sql 过了试用期不能启动的,修改时间启动后还原。
@echo off set nowtime=%date% echo 2014-12-01|date sc start MSSQLSERVER ping -n 5 127.1&g ...
- 揭秘Sql2014新特性-tempdb性能提升
一直以来,在高负载,复杂的生产环境中,tempdb的压力是成为整个实例瓶颈的重要因素之一.微软的工程师们也在各个版本中不断优化它的使用.到了Sql Server2014又有了新的特性使其性能得temp ...
- 盘点国内网站常用的一些 CDN 公共库加速服务
CDN公共库是指将常用的JS库存放在CDN节点,以方便广大开发者直接调用.与将JS库存放在服务器单机上相比,CDN公共库更加稳定.高速.一 般的CDN公共库都会包含全球所有最流行的开源JavaScri ...
- 你的联动够快够小吗——基于Telerik(ASP.NET平台)
一.目的 这篇文章主要是以如何实现联动下拉为核心,其要原理是利用两个下拉控件.默认两个下拉均为未选择状态,并且 父下拉中存在数据,子下来中没有数据.只有当用户选择某一个父下拉中的某条数据后,子下拉中才 ...
- 【译】UNIVERSAL IMAGE LOADER.PART 2---ImageLoaderConfiguration详解
ImageLoader类中包含了所有操作.他是一个单例,为了获取它的一个单一实例,你需要调用getInstance()方法.在使用ImageLoader来显示图片之前,你需要初始化它的配置-Image ...
- 【系统移植】Android系统移植
$ . .. Device . SimulatorWhich would you like] Build type choices are. release . debugWhich ...
- Command模式
Command模式只是封装了一个没有任何变量的函数. interface Command{ void Excute();} 具有强烈的分解功能的味道.把函数层面的任务提升到了类的层面(一个类仅仅是为了 ...
- 详解Bootstrap表单组件
表单常见的元素主要包括:文本输入框.下拉选择框.单选框.复选框.文本域.按钮等.下面是不同的bootstrap版本: LESS: forms.less SASS: _forms.scss boot ...