Как отладить проблемы с наведением курсора CSS / Javascript
-
22-08-2019 - |
Вопрос
Я часто ловлю себя на том, что хочу отладить проблемы с версткой CSS, которые связаны с изменениями DOM, вызванными Javascript в ответ на событие наведения курсора или другие правила CSS, применяемые из-за селектора :hover .
Обычно я бы использовал Firebug для проверки элемента, который доставляет мне проблемы, и выяснил, каковы были его CSS-свойства и откуда взялись эти свойства.Однако, когда задействовано наведение курсора мыши, это становится невозможным, потому что, как только вы перемещаете курсор мыши вниз к панели Firebug, интересующие вас элементы больше не наведены, применяемые правила CSS отличаются, и (в случае наведения курсора JS) DOM изменяется.
Есть ли какой-либо способ, которым я могу "заморозить" состояние DOM и применение: hover, чтобы проверить DOM таким, каким он был во время событие наведения?
Конечно, любые другие идеи о том, как отладить такого рода проблемы, приветствуются.
Решение
Добавить onmouseover
обработчик функции для элемента, который принимает :hover
.Внутри этой функции вызовите console.info(element)
о любом элементе, о котором вы хотели бы знать.
myHoverElement.onmouseover = function() {
console.info(document.getElementById("someotherelementofinterest"));
};
Когда вы запустите это с активным firebug, элемент будет доступен для проверки в консоли firebug.
Другие советы
Вы можете сделать это в Firebug, но это немного "глючит".Если вы осмотрите элемент, а затем перейдете с вкладки html на вкладку DOM, например, когда вы вернетесь на вкладку html, на вкладке css "style" справа появится выпадающий переключатель со стрелкой, в котором вы можете выбрать состояние: hover этого элемента, чтобы он был активным.Отстойно переключать вкладки, чтобы заставить его отображаться, но у меня это работает.
При проверке ссылок Firebug показывает состояние CSS по умолчанию, т.е.стили, применяемые к ссылке:.По умолчанию стили :hover и :active не отображаются.К счастью, вы можете изменить состояние ссылки, нажав "Стиль" и выбрав соответствующую опцию:
В firebug, находясь в режиме HTML, перейдите на правую боковую панель и найдите вкладку "Стили".Щелкните стрелку вниз и выберите :hover
.
В Firefox (версия 33.1.1):
- Проверить элемент (Q)
- В представлении DOM щелкните правой кнопкой мыши элемент
- выберите :наведение курсора , :активный или : фокус в нижней части контекстного меню
Некоторые наборы инструментов JavaScript, такие как Dojo, используют CSS-классы, такие как dijitButtonHover для стилизации, а не :hover .
Таким образом, вкладка стиля: трюк с наведением курсора не работает.
Вместо этого вы можете щелкнуть правой кнопкой мыши узел (кто меняет классы CSS) на вкладке HTML и "Прервать изменение атрибута".
В Chrome (версия 35):
- Проверить элемент
- В окне просмотра элементов щелкните правой кнопкой мыши на элементе .
- Выберите "Принудительное состояние элемента" -> :активный, : наведение, :фокус, : посещенный
для решения проблем с css я нахожу плагин для веб-разработчика бесценным:
http://chrispederick.com/work/web-developer/
загрузите его, после чего в вашем распоряжении будет 2 возможных инструмента.
унаследованный css из файлов на любом наведенном элементе, используйте shift-ctrl-y
вычисленный css (включая любой встроенный стиль = applied, которого нет в файле .css - или с помощью метода .css из jquery и т.д.) - нажмите shift-ctrl-f
последний также вернул бы все классы, примененные к элементу.
конечно, у него есть и другие замечательные применения, такие как превосходная отладка форм, включая редактирование скрытых полей и файлов cookie (которые можно использовать для тестирования на проникновение).
Вы также можете просмотреть этот элемент, затем на вкладке "Стиль" должна появиться маленькая стрелка выпадающего списка.В нем будет что-то вроде "Показать пользовательский агент", "Развернуть сокращенные свойства", затем под этим должно быть еще 2 (я предполагаю, что вы проверяете что-то, имеющее состояние наведения) :active
и :hover
выберите :hover
и ты должен быть золотым.
У меня была такая же проблема, и я обнаружил, что, хотя я не мог проверять объекты наведения курсора в Firefox с помощью Firebug, веб-инспектор Safari замораживал текущее состояние и разрешал проверку.Чтобы активировать веб-инспектор Safari, просто введите следующую строку в терминал и перезапустите Safari:
defaults write com.apple.Safari WebKitDeveloperExtras -bool true
Активируйте наведенный элемент в браузере, затем щелкните правой кнопкой мыши и выберите "Проверить элемент".Страница зависнет в своем текущем состоянии, что позволит вам просматривать мимолетные объекты сколько душе угодно.
В firebug нет идеального решения (наведение курсора мыши-эффект симуляции).
Однако есть несколько способов изменить состояние наведения в firebug:
Добавить
:active
государство, наряду с вашим:hover
a:hover, a:active { ... }
Если вы наведете курсор мыши на свой элемент, потянете его вниз и отпустите, он останется активным.
Поверните
:hover
состояние в.hover
классВы можете отредактировать правило CSS, нажав на исходный файл (на вкладке Стиль Firebug).
Затем, конечно, вы бы добавили (и удалили)
.hover
класс из вашей стихии.
Я часто создаю какой-нибудь альтернативный CSS или Javascript, чтобы "заморозить" мое зависшее событие;доведите его до совершенства с помощью Firebug и верните мое наведение на место.
Да, вы можете щелкнуть правой кнопкой мыши "Проверить элемент" при запуске состояния наведения.Это сработало у меня в Firebug и WebKit.
Я знаю, что этот пост немного устарел, но для тех, кто найдет это в Google, я создал кроссбраузерный инструмент, который позволяет визуализировать ваш HTML / CSS макет простым движением мыши.Вы можете легко просматривать элементы в состоянии наведения курсора мыши.
В более новых версиях Firefox (по крайней мере, v57 и выше) пользовательский интерфейс инспектора немного отличается от того, когда были опубликованы другие ответы.Чтобы включить и заморозить :active
/:hover
/:focus
состояние элемента, проверьте его (щелкните правой кнопкой мыши -> Проверить элемент) и в инспекторе щелкните по:
Результат:
Источник (изображения лицензированы в соответствии с CC-BY-SA версии 5, авторами Mozilla)