`
lgx2351
  • 浏览: 175922 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

常用功能-tip相关知识总结

阅读更多

在应用开中很常用的功能是tip,比如鼠标放在某个需要说明的元素时,tip出元素的一些属性,或者是在一个主表的grid里当鼠标移到某一行,tip出这一行的所关联的子表的grid,使得用户一目了然。tip的功能这么常用,我们可以用一些已有的js库来实现,比如 wz_tooltip.js,它可以实现较为强大的tip功能。关于wz_tooltip.js的知识就不说了,参考它的官方网站所有的api都说得很详细了。
当然,如果我想自己写一个较为简单的tip也是可以的。自己实现的话,对于css的知识,鼠标事件等知识会理解得更加深刻,比如对鼠标事件的定位等。下面,我们来说说怎么实现自己下定义的tip。

 

function Tooltip() {  
    this.tooltip = document.createElement("div");
    this.tooltip.style.position = "absolute";     
    this.tooltip.style.visibility = "hidden";    
    this.tooltip.className = "tooltipShadow";     

    this.content = document.createElement("div");
    this.content.style.position = "relative";     
    this.content.className = "tooltipContent";    

    this.tooltip.appendChild(this.content);       
}

Tooltip.prototype.show = function(text, x, y) {
    this.content.innerHTML = text;             
    this.tooltip.style.left = x + "px";        
    this.tooltip.style.top = y + "px";
    this.tooltip.style.visibility = "visible";

    if (this.tooltip.parentNode != document.body)
        document.body.appendChild(this.tooltip);
};

Tooltip.prototype.hide = function() {
    this.tooltip.style.visibility = "hidden";
};

以上代码分析如下:
1、 Tooltip()构造函数的主要作用是里去create两个div,设置完两个div的className和position后,把第二个存放内容的 div append到第一个阴影div里。注意的是阴影div的定位设置为绝对定位(absolute),而内容div的定位设置为相对定位(relative),内容div是相对于阴影div来定位的,只要设置好了阴影div的位置,则内容div的位置也可以定下来了。关于位置的不同的值的知识见后面的相关知识点。
2、Tooltip()构造函数做了挺多工作,而之前一般我的代码里构造函数一般只进行类实例变量的赋值,很少有做较多的事情。学习这种写法。
3、 show()方法在div已创建的基础上,主要是设置div的位置,内容,并append到document.body上去。注意条件语句:this.tooltip.parentNode != document.body,通过这句话来得到是否把tooltip这个div创建到body上去了,如果没才去append。
4、其中的className的css代码如下:

 

   .tooltipShadow {
      background: url(shadow.png);  
    }
 
   .tooltipContent {
        left: -4px; top: -4px;       
        background-color: #ff0;       
        border: solid black 1px;     
        padding: 5px;                 
        font: bold 10pt sans-serif;   
   }

  上面已经实现了tip的显示与隐藏,接下来把鼠标事件考虑进去:

 

Tooltip.X_OFFSET = 25;  
Tooltip.Y_OFFSET = 15;  
Tooltip.DELAY = 500;

Tooltip.prototype.schedule = function(target, e) {
    var text = target.getAttribute("tooltip");
    if (!text) return;

    var x = e.clientX + Geometry.getHorizontalScroll( );
    var y = e.clientY + Geometry.getVerticalScroll( );
    x += Tooltip.X_OFFSET;
    y += Tooltip.Y_OFFSET;

    var self = this;
    var timer = window.setTimeout(function( ) { self.show(text, x, y); },Tooltip.DELAY);

    if (target.addEventListener) target.addEventListener("mouseout", mouseout,false);
    else if (target.attachEvent) target.attachEvent("onmouseout", mouseout);
    else target.onmouseout = mouseout;

    function mouseout( ) {
        self.hide( );               
        window.clearTimeout(timer);
        if (target.removeEventListener) target.removeEventListener("mouseout", mouseout, false);
        else if (target.detachEvent) target.detachEvent("onmouseout",mouseout);
        else target.onmouseout = null;
    }
}

 以上代码分析:
1、通过getAttribute()方法来得到标签的属性值。
2、当值为空是return,不执行tip事件
3、Geometry.getHorizontalScroll()方法见Geometry类,其它博客有专门的说明。
4、setTimeout()来过段时间执行tip,但当onmouseout时,把这个timout要clear掉。
5、注意代码attachEvent()、detachEvent()的浏览器兼容性的写法。


其它,顺便总结一个定位的几种值的含义:
1、 static:
静态定位。它是默认值 ,根据文档内容的正常流动来定位元素。
使用静态定位的元素不是DHMTL元素 ,不能用top、left等属性,也就是说,如果你要定位一个元素,必须设置为除static外的值,一般我们用absolute来定位,这也是程序中所有涉及到需要位置的元素时都要设置position值的原因。
2、absolute:
绝对定位。设置元素的相对于它的包含元素的位置。
绝对定位的元素独立于其它元素来定位,即绝对定位对于其它元素无关,它也不属于静态定位的元素流。
绝对定位的元素可以相对于文档的<body>标记来定位。
如果它嵌套在另一个绝对定位的元素中(这另一个元素也要绝对定位),则相对于它个元素来定位。
它是DHMTL里最常用 的定位方式。
3、fixed:
4、relative:
当元素的position为relativ时,它首先根据常规文档流来布局元素,然后相对常规流中的位置进行调整。
在常规文档流中分配给它的空间仍然分配给它,它两边的元素也不会向它靠近来填充它的空间,但它们也不会从元素的新位置被挤走。

1
0
分享到:
评论

相关推荐

    用友erp操作流程培训资料-TIPTOP GP 教育训练应收管理系统(AXR)(PPT 31页).ppt

    通过以上内容的学习,参与者将能够全面掌握用友ERP中的TIPTOP GP 教育训练应收管理系统(AXR)的各项功能及其在实际工作中的应用方法。这不仅有助于提高工作效率,还能确保企业的财务管理更加规范化、透明化。

    TIPTOP 教程 學習

    根据提供的TIPTOP教程文档,我们可以总结出一系列与系统管理和基础操作相关的知识点。这些知识点主要围绕鼎新电脑股份有限公司出品的TIPTOP产品中心VER6.00版本展开,涉及了系统的初始设置、数据维护以及特定操作...

    js中的tip提示信息

    根据给定的信息,本文将详细解析“JS中的Tip提示信息”的相关知识点,包括Tip提示信息在JavaScript中的实现原理、常用库和技术方案等。 ### 一、什么是Tip提示信息? 在Web开发中,提示信息(Tips)是一种常见的...

    TIPTOP GP栏位跳转问题

    - **概念**: I()函数是TIPTOP GP中用于控制程序流的一种常用手段。通过与其他函数如DISPALYBYNAME和INPUTBYNAME结合使用,可以灵活地实现栏位间的跳转。 - **应用场景**: 在复杂的业务逻辑下,可能需要根据用户的...

    cad 总结

    ### CAD 快捷键及相关知识点总结 #### 一、CAD基础操作及快捷键说明 **1. 常用快捷键** - **A**: 圆弧(Arc) - **B**: 块定义(Block Definition) - **C**: 圆(Circle) - **D**: 尺寸样式(Dimension Style)...

    Delphi常用函数、过程汇总

    根据提供的文件信息,我们可以归纳总结出以下几个Delphi中的重要知识点: ### 1. 函数 `GetAccessPassword`:用于获取Access 97数据库文件的密码 #### 代码解析: ```pascal function GetAccessPassword(FilePath:...

    DataGrid实现tooltip功能

    ### DataGrid实现tooltip功能 #### 一、简介 在Web开发中,为了提供更好的用户体验,开发者经常需要在用户界面中加入提示信息。其中,`tooltip`(工具提示)是一种非常实用的功能,它可以在用户鼠标悬停在某个元素...

    walksurvey2012用户操作手册

    ### WalkISurvey用户操作手册知识点总结 #### 一、WALK基本概念 ##### 1.1 工作空间(Workspace) - **定义**:工作空间是WalkISurvey软件中的一个核心概念,指的是用户进行测绘工作的环境集合。它可以包含多个...

    纯JS半透明Tip效果代码

    标签“JS 半透明 Tip”强调了文章的关键词:JavaScript编程语言、半透明效果以及在用户界面中常用的提示功能。 从部分内容来看,文章提供了一个名为opacity的函数,这个函数可以实现元素从一个透明度级别逐渐过渡到...

    精彩编程与编程技巧-用VB实现托盘动画图标...

    系统托盘图标是指显示在Windows任务栏右下角的通知区域中的小图标,用于提醒用户某些程序正在后台运行或提供快速访问功能。通过调用Windows API函数`Shell_NotifyIcon`,可以实现在任务栏显示自定义的图标。 #### 2...

    led显示数码管的相关知识

    【LED显示数码管相关知识】 LED数码管是一种常见的电子显示设备,广泛应用于各种电子设备的显示界面,如钟表、仪器仪表、广告牌等。它由多个LED灯点组成,通常为7段或8段结构,可以显示数字、字母、符号等信息。...

    消费计算器_微信小程序模板js代码前台前端H5页面源码.rar

    综合以上信息,我们可以总结出以下知识点: 1. **微信小程序**:微信小程序是一种基于微信生态的应用开发平台,它提供了丰富的API和组件,使得开发者能够构建功能丰富的轻应用,用户可以直接在微信内部进行使用。 ...

    电子元器件价格参考,电子元器件报价

    根据给定文件的信息,我们可以总结出以下关于电子元器件及其价格参考的相关知识点: ### 一、电子元器件概述 在电子技术领域中,电子元器件是构成电子设备的基础单元,它们的功能各异,包括但不限于信号传输、能量...

    任务型阅读常用词汇及词组.doc

    在任务型阅读中,掌握常用词汇和词组是提高阅读理解能力的关键。这些词汇和词组涉及了多个领域,包括原因与结果、异同点、功能、观点、态度、方法和策略,以及目的、积极与消极、建议和总结等。下面我们将对这些核心...

    PCB设计技巧百问

    ### PCB设计技巧百问知识点详解 ...以上知识点总结了《PCB设计技巧百问》中关于PCB设计的关键技术和实践建议,涵盖了从选择板材到具体布线策略等多个方面,为读者提供了全面深入的理解和实用指南。

    关于单片机驱动三极管的问题

    从给定文件的内容来看,问题集中在单片机如何驱动三极管以及相应的电路设计问题上,以下是详细知识点...这些知识点对于理解单片机与外部电路的接口设计非常有帮助,可以指导初学者正确地搭建电子电路,实现所需的功能。

    一个简单的Mel

    通过上述分析,我们不仅学习了如何使用Mel创建一个简单的花模型,还深入了解了Mel的基本语法和常用命令。Mel作为一种强大的脚本语言,在Maya中发挥着不可或缺的作用。掌握Mel不仅可以提高工作效率,还能让艺术家们...

    基于单片机控制的电梯控制系统.pdf

    根据提供的文件内容片段,我们可以提炼出一些与单片机控制电梯系统相关的知识点,这些知识可能涉及到电梯控制系统的硬件组成、单片机的基本结构以及在电梯控制系统中应用的相关电子组件。 首先,从标题和描述来看,...

    万能洞洞板之单片机DIY设计,开启制作之路.pdf

    本文将详细介绍利用万能洞洞板进行单片机DIY设计的相关知识点,帮助读者开启制作之路。 首先,单片机多功能自动调光器是一个集成了红外人体感应和光敏电阻的智能LED灯台灯设计。光敏电阻负责检测环境光线强度,而...

Global site tag (gtag.js) - Google Analytics