javascript – JQueryMobile中的弹出/工具提示位置
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – JQueryMobile中的弹出/工具提示位置,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4456字,纯文字阅读大概需要7分钟。
内容图文
我想在鼠标光标下显示工具提示.由于JQueryMobile没有任何小部件,我使用Popup小部件(非常接近).
显示弹出窗口时,我可以指定X和Y坐标.但问题是它是基于X和Y的弹出窗口的中心.我想在鼠标光标的右侧显示它,而不是在它下面(因为这使得文本难以阅读,因为光标在它上面).
如何以这种方式显示弹出窗口?我唯一能想到的是测量弹出元素的宽度,并根据弹出窗口的宽度/高度校正坐标.但这似乎是不可能的,因为我只能在弹出窗口渲染到屏幕后测量实际宽度,我需要在显示弹出窗口之前指定X / Y.看起来像捕获22的情况?
解决方法:
正如问题评论中所讨论的,本机/香草Javascript工具提示,可完全自定义.直观,即使我自己这么说.这是现场演示:http://jsbin.com/nerul/3/edit?html,output.
这是代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Light-weight Tooltip by FC</title>
<style>
html {
font-size: 62.5%;
}
body {
font: normal 1.3em Verdana;
background-color: white; /* just for the JSBin demo */
}
h2 {
text-align: center;
margin-bottom: 2em;
}
span.tool {
position: relative;
display: inline-block;
border-bottom: 1px dashed black;
}
span.tool:hover {
cursor: help;
}
span.tip {
position: absolute;
bottom: 20px;
left: 0px;
display: block;
width: auto;
white-space: nowrap;
font-size: .9em;
border: 0px solid black; /* change as desired */
border-radius: 6px;
padding: 1px 5px;
background: #eee;
background: linear-gradient(top, #eee, #ccc);
background: -moz-linear-gradient(top, #eee, #ccc);
background: -o-linear-gradient(top, #eee, #ccc);
background: -webkit-linear-gradient(top, #eee, #ccc);
background: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#ccc));
background: -ms-linear-gradient(top, #eee, #ccc);
filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#eeeeee,EndColorStr=#cccccc);
zoom: 1;
visibility: hidden;
}
</style>
</head>
<body>
<h2>Light-weight Tooltip by FC</h2>
<p>The <span class="tool">WHO<span class="tip">World Health Organization</span></span> was established in 1948.</p>
<p>
It is part of the
<span class="tool">UN
<span class="tip">United Nations, <br>the successor of the <br>League of Nations</span>
</span>,
which was established in 1945.
</p>
<hr>
<p>Explanation and 'minds':</p>
<ul>
<li>The method consists of local nested spans ('tools' with 'tips' inside), positioned relative-absolute.</li>
<li>If the same tips are to be used several times throughout the page or website, the tip spans can be populated centrally with Javascript or server-side scripting.</li>
<li>In the current code the width of the tips is set to <i>auto</i>, and controlled with <br>s in the tip text. Change to fixed width as desired.</li>
<li>With the current code tablet users must tap (= <i>onclick</i>) rather than press-hold (= <i>onmousedown</i>). It is assumed that that is the intuitive thing most tablet users do, but it can be changed to press-hold.</li>
<li>The HTML is valid and the code also works in IE8.</li>
<li>It is said that <i>getElementsByClassName(class)</i> returns a dynamic node list, whereas <i>querySelectorAll(.class)</i> would return a static one. That would make the latter unsuited for dynamically updated elements/sections. Also, it is said to be slower/require more CPU power than the first. However, <i>querySelectorAll(.class)</i> is supported by IE8 (not 7). Mind the dot.</li>
<li>For the sake of completeness: IE9 does not form a border-radius when the element has no declared border, or a border-width of 0.</li>
</ul>
<script>
// Script to make IE8 support getElementsByClassName:
if (!document.getElementsByClassName) {
document.getElementsByClassName = function(theClass) {
var elemArray = [];
var elems = this.getElementsByTagName('*');
for (var i=0; i<elems.length; i++) {
var allClasses = elems[i].className;
var classRegex = new RegExp('^('+theClass+')$|(\\s'+theClass+'\\b)');
// pattern demo on http://codepen.io/anon/pen/Hhswl?editors=100
if (classRegex.test(allClasses) == true)
elemArray.push(elems[i]);
}
return elemArray;
}
}
var tools = document.getElementsByClassName('tool');
for (var i=0; i<tools.length; i++) {
var tool = tools[i];
if ('ontouchstart' in window || window.navigator.msPointerEnabled) {
tool.onclick = function() {
if (this.children[0].style.visibility == '' || this.children[0].style.visibility == 'hidden')
this.children[0].style.visibility = 'visible';
else this.children[0].style.visibility = 'hidden';
}
}
else {
tool.onmouseover = function() {
this.children[0].style.visibility = 'visible';
}
tool.onmouseout = function() {
this.children[0].style.visibility = 'hidden';
}
}
}
</script>
</body>
</html>
.
凭借您的声誉,事情应该完全不言自明.如果没有,请告诉我.
内容总结
以上是互联网集市为您收集整理的javascript – JQueryMobile中的弹出/工具提示位置全部内容,希望文章能够帮你解决javascript – JQueryMobile中的弹出/工具提示位置所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。