Я создал функцию, которая перезаписывает: наведение некоторых элементов на странице. Он исчезает между нормальным и эффектом: hover. Это для я должен был создать класс .hover в моем файле CSS. Я думаю, что это немного нечисто. Как я мог прочитать содержимое псевдокласса: hover?Читать: hover pseudo class with javascript
ответ
ОБНОВЛЕНИЕ: Я как-то ошибся. Следующий пример не работает. См. @bfavaretto's comment для пояснения.
В Firefox, Opera и Chrome или любом другом браузере, который правильно реализует window.getComputedStyle
, очень просто. Вы просто должны пройти «парить» в качестве второго аргумента:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style type="text/css">
div {
display: block;
width: 200px;
height: 200px;
background: red;
}
div:hover {
background: green;
}
</style>
</head>
<body>
<div></div>
<script type="text/javascript">
window.onload = function() {
var div = document.getElementsByTagName("div")[0];
var style = window.getComputedStyle(div, "hover");
alert(style.backgroundColor);
};
</script>
</body>
</html>
Но я не верю, что есть еще решение для Internet Explorer, для использования Итак, класс document.styleSheets
как предложено Гамбо кроме. Но будут различия..hover
- лучшее решение. Не совсем нечисто.
Вы можете получить доступ к document.styleSheets
и искать правило, применяемое к этому конкретному элементу. Но это не чище, чем использование простого дополнительного класса.
таблицы стилей, загруженные из внешних файлов не доступны в document.styleSheets. –
Если есть какие-то люди здесь, которые используют вопросы, принятые ответ, но он не будет работать, вот хорошая функция, которая может:
function getPseudoStyle(id, style) {
var all = document.getElementsByTagName("*");
for (var i=0, max=all.length; i < max; i++) {
var targetrule = "";
if (all[i].id === id) {
if(all[i].selectorText.toLowerCase()== id + ":" + style) { //example. find "a:hover" rule
targetrule=myrules[i]
}
}
return targetrule;
}
}
Это тоже не сработает, пожалуйста, проверьте мой ответ. – bfavaretto
Что такое 'myrules' в коде? –
Использование getComputedStyle
, как на принятый ответ не будет работать, потому что :
- Вычисленный стиль для состояния зависания доступен только в том случае, если элемент фактически находится в этом состоянии.
- Второй параметр, равный
getComputedStyle
, должен быть пустым или псевдоэлементом. Он не работает с:hover
, потому что это псевдокласс.
Вот альтернативное решение:
function getCssPropertyForRule(rule, prop) {
var sheets = document.styleSheets;
var slen = sheets.length;
for(var i=0; i<slen; i++) {
var rules = document.styleSheets[i].cssRules;
var rlen = rules.length;
for(var j=0; j<rlen; j++) {
if(rules[j].selectorText == rule) {
return rules[j].style[prop];
}
}
}
}
// Get the "color" value defined on a "div:hover" rule,
// and output it to the console
console.log(getCssPropertyForRule('div:hover', 'color'));
Подозрительно идентичный, но метод [этот ответ] (http://stackoverflow.com/a/16966533/2231440) позволяет выбирать селектора, которые не являются целым выбором правил. – Trojan
Это не будет работать с таблицами стилей в других доменах из-за ограничений домена. так что это частичное решение – MindFold
- 1. Margin/padding hover with pseudo element issue
- 2. event.preventDefault() Причинение: hover pseudo class to stick
- 3. Hover States - Can not Apply Pseudo-class
- 4. css hover pseudo class issue when "leave hover"
- 5. : focus pseudo class with next sibling curiosity
- 6. CSS Pseudo Selector: Active After Pseudo: Hover
- 7. Middle Child Pseudo-Class
- 8. slideToggle with pseudo arrow
- 9. IE10 hover pseudo class не работает без цвета фона
- 10. jQuery - как получить/прочитать свойство css на: hover pseudo class
- 11. hover on: before pseudo elements
- 12. change child on hover pseudo
- 13. Styling Pseudo Elements on hover
- 14. pseudo class vertical-align
- 15. pseudo class a: focus
- 16. Pseudo Class Last Child
- 17. Анимация CSS Pseudo Class
- 18. JQuery Hover Class Fade with Background Изображение
- 19. .class a: hover vs .class: hover a
- 20. Показать div с помощью: active pseudo class
- 21. Override css from Pseudo class
- 22. Pseudo class: active not apply
- 23. Pseudo-class nesting/SCSS Linter Warning
- 24. Hover div, change: after pseudo другого div
- 25. Confused by CSS pseudo-class: active
- 26. z-index with after pseudo
- 27. Sass extend with pseudo selectors
- 28. Hover Item with JQuery
- 29. IE8 focus pseudo class и Sibling Selector
- 30. set pseudo class visibility to none
thx! Возможно, это не нечисто, но человек, который использует мою функцию, должен знать, что он должен делать класс. Было бы неплохо избежать этого. – meo
@ david, из любопытства, как вы собираетесь справиться с проблемой IE? –
@Ionut: это отличный пример непоследовательности браузера, который не стоит вашей фиксации времени. Если кто-то использует нижний браузер, он все равно получит рабочий сайт, у него просто не будет приятных прикосновений. – nickf