使用 Javascript 悬停将 Div 复制到页面上的其他位置
Using Javascript Hover to replicate Div elsewhere on page
我目前正在学习javascript,但我自己似乎无法解决这个问题。我只需要朝着正确的方向努力,这样我就可以开始弄清楚我需要什么来开始学习。我在这里找到了一些指导,但我似乎无法弄清楚如何使用它。
我正在制作一个元素周期表。我想发生的是,当用户将鼠标悬停在元素框(div)上时,整个div都会被复制到页面顶部,只是更大。这是我的网站。
www.boulderdan.com
每个元素框都包含在一个div 中,如下所示,它通过 php/mysql 获取值。下面是页面呈现时 html 的外观。
<a href="elementfile.php?action=Oxygen" target="_blank">
<div id="Oxygen" class="element group16 period2">
<span class="number">8</span><br>
<span class="symbol">O</span><br>
<span class="name">Oxygen</span><br>
<span class="molmass">15.9994</span></div></a>
因此,当用户将鼠标悬停在此div 上时,我希望所有这些 html 都复制到顶部的较大框中。有人建议我使用 CSS,但我无法弄清楚如何正确嵌套div。我也看过jquery,但同样,似乎找不到我需要的东西。请指出我正确的方向!这是一个工作项目,所以我必须自己弄清楚......我只需要知道该往哪个方向走!
谢谢。
var periodicElements = document.querySelectorAll("a");
Array.prototype.map.call(periodicElements, function(element){
//add two event handlers to all a elements
//show div
element.addEventListener("mouseenter", showDivAtTop, false);
//hide div
element.addEventListener("mouseleave", clearDivAtTop, false);
})
function showDivAtTop(e)
{
e.stopPropagation();
var div = e.target.children[0].cloneNode(true) //clone the div.
document.body.appendChild(div);
div.id = "currentElement";
}
function clearDivAtTop(e)
{
e.stopPropagation();
//remove the div.
document.body.removeChild(document.getElementById("currentElement"));
}
#currentElement{
position: absolute;
right: 0px;
top: 0px;
border: 1px solid red;
background-color: white;
}
<a href="elementfile.php?action=Oxygen" target="_blank">
<div id="Oxygen" class="element group16 period2">
<span class="number">8</span><br>
<span class="symbol">O</span><br>
<span class="name">Oxygen</span><br>
<span class="molmass">15.9994</span></div></a>
这能做你想做的事。
它在做什么:
- 它使用
document.querySelectorAll
选择页面中的所有a
元素。这将返回一个节点列表,其中包含我选择的所有元素。 - 这个节点列表的行为有点像数组,所以我可以使用一个名为 map 的数组函数来遍历所有元素。如果你想知道这到底是如何工作的,请阅读:MDN - Array.prototype.map。
- I 将两个事件处理程序添加到
a
元素。一个在鼠标进入a
元素时触发,另一个在鼠标离开时触发。 - 当您输入
a
元素时,我们将停止所有传播。这意味着只有父级触发事件,而不是子级。 - 我们克隆子div并将其放在页面上。
- 当鼠标离开链接时,它会从页面中删除克隆的div。
在你的元素周期表上,你真的想将事件侦听器添加到表中,而不是单独添加120个元素。
包含元素的父div中使用.innerHTML。
document.getElementById('bigger-div').innerHTML = document.getElementById('original-div').innerHTML;
在子元素中使用宽度和高度大小时还要使用 %,以便其中的元素会自动调整为父元素的大小。
#bigger-div {
width:300px;
height:300px;
}
#inside-bigger-div {
width:100%;
height:100%;
}
使用 jQuery 可以大大减少此任务的样板代码。假设文档顶部的大元素的 id 为 "topcontainer":
jQuery(document).on('mouseover','.element',function() {
var content=jQuery(this).html();
jQuery('#topcontainer').html(content);
});
查看它的工作位置:http://jsfiddle.net/amenadiel/e9mbryez/
另外,我认为您不想在鼠标退出时清除topcontainer内容,因为在将多个元素悬停在一行中时会导致混乱的影响。
- 防止用户在jQuery Mobile中ajax加载页面时单击其他位置
- 如何'剪切'DOM元素并将其显示在其他位置
- 只在某些位置拆分数组,而不在其他位置拆分
- HTML 按钮以在页面上的其他位置提交表单
- Ajax调用正在将数据插入页面的其他位置
- 从其他位置触发文件选择窗口
- 使用 Javascript 悬停将 Div 复制到页面上的其他位置
- 如何将图像链接与 HTML 和 CSS 一起使用时,悬停时在其他位置显示图像
- 使用页面上其他位置的链接激活选项卡
- 单击按钮以显示,单击其他位置以隐藏
- 打开下拉菜单,单击页面上的其他位置
- 将WebSQL数据库复制到其他位置
- 在 SVG 动画中围绕舞台原点以外的其他位置旋转路径
- 如何发布到网址但重定向到其他位置
- 点击触摸设备上的其他位置,关闭CSS下拉菜单
- 从Javascript函数中获取值以显示在其他位置
- 当用户单击页面上的其他位置时,如何关闭自定义下拉菜单
- 在其他位置显示对象中的数据
- 在编辑表行输入值并单击jquery中的其他位置后,读取这些值
- 使用CSS悬停类悬停在链接上,并在页面的其他位置显示覆盖图像