2008-09-25 2 views
63

Я знаю, что вложение стилей CSS непосредственно в HTML-тег они влияют на поражения большей части с целью CSS, но иногда это полезно для отладки, например:Инлайн стиля действовать как: парить в CSS

<p style="font-size: 24px">asdf</p> 

Что синтаксис для встраивания правила, как:

a:hover {text-decoration: underline;} 

в атрибут стиля тэга? Очевидно, это не так ...

<a href="foo" style="text-decoration: underline">bar</a> 

... так как это будет применяться все время, а не только во время зависания.

+0

Теоретически, если вы пытаетесь сделать что-то парение динамично, вы можете использовать JavaScript, чтобы ввести правило парения в таблицу стилей, используя список window.document.styleSheets существующих листов. – GAgnew 2011-11-09 21:52:20

+0

См. Также https: // stackoverflow.com/questions/5293280/css-pseudo-classes-with-inline-styles – rogerdpack 2017-07-06 20:14:52

ответ

69

Я боюсь, что это невозможно, селекторы псевдокласса не могут быть установлены в строке, вам нужно будет сделать это на странице или в таблице стилей.

Следует отметить, что технически вы должны быть в состоянии сделать это according to the CSS spec, но большинство браузеров не поддерживают его

Edit: Я просто сделал быстрый тест с этим:

<a href="test.html" style="{color: blue; background: white} 
      :visited {color: green} 
      :hover {background: yellow} 
      :visited:hover {color: purple}">Test</a> 

И он не работает в IE7, IE8 beta 2, Firefox или Chrome. Может ли кто-нибудь еще тестировать в любых других браузерах?

+2

Это очень низкий приоритет CSS 3 рабочий проект, который не обновлялся за шесть лет. Из спецификации: «Нецелесообразно использовать W3C Working Drafts в качестве справочного материала или приводить их в соответствие с« работами ». ' – Jim 2008-09-25 06:12:50

+1

Правда, но браузеры реализуют некоторые правила CSS3, * должен *, вероятно, неправильное слово в этом контексте – 2008-09-25 06:17:33

17

Если вы только отладки, вы можете использовать JavaScript, чтобы изменить CSS:

<a onmouseover="this.style.textDecoration='underline';" 
    onmouseout="this.style.textDecoration='none';">bar</a> 
16

Если это для отладки, просто добавить класс CSS для зависания (поскольку элементы могут иметь более одного класса):

a.hovertest:hover 
{ 
text-decoration:underline; 
} 

<a href="http://example.com" class="foo bar hovertest">blah</a> 
-1

Я не думаю, что jQuery поддерживает псевдо-селекторы либо, но он обеспечивает быстрый способ добавления события на один, много, или все другие подобные элементы управления и тегов на одной странице.

Лучше всего, вы можете связать привязки событий и сделать все это в одной строке сценария, если хотите. Гораздо проще, чем вручную редактировать весь HTML, чтобы включить или выключить их. Опять же, поскольку вы можете сделать то же самое в CSS, я не знаю, что он покупает вам что-нибудь (кроме обучения jQuery).

7

Простое решение:

<a href="#" onmouseover="this.style.color='orange';" onmouseout="this.style.color='';">My Link</a> 

Или

<script> 
/** Change the style **/ 
function overStyle(object){ 
    object.style.color = 'orange'; 
    // Change some other properties ... 
} 

/** Restores the style **/ 
function outStyle(object){ 
    object.style.color = 'orange'; 
    // Restore the rest ... 
} 
</script> 

<a href="#" onmouseover="overStyle(this)" onmouseout="outStyle(this)">My Link</a> 
1

я соединял быстрое решение для тех, кто хочет создать всплывающие окна при наведении курсора мыши без CSS, используя OnMouseOver и onmouseout поведения.

http://jsfiddle.net/Lk9w1mkv/

<div style="position:relative;width:100px;background:#ddffdd;overflow:hidden;" onmouseover="this.style.overflow='';" onmouseout="this.style.overflow='hidden';">first hover<div style="width:100px;position:absolute;top:5px;left:110px;background:white;border:1px solid gray;">stuff inside</div></div> 
Смежные вопросы