У меня есть скрытый DIV, который содержит меню, похожее на панель инструментов.
У меня есть несколько DIV, которые позволяют отображать меню DIV при наведении на них курсора мыши.
Есть ли встроенная функция, которая будет перемещать меню DIV в верхнем правом углу активной (наведение мыши) DIV? Я ищу что-то вроде$(menu).position("topright", targetEl);
Ответы:
ПРИМЕЧАНИЕ. Для этого требуется пользовательский интерфейс jQuery (а не только jQuery).
Теперь вы можете использовать:
Для быстрого позиционирования ( jQuery UI / Position ).
Вы можете скачать jQuery UI здесь .
источник
tl; dr: (попробуйте здесь )
Если у вас есть следующий HTML:
тогда вы можете использовать следующий код JavaScript:
Но это не работает!
Это будет работать до тех пор, пока у меню и заполнителя будет один и тот же родительский элемент смещения. Если нет, и у вас нет вложенных правил CSS, которые заботятся о том, где находится
#menu
элемент DOM , используйте:прямо перед строкой, которая позиционирует
#menu
элемент.Но это все еще не работает!
У вас может быть странный макет, который не работает с этим подходом. В этом случае просто используйте плагин позиции jQuery.ui (как упомянуто в ответе ниже), который обрабатывает все возможные варианты. Обратите внимание, что вам придется до
show()
элемента меню перед вызовомposition({...})
; плагин не может позиционировать скрытые элементы.Обновление заметки через 3 года в 2012 году:
(Оригинальное решение заархивировано здесь для потомков)
Итак, получается, что оригинальный метод, который я здесь использовал, был далек от идеала. В частности, он потерпит неудачу, если:
К счастью, в 1.2.6 jQuery представил методы (
position()
иouterWidth()
), которые значительно упрощают поиск правильных значений в последнем случае. В первом случаеappend
использование элемента меню в качестве заполнителя работает (но нарушает правила CSS, основанные на вложенности).источник
Это то, что сработало для меня в конце.
источник
Вот функция jQuery, которую я написал, которая помогает мне позиционировать элементы.
Вот пример использования:
Код выше выравнивает правый нижний угол # el1 с правым верхним краем # el2. ['cc', 'cc'] будет центрировать # el1 в # el2. Убедитесь, что у # el1 есть css of position: absolute и z-index: 10000 (или какое-то действительно большое число), чтобы держать его на вершине.
Опция смещения позволяет перемещать координаты на указанное количество пикселей.
Исходный код ниже:
источник
Зачем усложнять слишком много? Решение очень простое
CSS:
JQuery:
Это работает, даже если,
источник
Вы можете использовать плагин jQuery PositionCalculator
Этот плагин также включает в себя обработку столкновений (переворачивание), поэтому меню, похожее на панель инструментов, может быть размещено в видимом месте.
для этой разметки:
Вот скрипка: http://jsfiddle.net/QrrpB/1657/
источник
Что-то вроде этого?
источник
Это работает для меня:
источник