установить стиль с помощью: hover javascript
Я понимаю, что следующий метод отлично подходит для установки стилей CSS из-за совместимости браузера.
element.style.cssText = "color:red;";
что я не могу использовать cssText
применить стили на :hover
и :focus
события CSS.
Что мне делать вместо этого?
element.style.cssText = ":focus{color:red;}";
P. S. Не говоря уже об использовании события JavaScript, такие как onmouseover
вместо CSS :hover
(это не соответствует моей ситуации.)
2 ответов
вы можете сделать это с помощью магии Вуду:
var head = document.getElementsByTagName('head')[0];
var style = document.createElement('style');
var declarations = document.createTextNode('selector:pseudo { property: value }');
style.type = 'text/css';
if (style.styleSheet) {
style.styleSheet.cssText = declarations.nodeValue;
} else {
style.appendChild(declarations);
}
head.appendChild(style);
не совсем то, что вам нужно, но вы можете настроить его и сделать из него причудливую функцию, если хотите.
вы всегда можете добавить отдельное правило стиля в существующую таблицу стилей вместо создания нового элемента стиля. Что-то вроде:
function addStyle() {
var style = document.styleSheets[0]; //select style sheet (0==first)
var styleSel = ".class:hover"; //define selector
var styleDec = "color: red;"; //define declaration
if(style.insertRule) { //for modern, DOM-compliant browsers
style.insertRule(styleSel+'{'+styleDec+'}', style.cssRules.length);
//I chose to do it this way to more easily support the addRule method, but
//know that insertRule only needs two parameters, full style rule
//(selector+prop/value declarations), and index to insert rule at
// styleSheets[0].insertRule(rule, index);
}else { //for IE < 9
style.addRule(styleSel, styleDec, -1);
}
}
я адаптировала пример в MDN
Это предполагает, что вы используете класс (который уже определен и применен) для добавления псевдо-селектора :hover, но это может быть так же легко селектором ID или элемента.
если вы не смогли добавить правило класса или стиля заранее, вы также можете сделать это динамически примерно так же (определите класс, определите класс:наведите курсор, затем примените класс к нужным элементам).