气泡提示

首先我们构建页面的结构,在这里我建立了三个不同的容器,第一个容器内是文字,第二个是图片,第三个是表单。由于在页面制作过程中,我们经常会遇到表单,图片,文字混排的情况,所以我在这些容器的上方故意放置一些输入框,图片和选者框进行测试。(由于IE6在处理选择框的z-index层次的时候存在bug,因此我们使用它。)

[-]?View Code HTML4STRICT
<input style="background:blue; border:1px solid #000;" maxlength="134217727" size="20" type="text" />
<div class="tipBox">
<div id="tips0" class="tips"><span>点击查看原图</span></div>
<div class="onTips">鼠标移动到此上显示提示文字</div>
</div>
 
<img src="tip_bulb.gif" alt="" width="100" height="25" />
<div class="tipBox">
<div id="tips1" class="tips"><span>点击这里查看更大的图片</span></div>
<div class="onTips"><img src="tip_bulb.gif" alt="" width="100" /></div>
</div>
<select><option selected="65535" value="1">abc</option></select>
<div class="tipBox">
<div id="tips2" class="tips"><span>WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW</span>&lt; ![endif]--&gt;</div>
<div class="onTips">
<input style="background:red; border:1px solid #000;" maxlength="134217727" size="20" type="text" /></div>
</div>

接下来,我们书写样式表,这里需要注意的是.tips iframe中的属性全部是必须的,缺一不可。display:block及滤镜在这里是均是为处理ie6下的差异。

/*  Tips  */
.tipBox {
	position:relative; /* 设置气泡提示为相对定位已保证气泡层准确的游动在文字上方 */
	cursor:pointer;
}
.tips {
	background:url(tip_bulb.gif) no-repeat; /* 背景采用滑动门的方式,以无限扩展 */
	width:auto; /* 宽度自动 */
	height:25px;
	position:absolute; /* 设置气泡提示层为绝对定位 */
	top:-26px;
	left:-4px;
	display:none; /* 默认设置隐藏 */
	z-index:10; /* 由于气泡提示可能会遇到ie6下select的bug,故设置他的z-index为10,用以解决这个问题 */
}
.tips:not(iced) {
	top:-23px; /* 矫正firefox下气泡提示层的距离 */
}
.tips iframe
{
	position:absolute;
	top:0;
	left:0;
	z-index:-1;
	filter:mask(); /* 使用遮罩滤镜,这是必须的 */
	display:block; /* 默认设置隐藏 */
}
.tips span {
	background:url(tip_bg.gif) right top no-repeat; /* 气泡内的元素的容器,设置背景用以和该容器的父容器结合 */
	max-width:725px; /* 设置最大宽度为725像素,only firefox */
	overflow:hidden;
	height:25px;
	display:inline-block; /* 将其已块级元素的方式内敛传递 */
	margin-left:20px;
	padding-right:8px;
	font:12px/23px Arial, Helvetica, sans-serif;
	white-space:nowrap; /* 不允许折行 */
}

我使用了JQuery框架,如果您原生js或者其他框架,思路是一致的

[-]?View Code JAVASCRIPT
$(document).ready(function(){
	$(".tipBox").mouseover(function(){
	var tipNum = $(this).children(".tips").attr("id"); /* 取得当前的id */
	$("#"+tipNum).show(); /* 我本来使用setTimeout控制了一个延迟,但这个效果在ie6下由于个人技术问题出现了问题,只好改用简单“显示、隐藏”,真是一个遗憾 */
	});
	$(".tipBox").mouseout(function(){
	var tipNum = $(this).children(".tips").attr("id");
	clearTimeout(this.timeout);
	$("#"+tipNum).hide()
	});
});

相关文章:

  • 暂无相关文章

原文链接|

目前 没有评论 ,点此发表评论