Saya mencoba memasukkan div ke bagian mana pun dari tubuh dan membuatnya position: absolute
relatif terhadap seluruh dokumen dan bukan elemen induk yang memiliki file position: relative
.
Saya mencoba memasukkan div ke bagian mana pun dari tubuh dan membuatnya position: absolute
relatif terhadap seluruh dokumen dan bukan elemen induk yang memiliki file position: relative
.
Jawaban:
Anda harus menempatkan bagian div
luar position:relative
elemen dan ke dalam body
.
position:fixed
dan position:absolute
tidak memiliki perilaku yang sama. Perbaikan relatif terhadap viewport (bukan dokumen) dan akan menyebabkan item selalu terlihat bahkan setelah menggulir berpotensi menyebabkan tumpang tindih, dll. Saya memahami bahwa mungkin ada alasan yang valid untuk struktur html, tetapi karena pertanyaannya secara khusus tentang html dan css, jawaban saya benar. Satu-satunya cara tanpa JS untuk membuatnya relatif terhadap dokumen adalah dengan mengeluarkannya dari position:relative
elemen.
Anda sedang mencari position: fixed
.
Dari MDN :
Pemosisian tetap mirip dengan pemosisian absolut, dengan pengecualian bahwa blok yang memuat elemen adalah area pandang. Ini sering digunakan untuk membuat elemen mengambang yang tetap di posisi yang sama bahkan setelah menggulir halaman.
Solusi saya adalah menggunakan jQuery untuk memindahkan div di luar induknya:
<script>
jQuery(document).ready(function(){
jQuery('#loadingouter').appendTo("body");
});
</script>
<div id="loadingouter"></div>
Jika Anda tidak ingin melampirkan elemen ke body
, solusi berikut akan berfungsi.
Saya datang ke pertanyaan ini mencari solusi yang akan bekerja tanpa melampirkan div ke tubuh, karena saya memiliki skrip gerakan mouse yang ingin saya jalankan saat mouse berada di atas elemen baru dan elemen yang menelurkannya. Selama Anda mau menggunakan jQuery, dan terinspirasi oleh jawaban @Liam William:
var leftOffset = <<VALUE>>;
var topOffset = <<VALUE>>;
$(element).css("left", leftOffset - element.offset().left);
$(element).css("top", topOffset - element.offset().top);
Solusi ini bekerja dengan mengurangkan posisi kiri dan atas elemen saat ini (relatif terhadap badan) untuk memindahkan elemen ke 0, 0. Menempatkan elemen di mana pun Anda inginkan relatif terhadap badan semudah menambahkan offset kiri dan atas nilai.
Ini tidak mungkin hanya dengan CSS dan HTML.
Menggunakan Javascript / jQuery Anda berpotensi mendapatkan elemen jQuery.offset()
ke DOM dan membandingkannya jQuery.position()
untuk menghitung di mana ia akan muncul pada halaman.
jQuery.offset({ left: 0 })
Untuk kemenangan!
<body>
tag, bukan?