新鲜出炉的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 相关文章推荐
一个js实现的所谓的滑动门
May 23 Javascript
Javascript 检测键盘按键信息及键码值对应介绍
Jan 03 Javascript
angularJS 中$scope方法使用指南
Feb 09 Javascript
jQuery中的基本选择器用法学习教程
Apr 14 Javascript
巧用weui.topTips验证数据的实例
Apr 17 Javascript
Node.js连接mongodb实例代码
Jun 06 Javascript
vue.js配合$.post从后台获取数据简单demo分享
Aug 11 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
Dec 03 Javascript
详解JavaScript中的强制类型转换
Apr 15 Javascript
ES6之Proxy的get方法详解
Oct 11 Javascript
JavaScript判断浏览器版本的方法
Nov 03 Javascript
node.js中npm包管理工具用法分析
Feb 14 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
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
fleaphp常用方法分页之Pager使用方法
2011/04/23 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
js事件触发操作实例分析
2019/06/21 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
js实现随机抽奖
2020/03/19 Javascript
简单了解JavaScript弹窗实现代码
2020/05/07 Javascript
微信小程序实现音乐播放页面布局
2020/12/11 Javascript
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
Python3 读取Word文件方式
2020/02/13 Python
python str字符串转uuid实例
2020/03/03 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
海蓝之谜(LA MER)澳大利亚官方商城:全球高端奢华护肤品牌
2017/10/27 全球购物
应届生法律顾问求职信
2013/11/19 职场文书
工厂保洁员岗位职责
2013/12/04 职场文书
预备党员的自我评价
2014/03/12 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
基层党员干部四风问题整改方向和措施
2014/09/25 职场文书
教师个人年度总结
2015/02/11 职场文书
通知函的格式
2015/04/27 职场文书
三十年同学聚会感言
2015/07/30 职场文书
党员心得体会范文2016
2016/01/23 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python