新鲜出炉的js tips提示效果


Posted in Javascript onApril 03, 2011

兼容性已经测过:IE6\IE7\IE8\FF3\CHROME10

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<body> 
<br><br><br><br><br><br><br><br> 
<input id='test'> 
<br><br><br><br><br><br><br><br> 
<a href='#' id='test2' onmouseover="tips.show('普通链接或按钮提示-灰色-鼠标离开消失-300像素', 'test2', null, '#000000', 300)" onmouseout="tips.hidden('test2')">普通链接或按钮提示</a> 
<script> 
//提示消息类 
var tips = { 
temp : {}, 
/*** 
* 弹出提示 
* 
* @param string msg 提示文字内容 
* @param string id 要弹出提示的目标对象的id,如果id错误/null/false/0则主窗口弹出 
* @param int time 定时消失时间毫秒数,如果为null/0/false则不定时 
* @param string color 提示内容的背景颜色格式为#000000 
* @param int width 提示窗宽度,默认300 
*/ 
show : function(msg, id, time, color, width) 
{ 
var target = this._get(id); 
if(!target) { id = 'window'; } 
//如果弹出过则移除重新弹出 
if(this._get(id+'_tips')) { this.remove(id); } 
//设置默认值 
msg = msg || 'error'; 
color = color || '#ea0000'; 
width = width || 300; 
time = time ? parseInt(time) : false; 
if(id=='window') { 
var y = document.body.clientHeight/2+document.body.scrollTop; 
var x = (document.body.clientWidth-width)/2; 
var textAlign = 'center', fontSize = '15',fontWeight = 'bold'; 
} else { 
//获取对象坐标信息 
for(var y=0,x=0; target!=null; y+=target.offsetTop, x+=target.offsetLeft, target=target.offsetParent); 
var textAlign = 'left', fontSize = '12',fontWeight = 'normal'; 
} 
//弹出提示 
var tipsDiv = this._create({display:'block',position:'absolute',zIndex:'1001',width:(width-2)+'px',left:(x+1)+'px',padding:'5px',color:'#ffffff',fontSize:fontSize+'px',backgroundColor:color,textAlign:textAlign,fontWeight:fontWeight,filter:'Alpha(Opacity=50)',opacity:'0.7'}, {id:id+'_text', innerHTML:msg, onclick:function(){tips.hidden(id);}}); 
document.body.appendChild(tipsDiv); 
tipsDiv.style.top = (y-tipsDiv.offsetHeight-12)+'px'; 
document.body.appendChild(this._create({display:'block',position:'absolute',zIndex:'1000',width:(width+10)+'px',height:(tipsDiv.offsetHeight-2)+'px',left:x+'px',top:(y-tipsDiv.offsetHeight-11)+'px',backgroundColor:color,filter:'Alpha(Opacity=50)',opacity:'0.7'}, {id:id+'_bg'})); 
if(id!='window') { 
var arrow = this._create({display:'block',position:'absolute',overflow:'hidden',zIndex:'999',width:'20px',height:'10px',left:(x+20)+'px',top:(y-13)+'px'}, {id:id+'_arrow'}); 
arrow.appendChild(this._create({display:'block',overflow:'hidden',width:'0px',height:'10px',borderTop:'10px solid '+color,borderRight:'10px solid #fff', borderLeft:'10px solid #fff',filter:'Alpha(Opacity=70)',opacity:'0.8'})); 
document.body.appendChild(arrow); 
} 
//标记已经弹出 
this.temp[id] = id; 
//如果定时关闭 
if(time) { setTimeout(function(){tips.hidden(id);}, time) } 
return id; 
}, 
/*** 
* 隐藏提示 
* 
* @param string id 要隐藏提示的id,如果要隐藏主窗口提示id为window,如果要隐藏所有提示id为空即可 
*/ 
hidden : function(id) 
{ 
if(!id) { for(var i in this.temp) { this.hidden(i); } return; } 
var t = this._get(id+'_text'), d = this._get(id+'_bg'), a = this._get(id+'_arrow'); 
if(t) { t.parentNode.removeChild(t); } 
if(d) { d.parentNode.removeChild(d); } 
if(a) { a.parentNode.removeChild(a); } 
}, 
_create : function(set, attr) 
{ 
var obj = document.createElement('div'); 
for(var i in set) { obj.style[i] = set[i]; } 
for(var i in attr) { obj[i] = attr[i]; } 
return obj; 
}, 
_get : function(id) 
{ 
return document.getElementById(id); 
} 
}; 

window.onload = function(){ 
tips.show('主窗口提示-绿色-不定时-300像素', null, null, '#009900', 300); 
tips.show('表单报错提示-红色-3000毫秒消失-250像素', 'test', 3000, '#ea0000', 250); 
} 
document.onclick = function(){ 
tips.hidden(); 
} 
</script>
Javascript 相关文章推荐
一个多次搜索+多次传值的解决方案
Jan 20 Javascript
最新最热最实用的15个jQuery插件汇总
Jul 05 Javascript
基于jQuery的Web上传插件Uploadify使用示例
May 19 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
Jun 12 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
js封装tab标签页实例分享
Dec 19 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
Jul 31 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
Feb 01 Javascript
详解ES7 Decorator 入门解析
Feb 18 Javascript
JavaScript实现轮播图片完整代码
Mar 07 Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
May 06 Javascript
JavaScript实现无限轮播效果
Nov 19 Javascript
使用Firebug对js进行断点调试的图文方法
Apr 02 #Javascript
dreamweaver 安装Jquery智能提示
Apr 02 #Javascript
jquery 读取页面load get post ajax 四种方式代码写法
Apr 02 #Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
Apr 02 #Javascript
JQuery文本框高亮显示插件代码
Apr 02 #Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
Apr 02 #Javascript
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
Apr 01 #Javascript
You might like
PHP自定义错误用法示例
2016/09/28 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
PHP实现的杨辉三角求解算法分析
2019/03/11 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
浅谈JavaScript事件的属性列表
2015/03/01 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
JS学习之表格的排序简单实例
2016/05/16 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
面包屑导航详解
2017/12/07 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
jQuery实现可以计算进制转换的计算器
2020/10/19 jQuery
vue 防止页面加载时看到花括号的解决操作
2020/11/09 Javascript
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
JavaScript this关键字的深入详解
2021/01/14 Javascript
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
详解CSS3+JS完美实现放大镜模式
2020/12/03 HTML / CSS
CSS3 真的会替代 SCSS 吗
2021/03/09 HTML / CSS
波兰家具和室内装饰品购物网站:Vivre
2018/04/10 全球购物
英国婴儿产品专家:Samuel Johnston
2020/04/20 全球购物
EJB发布WEB服务一般步骤
2012/10/31 面试题
个人求职信范文分享
2013/12/13 职场文书
实验教师岗位职责
2014/02/13 职场文书
自我管理的活动方案
2014/08/25 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
JavaScript实现优先级队列
2021/12/06 Javascript
Nginx+Windows搭建域名访问环境的操作方法
2022/03/17 Servers
在Docker容器中部署SQL Server
2022/04/11 Servers