3.3 案例研究—某网站的超链接和图片提示效果
3.3 案例研究—某网站的超链接和图片提示效果
在这一节中,将以某网站的超链接和图片提示效果为例,来理解和巩固jQuery中的DOM操作。
1.超链接提示效果
在现代的浏览器中,它们已经自带了超链接提示,只需在超链接中加入 title 属性就可以了。HTML代码如下:
[插图]
然而这个提示效果的响应速度是非常缓慢的,考虑到良好的人机交互,需要的是当鼠标移动到超链接的那一瞬间就出现提示。这时就需要移除<a>
标签中的title提示效果,自己动手做一个类似功能的提示。
[插图]
首先在空白的页面上,添加两个普通超链接和两个带有class的超链接。
HTML代码如下:
[插图]
然后为class为tooltip的超链接添加mouseover和mouseout事件,jQuery代码如下:
[插图]
实现这个效果的具体思路如下。
(1)当鼠标滑入超链接。
① 创建一个<div>
元素,<div>
元素的内容为title属性的值。
② 将创建的元素追加到文档中。
③ 为它设置x坐标和y坐标,使它显示在鼠标位置的旁边。
(2)当鼠标滑出超链接时,移除<div>
元素。
根据分析的思路,写出如下jQuery代码:
[插图]
运行效果,如图3-38所示。
此时的效果有两个问题:首先是当鼠标滑过后,<a>
标签中的title属性的提示也会出现;其次是设置x坐标和y坐标的问题,由于自制的提示与鼠标的距离太近,有时候会引起无法提示的问题(鼠标焦点变化引起mouseout事件)。
[插图]
为了移除<a>
标签中自带的title提示功能,需要进行以下几个步骤。
(1)当鼠标滑入时,给对象添加一个新属性,并把title的值传给这个属性,然后清空属性title的值。
jQuery代码如下:
[插图]
(2)当鼠标滑出时,再把对象的myTitle属性的值又赋给属性title。
jQuery代码如下:
[插图]
为了解决第2个问题(自制的提示与鼠标的距离太近,有时候会引起无法提示的问题),需要重新设置提示元素的top和left的值,代码如下所示,为top增加了10px,为left增加了20px。
[插图]
解决这两个问题后,完整的代码如下:
[插图]
此时,鼠标滑入和滑出显示已经没问题了,但当鼠标在超链接上移动时,提示效果并不会跟着鼠标移动。如果需要提示效果跟随鼠标一起移动,可以为超链接加上一个mousemove事件,jQuery代码如下:
[插图]
[插图]
这样,当鼠标在超链接上移动时,提示效果也会跟着一起移动了。
到此,超链接提示效果就完成了,完整的jQuery代码如下:
[插图]
2.图片提示效果
稍微修改上面的代码,就可以做出一个图片的提示效果。
首先在空白网页中加入图片,HTML代码如下:
[插图]
设置样式后,初始化效果如图3-40所示。
[插图]
参考前面的超链接提示效果的代码,只需要将创建的<div>
元素的代码由
[插图]
改为
[插图]
就可以了。当鼠标滑过图片后,显示效果如图3-41所示。
[插图]
为了使效果更为人性化,还需要为图片增加说明文字,即提示出来的大图片下面出现图片相应的介绍文字。
可以根据超链接的title属性值来获得图片相应的介绍文字,jQuery代码如下:
[插图]
然后将它追加到<div>
元素中,代码如下:
[插图]
这样,图片提示效果就完成了,当鼠标滑过图片时,图片会出现预览的大图,大图下面还会有介绍文字。效果如图3-42所示。
[插图]
完整的jQuery代码如下:
[插图]
到此,超链接提示和图片提示效果就都完成了。此处仅仅用了 jQuery 中的几个DOM 操作方法,就完成了很友好的动态提示效果。