Bagaimana cara memposisikan DIV dalam koordinat tertentu?


120

Saya ingin memposisikan DIV dalam koordinat tertentu? Bagaimana saya bisa melakukannya menggunakan Javascript?

Jawaban:


170

Script its leftand topproperties masing-masing sebagai jumlah piksel dari tepi kiri dan tepi atas. Itu pastiposition: absolute;

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

Atau lakukan sebagai fungsi sehingga Anda dapat melampirkannya ke acara seperti 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';
}

Saya mengambil koordinat x, y dari klik mouse, bagaimana cara menampilkan Div pada posisi mouse?
Adham

@adham Anda sudah memiliki koordinat x, y? Cukup terapkan di tempat x_pos,y_pos
Michael Berkowski

itu membulatkan posisi selalu ... apakah mungkin untuk mengatur posisi seperti 1.6 daripada menjadi 2 atau 1.
Muhammad Umer

bagaimana jika kita memiliki koordinat, (x1, y2) (x2, y2) (x3, y3) (x4, y4)?
John dey

Saya melakukan hal yang persis sama tetapi div saya tidak ditempatkan di dekat koordinat mouse saya. Namun itu pindah ke posisi awal atas halaman utama setelah header. Maksud saya master Div. Bisakah seseorang membantu saya memahami mengapa?
JNPW

32

Anda tidak harus menggunakan Javascript untuk melakukan ini. Menggunakan css biasa-lama:

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

Jika Anda merasa Anda harus menggunakan javascript, atau mencoba melakukan ini secara dinamis Menggunakan JQuery, ini memengaruhi semua div kelas "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

Sebagai alternatif, jika Anda harus menggunakan javascript lama biasa Anda dapat mengambil dengan 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

apa? Anda harus menggunakan .class daripada myElement dan atas & kiri daripada x & y, bukan?
TMS

Selain mendapatkan referensi ke elemen HTML dengan document.getElemtentById(), Anda juga dapat mereferensikannya dengan pemilih mirip jQuery arbitrary dengan document.querySelector () dan banyak variasinya
Shammel Lee

9

baik itu tergantung jika yang Anda inginkan adalah memposisikan div dan tidak ada yang lain, Anda tidak perlu menggunakan java script untuk itu. Anda dapat mencapai ini hanya dengan CSS. Yang penting adalah relatif terhadap penampung apa yang Anda inginkan untuk memposisikan div Anda, jika Anda ingin memposisikannya relatif terhadap badan dokumen maka div Anda harus diposisikan absolut dan penampungnya tidak boleh diposisikan secara relatif atau mutlak, dalam hal ini div Anda akan diposisikan relatif terhadap wadah.

Sebaliknya dengan Jquery jika Anda ingin memposisikan elemen relatif terhadap dokumen, Anda dapat menggunakan metode offset ().

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

jika relatif untuk mengimbangi posisi induk, relatif atau absolut induk. kemudian gunakan mengikuti ...

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

Hebat @Ehtesham Ini sangat membantu saya.
RN Kushwaha

2

Anda juga dapat menggunakan properti css posisi tetap.

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

Berikut adalah artikel yang dijelaskan dengan benar dan juga contoh dengan kode. Koordinat JS

Sesuai kebutuhan. di bawah ini adalah kode yang akhirnya diposting di artikel itu. Perlu memanggil fungsi getOffset dan meneruskan elemen html yang mengembalikan nilai atas dan kirinya .

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

Saya menuliskan ini dan menambahkan 'px'; Bekerja dengan sangat baik.

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 ; 
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.