Tips 带三角可关闭的文字提示

Tips,带三角可关闭的文字提示

body{ font-size:12px;}
.lj-tipsWrap,.lj-in,.lj-close{display:inline-block;}
.lj-tipsWrap{background:#F4FBFF;line-height:1.5em;padding:5px 15px;border:1px solid #2192D3;position:absolute;text-align:left;}
.lj-in{position:absolute;zoom:1;border:10px dashed transparent;width:0px;height:0px;}
.lj-in span{zoom:1;width:0px;height:0px;overflow:hidden;}
.lj-close{position:absolute; text-decoration:none;color:#000;font-size:14px; height:9px; width:9px; overflow:hidden;line-height:0.5em; right:0; top:0;}
.lj-close:hover{color:#39F;}
.lj-top{border-top:10px solid #2192D3;bottom:-20px; left:3px;}
.lj-top span{border-top:10px solid #F4FBFF;margin:-11px 0 0 -10px;}
.lj-right{border-right:10px solid #2192D3;left:-20px; top:3px;}
.lj-right span{border-right:10px solid #F4FBFF;margin:-10px 0 0 -9px;}
.lj-bottom{border-bottom:10px solid #2192D3;top:-20px; left:3px;}
.lj-bottom span{border-bottom:10px solid #F4FBFF;margin:-9px 0 0 -10px;}
.lj-left{border-left:10px solid #2192D3;right:-20px; top:3px; }
.lj-left span{border-left:10px solid #F4FBFF;margin:-10px 0 0 -11px;}
.lj-left ~ .lj-close{left:0;}

/*css 3 渐进增强*/
.lj-tipsWrap{-webkit-border-radius:3px;-moz-border-radius:3px;-webkit-box-shadow:2px 2px 3px #eee;-moz-box-shadow:2px 2px 3px #eee;}

window.ljtips=function(){var i=document.body,j=document.documentElement,n=/msie\s([\d\.]+)/.test(navigator.userAgent.toLowerCase()),k=window;return function(l){var c=l?typeof l=="string"?document.getElementById(l):l:this,d=null,s=c.offsetWidth,t=c.offsetHeight,m=0,g=null,e={},o={left:function(a){return{top:d.top,left:d.left-a-15}},top:function(a,h){return{top:d.top-h-15,left:d.left}},right:function(){return{top:d.top,left:d.left+s+15}},bottom:function(){return{top:d.top+t+15,left:d.left}}};e.show=
function(a){if(c.lock)c.lock=false;else{c.lock=true;d=c.getBoundingClientRect();var h=i.scrollTop+j.scrollTop,f=i.scrollLeft+j.scrollLeft;a.p=a.p||"right";var b=e.append(a.p,a.closeBtn||false);b.getElementsByTagName("DIV")[0].innerHTML=a.content;var p=o[a.p](b.offsetWidth,b.offsetHeight);b.style.top=p.top+h+"px";b.style.left=p.left+f+"px";a.time&&setTimeout(function(){e.clear(document.getElementById("lj"+m))},a.time);a.fn&&a.fn.call(c,document.getElementById("lj"+m));g=function(w,q){return function(){var u=
i.scrollTop+j.scrollTop,v=i.scrollLeft+j.scrollLeft;d=c.getBoundingClientRect();var r=o[a.p](b.offsetWidth,b.offsetHeight);q.style.top=r.top+u+"px";q.style.left=r.left+v+"px"}}(c,b);n?k.attachEvent("onresize",g):k.addEventListener("resize",g,false)}};e.append=function(a,h){var f=m=Math.floor(Math.random()*1E4),b=document.createElement("DIV");b.id="lj"+f;b.innerHTML='

">

">" class="lj-close">x

'.replace("",
a).replace(//g,f);document.body.appendChild(b);if(h)document.getElementById("ljClose"+f).onclick=e.hide;else document.getElementById("ljClose"+f).style.display="none";return document.getElementById("tipsWrap-"+f)};e.clear=function(a){a&&a.parentNode&&a.parentNode.removeChild(a);n?k.detachEvent("onresize",g):k.removeEventListener("resize",g,false);c.lock=false};e.hide=function(){e.clear(document.getElementById("lj"+m))};return e}}();

\">\

\
\">\
\" class=\"lj-close\">x\

";
var dg = function(id){return document.getElementById(id);};
var dt = function(parent, nodeName){return parent.getElementsByTagName(nodeName);};
var db = document.body;
var dd = document.documentElement;
var of = 15;// 偏移量
var prefix = 'lj';// 前缀
var isie = /msie\s([\d\.]+)/.test(navigator.userAgent.toLowerCase());
var w = window;
var lock = true;// 锁定同一对象 多次弹出提示
return function(id){
var elem = id ? typeof id == "string" ? dg(id) : id : this;
var offset = null;
var width = elem.offsetWidth;
var height = elem.offsetHeight;
var rand = 0;// 随即值
var func = null;// 窗口变化绑定的函数
var _this = {};
var pos = {
left : function(w, h){return {top:offset.top , left:offset.left - w - of}},
top : function(w, h){return {top:offset.top - h - of, left:offset.left}},
right : function(w, h){return {top:offset.top , left:offset.left + width + of}},
bottom : function(w, h){return {top:offset.top + height + of , left:offset.left}}
};

_this.show = function(obj){
if(elem.lock){
elem.lock=false;return;
}else elem.lock=true;
offset = elem.getBoundingClientRect();
var top = db.scrollTop + dd.scrollTop;
var left= db.scrollLeft + dd.scrollLeft;
obj.p = obj.p || 'right';
var wrap = _this.append(obj.p, obj.closeBtn || false);
dt(wrap, "DIV")[0].innerHTML = obj.content;
var p = pos[obj.p](wrap.offsetWidth,wrap.offsetHeight);
wrap.style.top = p.top + top + "px";
wrap.style.left = p.left + left + "px";
obj.time && setTimeout(function(){_this.clear(dg(prefix+rand));}, obj.time);
obj.fn && obj.fn.call(elem, dg(prefix+rand));
//--检测窗口发生变化
func = function(a, b){
return function(){
var top = db.scrollTop + dd.scrollTop;
var left= db.scrollLeft + dd.scrollLeft;
offset = elem.getBoundingClientRect();
var c = pos[obj.p](wrap.offsetWidth, wrap.offsetHeight);
b.style.top = c.top + top + 'px';
b.style.left = c.left + left + 'px';
}
}(elem, wrap);
isie ? w.attachEvent('onresize', func) : w.addEventListener('resize', func, false);
}
_this.append = function(p,closeBtn){
var r = rand = Math.floor(Math.random() * 10000);
var x = document.createElement("DIV");
x.id = prefix + r;
x.innerHTML = html.replace("",p).replace(//g,r);
document.body.appendChild(x);
if(closeBtn){
dg("ljClose"+r).onclick = _this.hide;
}else{
dg("ljClose"+r).style.display = "none";
}
return dg("tipsWrap-" + r);
}

_this.clear = function(a){
a && a.parentNode && a.parentNode.removeChild(a);
isie ? w.detachEvent('onresize',func) : w.removeEventListener('resize', func, false);
elem.lock = false;// 解除锁定
}
_this.hide = function(){
_this.clear(dg(prefix + rand));
}
return _this;
}
}();
-->

请划过或点击下面带框的文本

看我这里一个DIV

提示在我的下面出现

提示在左边出现

提示出现2秒后会自动消失

提示可以有关闭按钮

不同担心页面放大缩小会位置会偏移哦

优点

  • 1:兼容 各种浏览器
  • 2:自己定义TIPS样式(颜色),CSS3渐进增强
  • 3:多方向弹出提示
  • 4:纯CSS+javascript(不包含任何图片)
  • 5:体积超级小 CSS+js = 3k

参数配置

  • ljtips(object).show(JSON)
  • object: DOM对象ID(test1), DOM对象
  • json:{
    content:提示的消息内容(必须),
    p:提示框位置(可选值top left bottom right),默认为right(可选),
    closeBtn:是否有关闭按钮(true false) 默认值(false)(可选),
    time:多少毫秒提示框消失(可选)
    }
    

使用说明

  • 主要方法 .show(); .hide();.clear(); 一般你只需要使用show,hide;
  • 使用1
  • 首先实例化一个ljtips(var tips=ljtips('test1')); 然后使用tips.show(JSON)
  • 使用2
  • 在行内调用提示框"<div onclick=" ljtips(this).show(JSON); "></div>"
  • 使用3
  • 在JS里调用document.getElementById("test6").onmouseover = function(){ljtips(this).show({content:"这个框你关不掉了吧!没有关闭按钮!",p:'right'})};

var test1 = ljtips('test1');
document.getElementById("test1").onmouseover = function(){test1.show({content:"鼠标划过时候的TIPS...
兼容主流浏览器 IE 6 7 8 chorme Firefox Opera Safari"})};
document.getElementById("test1").onmouseout = function(){test1.hide();};
document.getElementById("test2").onfocus = function(){ljtips(this).show({content:"这个提示会在
input的上方!有个关闭按钮哦",p:'top',closeBtn:true})};
document.getElementById("test3").onmouseover = function(){ljtips(this).show({content:"我在下面出现了!不要认为会用到图片哦!",p:'bottom',closeBtn:true})};
document.getElementById("test4").onmouseover = function(){ljtips(this).show({content:"我可以在4个方向上",p:'left',closeBtn:true})};
document.getElementById("test5").onmouseover = function(){ljtips(this).show({content:"提示出现2秒后会自动消失",p:'bottom',time:2000})};
document.getElementById("test6").onmouseover = function(){ljtips(this).show({content:"这个框你关不掉了吧!没有关闭按钮!",p:'right'})};
document.getElementById("test7").onmouseover = function(){ljtips(this).show({content:"您可以放大或者缩小浏览器窗口!
他会跟随这个绝对位置,不会有丝毫偏差。",p:'right',closeBtn:true})};

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

(0)

相关推荐

  • Tips 带三角可关闭的文字提示

    Tips,带三角可关闭的文字提示 body{ font-size:12px;} .lj-tipsWrap,.lj-in,.lj-close{display:inline-block;} .lj-tipsWrap{background:#F4FBFF;line-height:1.5em;padding:5px 15px;border:1px solid #2192D3;position:absolute;text-align:left;} .lj-in{position:absolute;zoom

  • JS实现跟随鼠标的链接文字提示框效果

    本文实例讲述了JS实现跟随鼠标的链接文字提示框效果.分享给大家供大家参考.具体如下: 这里使用JavaScript与CSS实现链接提示效果,不会改变你原来的链接结构,使用链接原有的title标签来实现,如果之前你使用有title标签,那你几乎只需把JS代码拷贝到你的网页中即可.你会发现,运行本效果后,鼠标在链接上移动的话,文字提示框会跟随鼠标而移动位置. 运行效果如下图所示: 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran

  • jQuery文字提示与图片提示效果实现方法

    本文实例讲述了jQuery文字提示与图片提示效果实现方法.分享给大家供大家参考,具体如下: 1.效果如图: 2.文字提示代码: <script type="text/javascript"> //<![CDATA[ $(function(){ var x = 10; var y = 20; $("a.tooltip").mouseover(function(e){ this.myTitle = this.title; this.title = &q

  • Element Tooltip 文字提示的使用示例

    组件- 文字提示 基础用法 <div class="box"> <div class="top"> <el-tooltip class="item" effect="dark" content="Top Left 提示文字" placement="top-start"> <el-button>上左</el-button> <

  • jquery实现简单文字提示效果

    本文实例讲述了jquery实现简单文字提示效果.分享给大家供大家参考,具体如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>jquery实现简单文字提示</title> &l

  • jQuery悬停文字提示框插件jquery.tooltipster.js用法示例【附demo源码下载】

    本文实例讲述了jQuery悬停文字提示框插件jquery.tooltipster.js用法.分享给大家供大家参考,具体如下: 运行效果截图如下: index.html页面: <!DOCTYPE html> <html lang="en"> <head> <title>jQuery Tooltips悬停文字提示框效果</title> <meta charset="utf-8" /> <lin

  • 用WPF实现屏幕文字提示的实现方法

    1. 新建一个WPF Application.2. 将Window的WindowStyle属性设置为"None"去掉标题栏,将AllowsTransparency属性设置为"True"允许透明,Topmost属性设置为"True"使提示文字显示在顶层,Background属性设置为"#00000000"使窗口透明.3. 设置Grid的Background属性.如显示黑色文字提示,可使用半透明白色背景.透明的效果如果由Opaci

  • 基于JS实现密码框(password)中显示文字提示功能代码

    其实实际上实现中并不能让password中显示文字提示,但是我们在工作中有这样的需求,当没输入东西的时候,框内有提示输入密码,但是当输入东西的时候又显示的是*号,那么是如何实现的呢?其实原理很简单,就是放两个文本框,样式以及定位都是一样的.先将type为password的隐藏,只显示type为text的伪密码框,value设置提示内容例如请输入密码.然后当input触发的时候,type为text的input隐藏,让type为password的input显示出来.然后当检测password的val

  • JavaScript实现选中文字提示新浪微博分享效果

    本文实例为大家分享了JS新浪微博分享功能,供大家参考,具体内容如下 <!DOCTYPE html> <html xmlns:wb="http://open.weibo.com/wb"> <head> <meta charset="utf-8"> <title>javaScript实现选中文字提示新浪微博分享的效果</title> <style type="text/css&quo

  • PyQt5 closeEvent关闭事件退出提示框原理解析

    这篇文章主要介绍了PyQt5 closeEvent关闭事件退出提示框原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 如果关闭QWidget,就会产生一个QCloseEvent,并且把它传入到closeEvent函数的event参数中.改变控件的默认行为,就是替换掉默认的事件处理. 原生的英文提示框: # 添加一个退出的提示事件 def closeEvent(self, event): """我们创建了一个消息框,上面

随机推荐