html风格tooltip效果的实现

来源:asp之家 时间:2010-04-08 13:00:00 

网页上的图片如果设置了alt属性,当鼠标移经时就会有tooltip出现,但是只能显示一行文本,有时需要多行文本,乃至图片来显示图片、链接或者其它HTML元素的提示信息时,alt属性就无能为力了。

在本文提供了一种实现方案:为图片、链接等任意需要tooltip的HTML元素加上一个自定义的属性——"tooltip",tooltip的值即为要显示的提示信息,可以是任意HTML代码。tooltip属性可在HTML代码中元素定义的标签中添加,比如<img src="yourpic.jpg" tooltip="It's a multiline tooltip!<br>And you can use pictures too!" ></img>,然后用下面讲述的 一段脚本,我已写成tooltip.js,实现对鼠标事件的捕获,即可实现HTML风格的tooltip。

tooltip的实现思想为获取需要显示TOOLTIP的元素的绝对位置,然后用一个DIV在鼠标位置显示其tooltip属性的值。以下是tooltip.js的代码和注释:


//为HTML容器增加TOOLTIP支持,参数e为你要添加的TOOLTIP支持的容器,如为document.body则为整个页面
//添加支持,如为某DIV则仅为该DIV中带有TOOLTIP属性的元素提供支持。
function addTipSupport(e) {
  e.onmouseover = showTip;
  e.onmouseout = hideTip;
  e.onmousemove = showTip;
}
 
//获得控件的绝对位置,返回左上角坐标
function getElePos(e){  
 var t=e.offsetTop; 
 var l=e.offsetLeft; 
 while(e=e.offsetParent){ 
 t+=e.offsetTop; 
 l+=e.offsetLeft; 
 } 
 
 return [l, t];

//显示TOOLTIP
function showTip() { 
 getElePos(event.srcElement);
 if(event.srcElement.tooltip && event.srcElement.tooltip!='') {
  altlayer.style.visibility='visible';
  var cord = getElePos(event.srcElement);
  altlayer.style.left=cord[0]+event.offsetX + 20;
  altlayer.style.top=cord[1]+event.offsetY+25;
  altlayer.innerHTML=event.srcElement.tooltip;
  altlayer.style.zIndex = event.srcElement.style.zIndex + 1;
  }
  //else altlayer.style.visibility='hidden';
}
//隐藏TOOLTIP
function hideTip() {
 altlayer.style.visibility = 'hidden';
}

本TOOLTIP的用法很简单,

(1)在</body>标签前加入以下代码:


<div style="visibility:hidden;border:2px groove orange;padding:5px;font-size:12px;background-color:#FFFFCC;position:absolute;"  id=altlayer></div>  //定义显示TOOLTIP的DIV风格
 <script type="text/javascript" src="tooltip.js"></script> //引入tooltip.js

上面的DIV的ID一定要与tooltip.js中的ID相对应,此处为altlayer ,style可以设置成自己的风格,因而可使TOOLTIP带有自定义的风格。

(2)为需要支持TOOLTIP的容器元素增加TOOLTIP支持,以实现对鼠标事件的捕获,则该容器内所有带有TOOLTIP属性的元素均可有TOOLTIP风格。可在任意时候包括页面已经装载后增加支持,用以下一句即可:


<script type="text/javascript">
<!--
addTipSupport(document.body);  //此处的参数可换成其它,以局限在某容器内支持TOOLTIP风格。
//-->
</script>

(3)为需要tooltip的HTML元素加上一个自定义的属性——"tooltip",tooltip的值即为要显示的提示信息,可以是任意HTML代码。tooltip属性可在HTML代码中元素定义的标签中添加,比如

<img src="yourpic.jpg" tooltip="It's a multiline tooltip!<br>And you can use pictures too!<br><img src='sompic.jpg'/>" ></img>。

此TOOLTIP的优点在于可以设定只在相关的容器范围内支持TOOLTIP,以减少不必要的开销;用来显示TIP的DIV风格可以自己任意设定,TOOLTIP属性值可为任意HTML代码,因而风格是完全可定制的;代码易改动,可进一步改动为不同地方实现不同风格的TOOLTIP。

标签:tooltip,提示效果,alt
0
投稿

猜你喜欢

  • python中怎么表示空值

    2022-02-09 23:59:02
  • python 协程中的迭代器,生成器原理及应用实例详解

    2022-09-01 07:19:56
  • 如何在C++中调用Python

    2021-05-16 23:58:41
  • 详解bootstrap导航栏.nav与.navbar区别

    2023-08-15 19:18:42
  • python如何读写json数据

    2021-09-17 17:27:07
  • python+flask编写一个简单的登录接口

    2021-06-09 21:19:02
  • Python递归实现打印多重列表代码

    2023-05-28 10:38:32
  • perl脚本实现限制ssh最大登录次数(支持白名单)

    2022-04-09 02:56:56
  • MySQL 数据库的基础知识

    2024-01-17 03:05:52
  • OpenLayer基于vue的封装使用教程

    2024-05-11 09:16:22
  • Python面向对象编程repr方法示例详解

    2021-10-02 23:38:09
  • 如何写python的配置文件

    2022-08-06 15:57:09
  • python实现将文件夹内的每张图片批量分割成多张

    2023-07-18 17:13:12
  • 使用vue与jquery实时监听用户输入状态的操作代码

    2023-07-02 17:08:02
  • pandas中的Timestamp只保留日期不显示时间

    2023-12-24 18:45:06
  • 详解python eval函数的妙用

    2021-12-23 10:56:05
  • Python利用 SVM 算法实现识别手写数字

    2023-04-17 10:33:58
  • Python读取视频的两种方法(imageio和cv2)

    2023-10-04 13:45:06
  • python opencv设置摄像头分辨率以及各个参数的方法

    2021-03-05 00:23:34
  • 让css使网页图片半透明

    2007-02-03 11:39:00
  • asp之家 网络编程 m.aspxhome.com