Saya memiliki DIV tersembunyi yang berisi menu seperti toolbar.
Saya memiliki sejumlah DIV yang diaktifkan untuk menampilkan menu DIV ketika mouse berada di atasnya.
Apakah ada fungsi bawaan yang akan memindahkan menu DIV ke kanan atas DIV aktif (mouse hover)? Saya mencari sesuatu seperti$(menu).position("topright", targetEl);
Jawaban:
CATATAN: Ini membutuhkan jQuery UI (bukan hanya jQuery).
Anda sekarang dapat menggunakan:
Untuk penentuan posisi cepat ( UI jQuery / Posisi ).
Anda dapat mengunduh jQuery UI di sini .
sumber
tl; dr: (coba di sini )
Jika Anda memiliki HTML berikut:
maka Anda dapat menggunakan kode JavaScript berikut:
Tapi itu tidak berhasil!
Ini akan berfungsi selama menu dan placeholder memiliki orangtua offset yang sama. Jika tidak, dan Anda tidak memiliki aturan CSS bersarang yang peduli dengan
#menu
elemen DOM , gunakan:tepat sebelum garis yang memposisikan
#menu
elemen.Tapi tetap saja tidak berhasil!
Anda mungkin memiliki beberapa tata letak aneh yang tidak berfungsi dengan pendekatan ini. Dalam hal ini, cukup gunakan plugin posisi jQuery.ui (sebagaimana disebutkan dalam jawaban di bawah), yang menangani setiap kemungkinan kejadian . Perhatikan bahwa Anda harus ke
show()
elemen menu sebelum memanggilposition({...})
; plugin tidak dapat memposisikan elemen tersembunyi.Perbarui catatan 3 tahun kemudian pada tahun 2012:
(Solusi asli diarsipkan di sini untuk anak cucu)
Jadi, ternyata metode asli yang saya miliki di sini jauh dari ideal. Secara khusus, itu akan gagal jika:
Untungnya, jQuery memperkenalkan metode (
position()
danouterWidth()
) jalan kembali ke 1.2.6 yang membuat menemukan nilai yang tepat dalam kasus terakhir di sini jauh lebih mudah. Untuk kasus sebelumnya,append
memasukkan elemen menu ke placeholder works (tetapi akan melanggar aturan CSS berdasarkan nesting).sumber
Inilah yang pada akhirnya berhasil bagi saya.
sumber
Berikut adalah fungsi jQuery yang saya tulis yang membantu saya memposisikan elemen.
Berikut adalah contoh penggunaannya:
Kode di atas menyejajarkan kanan-bawah # el1 dengan kanan-atas # el2. ['cc', 'cc'] akan memusatkan # el1 di # el2. Pastikan # el1 memiliki css posisi: absolut dan indeks-z: 10000 (atau angka yang sangat besar) untuk tetap di atasnya.
Opsi offset memungkinkan Anda untuk mendorong koordinat dengan jumlah piksel tertentu.
Kode sumber di bawah ini:
sumber
Mengapa terlalu rumit? Solusinya sangat sederhana
css:
jquery:
Itu bekerja bahkan jika,
sumber
Anda dapat menggunakan plugin jQuery PositionCalculator
Plugin itu juga termasuk penanganan tabrakan (flip), sehingga menu seperti toolbar dapat ditempatkan pada posisi yang terlihat.
untuk markup itu:
Ini biola: http://jsfiddle.net/QrrpB/1657/
sumber
Sesuatu seperti ini?
sumber
Ini bekerja untuk saya:
sumber