Jak ustawić DIV w określonych współrzędnych?


Odpowiedzi:


170

Skrypt jego lefti topwłaściwości jako liczbę pikseli odpowiednio od lewej i górnej krawędzi. Muszę miećposition: absolute;

var d = document.getElementById('yourDivId');
d.style.position = "absolute";
d.style.left = x_pos+'px';
d.style.top = y_pos+'px';

Lub zrób to jako funkcję, aby móc dołączyć ją do wydarzenia, takiego jak 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';
}

Pobieram współrzędne x, y po kliknięciu myszą, jak mogę wyświetlić element Div w pozycji myszy?
Adham,

@adham masz już współrzędne x, y? Po prostu zastosuj je zamiast x_pos,y_pos
Michael Berkowski

zawsze zaokrągla pozycję ... czy można ustawić pozycję taką jak 1,6 zamiast zmieniać ją na 2 lub 1.
Muhammad Umer

co jeśli mamy kordinaty, (x1, y2) (x2, y2) (x3, y3) (x4, y4)?
John dey

Robię dokładnie to samo, ale mój element div nie jest umieszczany w pobliżu kordonu myszy. Jednak przesuwa się do górnej pozycji początkowej strony głównej po nagłówku. Mam na myśli mistrza Div. Czy ktoś może mi pomóc zrozumieć, dlaczego?
JNPW

32

Nie musisz do tego używać Javascript. Używanie zwykłego starego CSS:

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

Jeśli uważasz, że musisz używać javascript lub próbujesz to zrobić dynamicznie za pomocą JQuery, ma to wpływ na wszystkie elementy div klasy „blah”:

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

Alternatywnie, jeśli musisz używać zwykłego starego javascript, możesz pobrać go według identyfikatora

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

co? powinieneś użyć .class zamiast myElement oraz top & left zamiast x & y, prawda?
TMS,

Oprócz uzyskania odniesienia do elementu HTML za pomocą document.getElemtentById(), możesz również odwołać się do niego za pomocą dowolnego selektora podobnego do jQuery z document.querySelector () i jego wieloma odmianami
Shammel Lee

9

cóż, zależy to od tego, czy wszystko, czego chcesz, to ustawić element div, a potem nic więcej, nie musisz do tego używać skryptu java. Możesz to osiągnąć tylko za pomocą CSS. Liczy się to, w jakim kontenerze chcesz umieścić swój element div, jeśli chcesz go ustawić względem treści dokumentu, wtedy twój div musi być ustawiony bezwzględnie, a jego kontener nie może być umieszczony względnie lub absolutnie, w takim przypadku twój div zostanie umieszczony względem pojemnika.

W przeciwnym razie w Jquery, jeśli chcesz ustawić element względem dokumentu, możesz użyć metody offset ().

$(".mydiv").offset({ top: 10, left: 30 });

jeśli w stosunku do przesuniętej pozycji macierzystej, to rodzica względna lub bezwzględna. następnie użyj następujących ...

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

Świetny @Ehtesham To naprawdę mi pomogło.
RN Kushwaha

2

Możesz także użyć właściwości CSS o stałej pozycji.

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

2

Oto dobrze opisany artykuł, a także przykładowy kod. Współrzędne JS

Zgodnie z wymaganiami. poniżej znajduje się kod, który został ostatecznie opublikowany w tym artykule. Trzeba wywołać funkcję getOffset i przekazać element html, który zwraca swoje górne i lewe wartości.

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

0

Umieściłem to i dodałem „px”; Działa bardzo dobrze.

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 ; 
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.