`
SavageGarden
  • 浏览: 220005 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

经过图片特定区域后才触发鼠标事件如何实现?

阅读更多
   朋友问我一个问题,他设计了这样一个页面,一张图片上有些文字,然后当鼠标移到相应的文字时弹出文本框显示这些文字所对应的模块的内容。
    心想这还不简单,图片有onmouseover事件啊,在事件里写js不就搞定了吗?可是事情并不是这么简单,他那是一张大图片,是一张图片里有好多区域,只有当移到一定的区域时才能弹出文本框。上网查了查,没有现成的办法,如果图片位置不变动,可以通过得到鼠标的位置,然后确定图片上文字的位置,然后在鼠标移动时判断坐标是否已经落在文字范围之内,然后触发事件。可是,得到鼠标的位置容易,图片上文字的位置呢?
    于是朋友把文字部分切割成了小图片,实现如下,没有整理,以后有时间再说。

得到鼠标的当前坐标的JS
var mouseX;//鼠标横坐标
var mouseY;//鼠标纵坐标

//捕获鼠标坐标,方便DIV的显示
function mouseMove(ev)
{
 ev= ev || window.event;
  var mousePos = mouseCoords(ev);
  mouseX = mousePos.x;
  mouseY = mousePos.y;
}

function mouseCoords(ev)
{
 if(ev.pageX || ev.pageY){
   return {x:ev.pageX, y:ev.pageY};
 }
 return {
     x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
     y:ev.clientY + document.body.scrollTop  - document.body.clientTop
 };
}
//只要鼠标移动,就得到其坐标
document.onmousemove = mouseMove;


控制显示和隐藏DIV的鼠标事件
//根据传来的ID来显示图片对应的DIV
function mouseover(id){
    //根据ID从XML文件中读取要显示的内容
	var message=getMessageByFile(id);
	document.getElementById(id).innerHTML=message.content;
	var newsdiv=document.getElementById(id);
	newsdiv.style.visibility = 'visible';
         //使DIV显示在鼠标的右20下10处
	newsdiv.style.left =  document.body.scrollLeft+mouseX+20;
	newsdiv.style.top = document.body.scrollTop+mouseY+10;

}
//根据传来的ID来隐藏图片对应的DIV
function mouseout(id){
	document.getElementById(id).innerHTML="";
	var div=document.getElementById(id);
	div.style.visibility = 'hidden';

}


根据ID从XML文件中读取内容,及信息对象的JS
function getMessageByFile(thismessageid){
	var xml = new ActiveXObject("Microsoft.XMLDOM") ;
	xml.async="false";
	xml.load("message.xml");
	
	var mode="model";

	var maxNum=xml.getElementsByTagName(mode).length;

	var messageid="";
	var content="";
	var messageInfo = xml.getElementsByTagName(mode)[0];
	for(var i=0;i<maxNum;i++){
		if(messageInfo.getElementsByTagName("messageid")[i].firstChild){
			if(thismessageid==messageInfo.getElementsByTagName("messageid")[i].firstChild.nodeValue){
				messageid=messageInfo.getElementsByTagName("messageid")[i].firstChild.nodeValue;
				if(messageInfo.getElementsByTagName("content")[i].firstChild){
					content=messageInfo.getElementsByTagName("content")[i].firstChild.nodeValue;
				}
			}
		}
	}
	var message= new Message();
	message.messageid = messageid;
	message.content = content;
	return message;

}
//Message对象,暂给两个属性
function Message(){
    this.messageid = "";
    this.content = "";
}


XML文件
<?xml version="1.0" encoding="GB2312"?>
<message>
	<model>
		<messageid>test</messageid>
		<content>test</content>
	</model>
</message>


页面部分代码
<div>
  <img src="test.jpg" onmouseover="mouseover('test')" onmouseout="mouseout('test')"/>
  </div>
  <div id="test" style="position:absolute; width:236px; height:78px; z-index:1;visibility:hidden">
	
  </div>


好像还差个生成XML的页面,暂时就先这些吧,关键它并不是在鼠标移动到一张图片的某些区域时才触发,还得再想想。
分享到:
评论
1 楼 bbsunchen 2010-08-16  
很简单的实现方法,可以用map
http://www.w3school.com.cn/tiy/t.asp?f=jseg_imagemap

相关推荐

    JavaScript实现的鼠标单击触发和鼠标滑过触发的tab标签页源码

    在这个特定的示例中,我们关注的是`click`事件(鼠标单击)和`mouseover`/`mouseout`事件(鼠标滑过)。 1. 鼠标单击触发(click事件): 当用户点击一个元素时,`click`事件会被触发。在tab切换的场景中,通常...

    同一幅图片 ,鼠标经过不同区域 出现不同提示框文字

    标题中的“同一幅图片,鼠标经过不同区域出现不同提示框文字”是指在网页设计中实现的一种交互效果。这种效果通常通过HTML、JavaScript和jQuery技术来实现,为用户提供更丰富的信息展示和互动体验。下面将详细解释这...

    echarts 3D地图,地图区域点击触发事件.rar.rar

    ECharts 3D地图是其特色功能之一,允许用户以三维视角展示地理数据,同时提供了丰富的自定义选项和交互事件,如地图区域点击触发事件。 在这个“echarts 3D地图,地图区域点击触发事件.rar”压缩包中,我们可以预见...

    jQuery实现长按按钮触发事件的方法

    通过长按按钮触发特定事件,开发者可以为用户提供更丰富的交互方式,比如在手机端应用程序中实现长按菜单呼出、图片预览、表单输入自动聚焦等功能。 在使用jQuery实现长按按钮触发事件时,需要考虑几个关键点。首先...

    js触发事件大全

    - onmouseover:鼠标指针进入元素区域时触发。 - onmousemove:鼠标在元素区域内移动时触发。 - onmouseout:鼠标指针离开元素区域时触发。 2. 键盘事件: - onkeypress:用户按下并释放一个键时触发,通常与...

    鼠标捕捉区域鼠标捕捉区域

    这对于某些需要连续跟踪鼠标位置或者防止鼠标离开特定区域的应用来说非常有用。 在Windows API中,可以使用`SetCapture`函数来捕获鼠标,而使用`ReleaseCapture`函数来释放捕获。捕获鼠标后,所有的鼠标消息(如WM_...

    js鼠标事件大全js鼠标事件大全

    JavaScript(简称JS)鼠标事件是网页交互中常用的一类事件,它们允许开发者在用户与页面上的元素进行鼠标操作时执行特定的功能。以下是一些主要的JS鼠标事件及其详细解释: 1. onClick:当用户单击鼠标按钮并在同一...

    halcon与C#联合编程之鼠标控制图片缩放,拖动,roi.zip

    在Halcon中,我们可以创建一个ROI对象,通过鼠标选择图像上的特定区域。在C#中,我们可以监听鼠标点击和拖动事件,根据鼠标移动轨迹确定ROI的边界。一旦ROI确定,就可以将其传递给Halcon的函数,对ROI内的图像进行...

    鼠标移动和离开的消息处理事件

    "鼠标移动和离开的消息处理事件"是指程序如何响应用户的鼠标在界面上的移动以及当鼠标离开特定区域时的行为。在本文中,我们将深入探讨这两个关键的鼠标事件,并以腾讯小程序为例,了解它们在实际应用中的实现。 1....

    QT鼠标事件的集合!!

    4. **鼠标进入/离开事件(QMouseEvent::Enter/Leave)**:当鼠标指针进入或离开一个部件的区域时,会触发`enterEvent`和`leaveEvent`。这些事件常用于改变部件的外观,如高亮显示。 5. **鼠标移动事件(QMouseEvent::...

    javascript 触发事件列表

    当用户单击鼠标按键时触发的事件。通常,在HTML元素上定义`onclick`属性,该属性指定一个事件处理程序或一段代码,当点击事件发生时,这段代码将会被执行。 **示例:** ```html 打开页面" onclick="window.open('...

    VC++ 实现限制鼠标的活动区域.rar

    2. **捕获鼠标**:在窗口初始化或特定事件触发时,调用`SetCapture()`函数来捕获鼠标。这将确保所有后续的鼠标消息都会被你的应用程序接收。 3. **设置鼠标活动区域**:使用`ClipCursor()`函数,传入一个`RECT`...

    用鼠标实现MFC区域探测

    我们可以定义这些区域,并设置鼠标事件监听器,以便当鼠标在特定区域内移动时,能够触发相应的响应。 要实现“鼠标移动时显示坐标及所在区域”的功能,我们首先需要创建一个MFC应用程序,包含一个主窗口类。这个类...

    java鼠标事件使用的简单例子

    本篇文章将深入探讨如何在Java中实现鼠标事件监听,包括点击、移动和释放等行为,并通过一个简单的例子来说明。 首先,我们需要了解Java AWT(Abstract Window Toolkit)和Swing库提供的鼠标事件类和监听器接口。...

    html5实现的鼠标触发图片爆炸效果源码.zip

    这个“html5实现的鼠标触发图片爆炸效果源码.zip”文件,显然包含了一个利用HTML5特性来实现的独特视觉效果:当用户鼠标点击或触碰图片时,图片会“爆炸”成多个碎片,为用户提供一种新颖的交互体验。 首先,要实现...

    jQuery鼠标悬停图片震动特效.zip

    当用户将鼠标光标移动到图片上方时,jQuery会触发一个事件,执行预设的动画效果。这依赖于jQuery中的`.hover()`函数,它可以接受两个参数,分别对应鼠标进入和离开元素时执行的函数。 CSS3则在其中发挥了重要的视觉...

    html鼠标事件整理

    HTML鼠标事件是网页交互中的重要组成部分,它们允许开发者在用户与网页元素进行特定交互时触发相应的函数或操作。以下是对这些事件的详细说明: 1. **onblur** 事件:当用户焦点离开某个元素(如输入框)时触发。这...

    VB051-设置鼠标移动区域 源代码

    在VB(Visual Basic)编程环境中,开发者经常需要对鼠标的移动行为进行控制,例如限制鼠标在特定区域内移动,这在创建特殊用户界面或交互式应用时尤其有用。本主题将详细解析“VB051-设置鼠标移动区域”的源代码实现...

    c#经典的鼠标事件响应程序

    在`MouseMove`事件处理程序中,可能有一个逻辑来计算鼠标当前位置对应的颜色,然后更新窗体的背景色或某个特定区域的颜色。每次鼠标移动时,颜色都会根据位置变化而变化,从而实现颜色的渐变效果。 综上所述,"c#...

    Win32API实现的ListBox鼠标键盘事件处理Demo

    5. **图形用户界面(GUI)更新**:处理完事件后,开发者需要更新GUI以反映变化。这可能涉及调用`InvalidateRect`函数来标记需要重绘的区域,然后由系统调用`WM_PAINT`消息处理程序进行实际的绘制。 6. **资源管理**...

Global site tag (gtag.js) - Google Analytics