css+js作出鼠标跟随提示
### CSS+JS 实现鼠标跟随提示的技术解析 在前端开发领域,通过CSS和JavaScript实现鼠标跟随提示是一项常用且实用的功能。这项技术不仅能够提升用户体验,还可以增加网站的互动性。接下来,我们将深入探讨如何利用CSS和JavaScript来创建一个鼠标跟随提示效果。 #### 一、项目背景 在本案例中,“css+js作出鼠标跟随提示”是项目的核心需求。这种功能通常用于当用户将鼠标悬停在特定元素上时,显示额外的信息或提示,这些提示会随着鼠标移动而移动,直到用户离开触发区域。 #### 二、技术原理 为了实现这一效果,我们需要结合CSS进行样式设置和JavaScript编写逻辑代码。具体来说: 1. **CSS部分**:主要用于定义提示信息的样式,包括字体、颜色、边框等。 2. **JavaScript部分**:负责处理鼠标的移动事件,并根据当前鼠标的坐标动态调整提示信息的位置。 #### 三、CSS样式设计 首先来看CSS部分的设计。通过分析给定的部分代码,我们可以看到一些基本的样式设置,例如: ```css * { font: normal 14px/150% ''; a:link, a:visited { color: #00f; text-decoration: none; } a:hover, a:active { color: #f00; text-decoration: underline; } } ``` 这部分代码主要设置了全局字体样式以及链接的默认状态。而对于鼠标跟随提示的样式,代码中给出了示例: ```css div { top: 0; left: 0; position: absolute; z-index: 100; visibility: hidden; } div > div.sug { font: normal 12px/16px ''; white-space: nowrap; color: #666; padding: 3px; position: absolute; left: 0; top: 0; z-index: 10; background: #f9fdfd; border: 1px solid #0aa; } div > div.dr { position: absolute; top: 3px; left: 3px; background: #333; filter: alpha(opacity=50); opacity: 0.5; z-index: 9; } div > iframe { position: absolute; left: 0; top: 0; z-index: 8; filter: alpha(opacity=0); opacity: 0; } ``` 这些样式定义了提示信息的基本外观和位置。其中`div.sug`是实际显示提示文本的元素,`div.dr`和`iframe`则是为了提高提示信息的可读性和视觉效果而添加的辅助元素。 #### 四、JavaScript逻辑实现 接下来是JavaScript部分的解析。这部分代码的主要逻辑如下: 1. **初始化提示元素**:首先检查是否存在已创建的提示元素,如果没有,则创建相应的DOM结构,并添加到页面中。 2. **监听鼠标移动事件**:通过`document.onmousemove`监听整个文档上的鼠标移动事件。 3. **更新提示位置**:根据当前鼠标位置计算出提示信息的新位置,并将其应用到提示元素上。 具体的实现代码如下所示(简化版): ```javascript function wsug(e, str) { var oThis = this; if (!str) { oThis.sug.style.visibility = 'hidden'; document.onmousemove = null; return; } if (!oThis.sug) { // 创建并初始化提示元素 var div = document.createElement('div'); div.style.cssText = "position:absolute; z-index:100; visibility:hidden"; var sug = document.createElement('div'); sug.style.cssText = "font:normal 12px/16px ''; white-space:nowrap; color:#666; padding:3px; position:absolute; left:0; top:0; z-index:10; background:#f9fdfd; border:1px solid #0aa"; var dr = document.createElement('div'); dr.style.cssText = "position:absolute; top:3px; left:3px; background:#333; filter:alpha(opacity=50); opacity:0.5; z-index:9"; var ifr = document.createElement('iframe'); ifr.style.cssText = "position:absolute; left:0; top:0; z-index:8; filter:alpha(opacity=0); opacity:0"; div.appendChild(ifr); div.appendChild(dr); div.appendChild(sug); div.sug = sug; document.body.appendChild(div); oThis.sug = div; oThis.dr = dr; oThis.ifr = ifr; } var e = e || window.event; var obj = oThis.sug, dr = oThis.dr, ifr = oThis.ifr; obj.sug.innerHTML = str; // 更新提示位置 var left = e.clientX + 15, top = e.clientY + 15; obj.style.left = left + 'px'; obj.style.top = top + 'px'; obj.style.visibility = 'visible'; } ``` 这段代码的关键在于动态计算并设置提示元素的位置,使其始终位于鼠标附近。 #### 五、总结 通过上述分析,我们了解到如何利用CSS和JavaScript实现鼠标跟随提示的效果。这种方法不仅可以应用于简单的文字提示,还可以扩展为更复杂的提示信息展示方式。对于前端开发者而言,掌握这项技能有助于提升项目的交互体验和用户满意度。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
*{font:normal 14px/150% '宋体'}
a:link, a:visited{color:#00f; text-decoration:none}
a:hover, a:active{color:#f00; text-decoration:underline}
</style>
<script>
function wsug(e, str){ // http://www.hansir.cn
var oThis = arguments.callee;
if(!str) {
oThis.sug.style.visibility = 'hidden';
document.onmousemove = null;
return;
}
if(!oThis.sug){
var div = document.createElement('div'), css = 'top:0; left:0; position:absolute; z-index:100; visibility:hidden';
div.style.cssText = css;
div.setAttribute('style',css);
var sug = document.createElement('div'), css= 'font:normal 12px/16px "宋体"; white-space:nowrap; color:#666; padding:3px; position:absolute; left:0; top:0; z-index:10; background:#f9fdfd; border:1px solid #0aa';
sug.style.cssText = css;
sug.setAttribute('style',css);
var dr = document.createElement('div'), css = 'position:absolute; top:3px; left:3px; background:#333; filter:alpha(opacity=50); opacity:0.5; z-index:9';
dr.style.cssText = css;
dr.setAttribute('style',css);
var ifr = document.createElement('iframe'), css='position:absolute; left:0; top:0; z-index:8; filter:alpha(opacity=0); opacity:0';
ifr.style.cssText = css;
- 阿涛812014-07-07能用,是我要找的效果,感谢作者!!
- splendidmpc2014-06-03能用,但不是我要的效果
- 粉丝: 2
- 资源: 39
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助