js小技巧:当鼠标移上文字弹出层
### JS小技巧:当鼠标移上文字或照片时弹出层 #### 技术背景与应用场景 在网页设计中,为了提升用户体验并增加交互性,开发者经常会在用户鼠标悬停在某个元素(如文字或图片)上时显示额外的信息。这种效果可以通过多种技术实现,而JavaScript作为一种强大的客户端脚本语言,提供了丰富的API来处理这类需求。 #### 核心知识点 ##### 鼠标事件监听 - **`mousemove`**:当鼠标在页面上移动时触发。 - **`mouseover`**:当鼠标光标移动到一个元素上时触发。 - **`mouseout`**:当鼠标光标离开一个元素时触发。 ##### DOM操作 - **创建DOM元素**:通过`document.createElement()`方法创建新的DOM节点。 - **添加DOM元素**:通过`appendChild()`方法将新创建的元素添加到DOM树中。 - **修改DOM元素样式**:通过修改DOM元素的`style`属性来改变其外观。 ##### 层的显示与隐藏 - **显示层**:通过设置元素的`visibility`或`display`属性来控制层的可见性。 - **隐藏层**:同样地,可以通过设置`visibility`或`display`属性为`hidden`或`none`来隐藏层。 ##### 事件绑定 - **兼容性处理**:为了兼容不同的浏览器环境,可以使用`attachEvent`(IE)和`addEventListener`(现代浏览器)进行事件绑定。 #### 实现原理 这段代码的主要目的是实现在鼠标移入特定元素时弹出一个包含自定义内容的层。具体实现步骤如下: 1. **初始化层**: - 创建一个`div`元素作为弹出层,并进一步创建两个子`div`元素分别作为头部(`dvHdr`)和主体(`dvBdy`)。 - 设置这些元素的基本样式,如位置、边框、颜色等。 - 将这些元素添加到文档体中,并初始设置为隐藏状态。 2. **事件监听器**: - 使用`addEventListener`或`attachEvent`来添加对窗口加载、鼠标移动和点击事件的监听器。 - `init`函数用于初始化层;`moveMouse`函数用于检测鼠标位置;`checkMove`函数则用于判断是否应该显示或隐藏层。 3. **层的显示逻辑**: - 在`checkMove`函数中,通过检查鼠标点击的元素是否具有特定的title属性来决定是否显示层。 - 如果元素符合条件,解析title中的参数来定制层的头部和主体内容以及样式。 - 调整层的位置使其位于鼠标附近,同时考虑边界情况避免层超出视口范围。 4. **兼容性处理**: - 代码中采用了条件语句来区分不同的浏览器环境,确保事件绑定的正确执行。 - 对于IE浏览器,使用了特殊的样式属性(如`alpha(opacity)`)来确保透明效果的兼容性。 5. **扩展功能**: - 代码支持自定义标题和内容的参数传递,使得弹出层的内容更加灵活多样。 - 支持针对不同元素的特定样式定制,增强了层的可配置性和美观度。 #### 总结 通过以上分析,我们可以看到这段代码巧妙地利用了JavaScript的DOM操作能力和事件处理机制来实现了鼠标悬停显示弹出层的效果。这种技术不仅可以应用于网页导航、商品展示等多种场景,还可以根据实际需求进行灵活的扩展和定制,是前端开发中非常实用的一个技巧。
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type="text/JavaScript">
if (typeof document.attachEvent!='undefined') {
window.attachEvent('onload',init);
document.attachEvent('onmousemove',moveMouse);
document.attachEvent('onclick',checkMove); }
else {
window.addEventListener('load',init,false);
document.addEventListener('mousemove',moveMouse,false);
document.addEventListener('click',checkMove,false);
}
var oDv=document.createElement("div");
var dvHdr=document.createElement("div");
var dvBdy=document.createElement("div");
var windowlock,boxMove,fixposx,fixposy,lockX,lockY,fixx,fixy,ox,oy,boxLeft,boxRight,boxTop,boxBottom,evt,mouseX,mouseY,boxOpen,totalScrollTop,totalScrollLeft;
boxOpen=false;
ox=10;
oy=10;
lockX=0;
lockY=0;
function init() {
oDv.appendChild(dvBdy);
oDv.style.position="absolute";
oDv.style.visibility='hidden';
document.body.appendChild(oDv);
}
function defHdrStyle() {
}
function defBdyStyle() {
dvBdy.style.border='1px solid #ccc';//层的边框
dvBdy.style.width='210px';
dvBdy.style.fontFamily='arial';
dvBdy.style.fontSize='14';
dvBdy.style.textAlign='left';
dvBdy.style.padding='30';
dvBdy.style.color='#000';
dvBdy.style.background='#fff';
dvBdy.style.filter='alpha(opacity=80)'; // IE
dvBdy.style.opacity='0.8'; // FF
}
function checkElemBO(txt) {
if (!txt || typeof(txt) != 'string') return false;
if ((txt.indexOf('body')>-1)&&(txt.indexOf('[')>-1)&&(txt.indexOf('[')>-1))
return true;
else
return false;
}
剩余12页未读,继续阅读
- sonriku2015-10-31不用多说、新手下。
- lslocal8704032014-03-21东西还不错..里面有用得上的东西..谢谢
- guofuyou2014-09-04东西还行,用起来很好用
- elvagogo2013-06-14东西还不错,用起来可以用
- 粉丝: 3w+
- 资源: 12
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助