如何在特定坐标中定位DIV?

时间:2011-07-23 19:59:17

标签: javascript html coordinates

我想将DIV放在特定坐标中?我怎么能用Javascript做到这一点?

6 个答案:

答案 0 :(得分:145)

将其lefttop属性分别写为左边缘和上边缘的像素数。它必须有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';
}

答案 1 :(得分:31)

您不必使用Javascript来执行此操作。 使用普通的css:

div.blah {
  position:absolute;
  top: 0; /*[wherever you want it]*/
  left:0; /*[wherever you want it]*/
}

如果您认为必须使用javascript,或者尝试动态执行此操作 使用JQuery,这会影响类“blah”的所有div:

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

答案 2 :(得分:8)

好吧,这取决于你想要的只是定位div而不是其他任何东西,你不需要使用java脚本。您只能通过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
});

答案 3 :(得分:2)

您还可以使用位置固定的css属性。

<!-- 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

答案 4 :(得分:0)

这是一篇正确描述的文章,也是一个带代码的示例。 JS coordinates

根据要求。下面是该文章最后发布的代码。 需要调用 getOffset 函数并传递html元素,该元素返回其顶部左侧值。

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)
    }
}

答案 5 :(得分:0)

我对此进行了抄袭并添加了&#39; px&#39; 效果很好。

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 ;