我想在特定的坐标上定位一个DIV,使用JavaScript该怎么做?
脚本使用left
和top
属性表示距左边缘和上边缘的像素数。它必须具有position: absolute;
var d = document.getElementById('yourDivId');
d.style.position = "absolute";
d.style.left = x_pos+'px';
d.style.top = y_pos+'px';
或者将其作为一个函数来执行,这样您就可以将其附加到像onmousedown
这样的事件上。
function placeDiv(x_pos, y_pos) {
var d = document.getElementById('yourDivId');
d.style.position = "absolute";
d.style.left = x_pos+'px';
d.style.top = y_pos+'px';
}
div.blah {
position:absolute;
top: 0; /*[wherever you want it]*/
left:0; /*[wherever you want it]*/
}
var blahclass = $('.blah');
blahclass.css('position', 'absolute');
blahclass.css('top', 0); //or wherever you want it
blahclass.css('left', 0); //or wherever you want it
或者,如果你必须使用传统的 JavaScript,你可以通过id来获取元素
var domElement = document.getElementById('myElement');// don't go to to DOM every time you need it. Instead store in a variable and manipulate.
domElement.style.position = "absolute";
domElement.style.top = 0; //or whatever
domElement.style.left = 0; // or whatever
.class
而不是myElement
,并且使用top
和left
而不是x
和y
,不是吗? - Tomasdocument.getElementById()
获取HTML元素的引用之外,您还可以使用任意类似于jQuery的选择器和document.querySelector()及其多种变体来引用它。 - Shammel Lee如果你只想定位一个div而不需要其他操作,那么你不需要使用JavaScript,只需使用CSS即可。关键是要相对于哪个容器位置定位你的div,如果你想相对于文档主体定位,则你的div必须被绝对定位,其容器不能被相对或绝对定位,否则你的div将相对于容器定位。
另外,如果你想相对于文档位置定位一个元素,则可以使用Jquery的offset()方法。
$(".mydiv").offset({ top: 10, left: 30 });
var pos = $('.parent').offset();
var top = pos.top + 'no of pixel you want to give the mydiv from top relative to parent';
var left = pos.left + 'no of pixel you want to give the mydiv from left relative to parent';
$('.mydiv').css({
position:'absolute',
top:top,
left:left
});
function getOffsetSum(elem) {
var top=0, left=0
while(elem) {
top = top + parseInt(elem.offsetTop)
left = left + parseInt(elem.offsetLeft)
elem = elem.offsetParent
}
return {top: top, left: left}
}
function getOffsetRect(elem) {
var box = elem.getBoundingClientRect()
var body = document.body
var docElem = document.documentElement
var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft
var clientTop = docElem.clientTop || body.clientTop || 0
var clientLeft = docElem.clientLeft || body.clientLeft || 0
var top = box.top + scrollTop - clientTop
var left = box.left + scrollLeft - clientLeft
return { top: Math.round(top), left: Math.round(left) }
}
function getOffset(elem) {
if (elem.getBoundingClientRect) {
return getOffsetRect(elem)
} else {
return getOffsetSum(elem)
}
}
<!-- html code -->
<div class="box" id="myElement"></div>
/* css code */
.box {
position: fixed;
}
// js code
document.getElementById('myElement').style.top = 0; //or whatever
document.getElementById('myElement').style.left = 0; // or whatever
document.getElementById(id).style.top = "0px";
document.getElementById(id).style.left = "0px";
在jQuery中还存在其他好的替代品
我抄袭了这个并且加上了“px”;工作得非常好。
function getOffset(el) {
el = el.getBoundingClientRect();
return {
left: (el.right + window.scrollX ) +'px',
top: (el.top + window.scrollY ) +'px'
}
}
to call: //Gets it to the right side
el.style.top = getOffset(othis).top ;
el.style.left = getOffset(othis).left ;
x_pos
,y_pos
的位置即可。 - Michael Berkowski