我有一个div元素,我正在使用它作为一个弹出搜索字段,我希望它出现在被过滤的元素下面。但是,似乎我不能使用我希望该字段相对的元素的style.bottom和style.left,因为此元素是静态的。
示例在这里:http://www.is-epic.co.uk/example/example.html
单击标题2链接将在表格的左上角显示输入框。我希望它大致出现在数据1.2的位置。我如何实现这一目标?
(example.html中的代码在一个页面上,在live dev CSS中,JS在单独的文件中)
答案 0 :(得分:3)
设置您希望将另一个元素相对于position: relative
放置的元素。
这将使其成为position: absolute
的任何后代的包含块(除非两者之间的元素也是position: not static
)。
答案 1 :(得分:2)
适用于FF和Google-Chrome
var head = document.getElementById("header_2");
var filter = document.getElementById("search_filter");
filter.style.display = "";
filter.style.left = head.offsetLeft + 'px';
filter.style.top = head.offsetTop + head.offsetHeight + 'px';
它也适用于IE ..
我使用变量过滤器和head来减少输入:)
答案 2 :(得分:0)
问题在于header_2
style.left
和style.bottom
都是0,所以
document.getElementById("search_filter").style.left =
document.getElementById("header_2").style.left;
document.getElementById("search_filter").style.top =
document.getElementById("header_2").style.bottom;
相当于
document.getElementById("search_filter").style.left = 0;
document.getElementById("search_filter").style.top = 0;
这正是发生的事情。您必须找出header_2
的实际位置,例如使用jQuery。