Heim Web-Frontend js-Tutorial JavaScript Title、alt提示(Tips)实现源码解读_javascript技巧

JavaScript Title、alt提示(Tips)实现源码解读_javascript技巧

May 16, 2016 pm 06:14 PM
alt title 提示

而对于图片标签img也有一个alt属性可以起到类似的作用。但很显然这种提示框太单调了,为此有人用JavaScript实现了漂亮的提示框效果,这种效果常用在WEB游戏中,其中下图的网易邮箱与迅雷影视页面就用到这种效果,虽然彼此实现效果有些差异,但整体实现思路是不变的。为了方便大家了解实现的细节,以方便定制自己想要的效果,我上网找了一段不错的源码,并对其进行了详细的注释,希望对大家有帮助。

  
JavaScript Title、alt提示(Tips)实现源码解读_javascript技巧
JavaScript Title、alt提示(Tips)实现源码解读_javascript技巧

含注释代码:
复制代码 代码如下:

/***********************************************
  一个JavaScript Title、alt提示(Tips)源码解读
代码注释:唐国辉
作者博客:http://webflash.cnblogs.com
***********************************************/

//定义getElementById快捷方式
function $(obj)
{
if(typeof(obj)=='object')
{
return obj;
}
else
{
return document.getElementById(obj);
}
}
//定义document.write快捷方式,代替复杂的DOM操作
function $P(str)
{
document.write(str);
}
//脚本错误屏蔽
window.onerror=function ()
{
return true;
};
/*
定义变量:
pltsPop(提示内容文字,来自对象的alt或title属性,不包含HTML)
toolTip(提示内容DOM对象,即后面定义的content变量)
pltsPoptop(上方提示标题DOM对象)
pltsPopbot(下方提示标题DOM对象)
topLeft(左上角提示标题DOM对象)
botLeft(左下方提示标题DOM对象)
topRight(右上角提示标题DOM对象)
botRight(右下方提示标题DOM对象)
*/
var pltsPop,toolTip,pltsPoptop,pltsPopbot,topLeft,botLeft,topRight,botRight;
//设置提示窗口相对提示对象的位置偏移量
var pltsoffsetX=10;
var pltsoffsetY=15;
var pltsTitle="";
//创建一个绝对定位的隐藏图层
$P('');
//把刚创建的层对象赋值给一个变量,此语句一定要出现在层创建之后
var pltsTipLayer=$('pltsTipLayer');
//定义鼠标移到对象上时处理函数,主要提取alt或title属性值,并初始化提示框HTML及样式
function PltsMouseOver(ev)
{
//兼容不同浏览器的事件和对象获取
var Event=window.event||ev;
var o=Event.srcElement||Event.target;
//如果对象alt属性存在并且不等于空,就把它的值存到dypop属性,并清空当前alt内容
if(o.alt!=null&&o.alt!="")
{
o.dypop=o.alt;
o.alt="";
}
//如上,对具有title属性的对象作同样的判断和处理,清空title属性值是让对象默认的提示效果失效
if(o.title!=null&&o.title!="")
{
o.dypop=o.title;
o.title="";
}
pltsPop=o.dypop;
if(pltsPop!=null&&pltsPop!=""&&typeof(pltsPop)!="undefined")
{
//把上面创建的提示层显示出来,暂时移到左边很远,虽然显示但用户看不到
pltsTipLayer.style.left=-1000;
pltsTipLayer.style.display='';
/*
格式化提示信息,把其中的\n换成
,比如像下面这样定义title值,显示出来会是作者和性别各一行,因为Tom和Sex之间有 :
Article title...

*/
var Msg=pltsPop.replace(/\n/g,"
");
Msg=Msg.replace(/\0x13/g,"
");
//定义正则表达式检查提示内容是否含有类似这样的内容“{提示标题}”,而且{}和{{}是排除在处的,如果没有就默认用“简介”作为提示标题
var re=/\{(.[^\{]*)\}/ig;
if(!re.test(Msg))
{
pltsTitle="";
}
else
{
re=/\{(.[^\{]*)\}(.*)/ig;
//提取{}中的内容
pltsTitle=Msg.replace(re,"$1")+" ";
//把{内容},包括{}在内的内容替换为空,得到最终提示正文的内容
re=/\{(.[^\{]*)\}/ig;
Msg=Msg.replace(re,"");
}
//定义提示框内容Html与Style,并把获得的相关内容放到对应变量中
var content="

"+pltsTitle+"

"+pltsTitle+"

"+Msg+"

"+pltsTitle+"

"+pltsTitle+"

";
pltsTipLayer.innerHTML=content;
toolTip=$("toolTip");
pltsPoptop=$("pltsPoptop");
pltsPopbot=$("pltsPopbot");
topLeft=$("topLeft");
botLeft=$("botLeft");
topRight=$("topRight");
botRight=$("botRight");
//设置提示框宽度,它的大小是提示框自身大小和浏览器可见窗口大小一半两者中的最小值,即在浏览器窗口小过提示框本身宽度后,会自动调整提示框大小到一个新的宽度
toolTip.style.width=Math.min(pltsTipLayer.clientWidth,document.documentElement.clientWidth/2.2)+"px";
}
else
{
pltsTipLayer.innerHTML='';
pltsTipLayer.style.display='none';
}
}
//定义鼠标在对象上移动时处理函数,每移动一像素触发一次事件
function PltsMouseMove(ev)
{
if(pltsTipLayer.innerHTML=='')
return true;
var Event=window.event||ev;
//获取光标当前X、Y坐标
var MouseX=Event.clientX;
var MouseY=Event.clientY;
//获取提示框宽高度
var popHeight=pltsTipLayer.clientHeight;
var popWidth=pltsTipLayer.clientWidth;
//如果当前光标Y坐标+提示框Y轴偏移量+提示框高度>当前窗口可见高度,一般处理窗口中下方要提示的对象,比如页脚有一个链接需要提示时就会是这种情况,此时考虑使用下方标题
if(MouseY+pltsoffsetY+popHeight>document.documentElement.clientHeight)
{
//提示框显示在要提示对象上方时需要一个额外值popTopAdjust作为提示框最终定位的依据
popTopAdjust=-popHeight-pltsoffsetY*1.5;
pltsPoptop.style.display="none";
pltsPopbot.style.display="";
}
else
{
popTopAdjust=0;
pltsPoptop.style.display="";
pltsPopbot.style.display="none";
}
//判断使用左标题还是右标题
if(MouseX+pltsoffsetX+popWidth>document.documentElement.clientWidth)
{
popLeftAdjust=-popWidth-pltsoffsetX*2;
topLeft.style.display="none";
botLeft.style.display="none";
//下面两个标题都显示,其实最终看到的只有一个位置上的标题,因为topRight是pltsPoptop的子元素,如果pltsPoptop不显示,topRight显示也是看不到的,botLeft同理
topRight.style.display="";
botRight.style.display="";
}
else
{
popLeftAdjust=0;
topLeft.style.display="";
botLeft.style.display="";
topRight.style.display="none";
botRight.style.display="none";
}
//把综合处理得到的提示框最终位置值设置到对象,其中scrollTop是网页被卷去的高度,因为style.top是相对整个文档的而不是浏览器窗口,所以要算上滚动隐藏的高度,scrollLeft同理
pltsTipLayer.style.left=MouseX+pltsoffsetX+document.documentElement.scrollLeft+popLeftAdjust+"px";
pltsTipLayer.style.top=MouseY+pltsoffsetY+document.documentElement.scrollTop+popTopAdjust+"px";
return true;
}
//定义事件绑定函数
function PltsInit()
{
document.onmouseover=PltsMouseOver;
document.onmousemove=PltsMouseMove;
}
//调用事件绑定函数
PltsInit();

调用方法:把上面的代码存到一个外部独立的JS文件中,然后在网页页面中包含这个JS文件,最后给需要提示的对象加上title属性,图片可以加alt属性就可以了。举例:缩写标题 或 图片提示

相关链接:
1、http://www.cnblogs.com/czh-liyu/archive/2007/12/30/1021146.html
2、http://boxover.swazz.org
3、http://blog.csdn.net/lanmao100/archive/2008/10/31/3191767.aspx

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was soll ich tun, wenn Google Chrome meldet, dass der Inhalt dieses Tabs geteilt wird? Was soll ich tun, wenn Google Chrome meldet, dass der Inhalt dieses Tabs geteilt wird? Mar 13, 2024 pm 05:00 PM

Was soll ich tun, wenn Google Chrome meldet, dass der Inhalt dieses Tabs geteilt wird? Wenn wir Google Chrome verwenden, um einen neuen Tab zu öffnen, stoßen wir manchmal auf die Meldung, dass der Inhalt dieses Tabs geteilt wird. Was ist also los? Auf dieser Website erhalten Benutzer eine detaillierte Einführung in das Problem, dass Google Chrome dazu auffordert, den Inhalt dieser Registerkarte zu teilen. Google Chrome weist darauf hin, dass der Inhalt dieser Registerkarte freigegeben wird: 1. Öffnen Sie Google Chrome. In der oberen rechten Ecke des Browsers werden drei Punkte angezeigt. Klicken Sie zum Ändern auf das Symbol das Symbol. 2. Nach dem Klicken wird unten das Menüfenster von Google Chrome angezeigt und die Maus bewegt sich zu „Weitere Tools“.

Was ist die Tastenkombination für Alt+=? Was ist die Tastenkombination für Alt+=? Mar 10, 2023 am 11:40 AM

alt+= ist eine Tastenkombination zum schnellen Summieren. Die Methode zur Verwendung der Tastenkombination „alt+=" ist: 1. Öffnen Sie eine Excel-Tabellendatei. 3. Wählen Sie die zu summierenden Daten aus. 4. Drücken Sie die Taste „alt+="“, um die ausgewählten Daten zu summieren.

Probieren Sie neue Klingeltöne und Texttöne aus: Erleben Sie die neuesten akustischen Warnungen auf dem iPhone in iOS 17 Probieren Sie neue Klingeltöne und Texttöne aus: Erleben Sie die neuesten akustischen Warnungen auf dem iPhone in iOS 17 Oct 12, 2023 pm 11:41 PM

In iOS 17 hat Apple seine gesamte Auswahl an Klingeltönen und Texttönen überarbeitet und bietet mehr als 20 neue Sounds, die für Anrufe, Textnachrichten, Alarme und mehr verwendet werden können. Hier erfahren Sie, wie Sie sie sehen können. Viele neue Klingeltöne sind länger und klingen moderner als ältere Klingeltöne. Dazu gehören Arpeggio, Broken, Canopy, Cabin, Chirp, Dawn, Departure, Dolop, Journey, Kettle, Mercury, Galaxy, Quad, Radial, Scavenger, Seedling, Shelter, Sprinkle, Steps, Story Time, Tease, Tilt, Unfold und Valley . Reflection bleibt die Standardklingeltonoption. Außerdem stehen über 10 neue Texttöne für eingehende Textnachrichten, Voicemails, Benachrichtigungen über eingehende E-Mails, Erinnerungsbenachrichtigungen und mehr zur Verfügung. Um auf neue Klingeltöne und Texttöne zuzugreifen, stellen Sie zunächst sicher, dass Ihr iPhone

Umgang mit Benutzereingabe-Prüfsummen-Eingabeaufforderungen in Vue Umgang mit Benutzereingabe-Prüfsummen-Eingabeaufforderungen in Vue Oct 15, 2023 am 10:10 AM

So handhaben Sie die Überprüfung und Eingabeaufforderungen von Benutzereingaben in Vue. Die Handhabung der Überprüfung und Eingabeaufforderungen von Benutzereingaben in Vue ist eine häufige Anforderung in der Front-End-Entwicklung. In diesem Artikel werden einige gängige Techniken und spezifische Codebeispiele vorgestellt, um Entwicklern dabei zu helfen, die Überprüfung und Eingabeaufforderungen von Benutzereingaben besser zu handhaben. Validierung mithilfe berechneter Eigenschaften In Vue können Sie berechnete Eigenschaften verwenden, um Benutzereingaben zu überwachen und zu validieren. Sie können ein berechnetes Attribut definieren, um den vom Benutzer eingegebenen Wert darzustellen, und eine Validierungslogik im berechneten Attribut ausführen. Hier ist ein Beispiel: data(){

Die Baidu Tieba-App meldet, dass der Vorgang zu häufig erfolgt. Was ist los? Die Baidu Tieba-App meldet, dass der Vorgang zu häufig erfolgt. Was ist los? Apr 01, 2024 pm 05:06 PM

Die Baidu Tieba-App weist darauf hin, dass der Vorgang zu häufig erfolgt, um den normalen Betrieb und die Benutzererfahrung der Plattform aufrechtzuerhalten, um böswilligen Bildschirm-Spam, Werbe-Spam und andere unangemessene Verhaltensweisen zu verhindern vom Herausgeber. Die Baidu Tieba-App meldet, dass der Vorgang zu häufig erfolgt. 1. Wenn das System die Meldung „Vorgang ist zu häufig“ anzeigt, müssen wir eine Weile warten. Wenn Sie Bedenken haben, können Sie zuerst etwas anderes tun. Im Allgemeinen wird diese Eingabeaufforderung nach einer Weile des Wartens automatisch ausgeblendet und wir können sie normal verwenden. 2. Wenn nach längerem Warten immer noch [Operation Too Frequent] angezeigt wird, können wir versuchen, zur Tieba Emergency Bar, Tieba Feedback Bar und anderen offiziellen Tieba zu gehen, dieses Phänomen zu melden und offizielles Personal zu bitten, es zu beheben. 3.

Was bedeutet Titel? Was bedeutet Titel? Aug 04, 2023 am 11:18 AM

Titel ist die Bedeutung, die den Titel der Webseite definiert. Er befindet sich im Tag und ist der in der Titelleiste des Browsers angezeigte Text. Der Titel ist für die Suchmaschinenoptimierung und das Benutzererlebnis der Webseite sehr wichtig. Beim Schreiben von HTML-Webseiten sollten Sie darauf achten, relevante Schlüsselwörter und attraktive Beschreibungen zu verwenden, um das Titelelement zu definieren und mehr Benutzer zum Klicken und Durchsuchen zu bewegen.

Was soll ich tun, wenn angezeigt wird, dass der Monitortreiber nicht mehr reagiert und wiederhergestellt wurde? Was soll ich tun, wenn angezeigt wird, dass der Monitortreiber nicht mehr reagiert und wiederhergestellt wurde? Mar 14, 2024 pm 02:00 PM

Beim Spielen erscheint plötzlich die Meldung „Der Monitortreiber reagiert nicht mehr und wurde wiederhergestellt“. Was ist los? Der Bildschirmtreiber reagiert nicht mehr und wurde wiederhergestellt. Dies bedeutet, dass beim Bildschirmtreiber im System eine ungewöhnliche Situation aufgetreten ist und er nicht normal funktionieren kann, was dazu führt, dass der Bildschirm nicht mehr reagiert oder ein schwarzer Bildschirm angezeigt wird. Häufige Gründe: 1. Fehler im Monitortreiber: Es können Programmlogikfehler oder Datenübertragungsfehler im Treiber vorliegen, die dazu führen, dass der Treiber nicht ordnungsgemäß funktioniert. 2. Unzureichende Hardwarekonfiguration: Die Hardwarekonfiguration des Computers reicht nicht aus, um die Anforderungen von Hochleistungsanwendungen zu erfüllen, was zu Problemen wie Systempausen und Verzögerungen führt. 3. Systemdateischaden: Schaden an Computersystemdateien

Was bedeutet der Titel in HTML? Was bedeutet der Titel in HTML? Mar 06, 2024 am 09:53 AM

Der Titel in HTML zeigt den Titel-Tag der Webseite an, sodass der Betrachter weiß, worum es auf der aktuellen Seite geht. Daher sollte jede Webseite einen separaten Titel haben.

See all articles