2008-09-25 8 views
63

wiem, że osadzanie stylów CSS bezpośrednio w znacznikach HTML one wpływają pokonuje wiele celów CSS, ale czasami jest to przydatne dla celów debugowania, jak w:styl Inline działać jako: hover w CSS

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

Jaka jest składnia do osadzania regułę jak:

a:hover {text-decoration: underline;} 

do atrybutu stylu charakterystycznym dla tagu? To oczywiście nie jest ...

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

... ponieważ będzie to miało zastosowanie przez cały czas, w przeciwieństwie do tylko podczas zawisu.

+0

Teoretycznie, jeśli starają się zrobić coś unosić dynamiczny, można użyć javascript, aby wprowadzić regułę aktywowanych w arkuszu stylów używając listy window.document.styleSheets istniejących arkuszy. – GAgnew

+0

Zobacz także https: // stackoverflow.com/questions/5293280/css-pseudo-class-with-inline-style – rogerdpack

Odpowiedz

69

Obawiam się, że nie da się tego zrobić, selektory pseudoklasowe nie mogą być ustawione w linii, musisz to zrobić na stronie lub arkuszu stylów.

należy wspomnieć, że technicznie ty powinien być w stanie to zrobić according to the CSS spec, ale większość przeglądarek nie obsługują to

Edit: Właśnie zrobiłem szybki test z tym:

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

I nie działa w IE7, IE8 beta 2, Firefox ani Chrome. Czy ktokolwiek może testować w innych przeglądarkach?

+2

To jest praca o bardzo niskim priorytecie CSS 3, która nie była aktualizowana od sześciu lat. Z specyfikacji: "Nie należy używać W3C Working Drafts jako materiału referencyjnego ani cytować ich jako innych niż" praca w toku ". " – Jim

+1

Prawda, ale przeglądarki implementują niektóre reguły CSS3, * prawdopodobnie * jest prawdopodobnie niewłaściwym słowem w tym kontekście. –

+0

Przeglądarki zazwyczaj implementują funkcje CSS, które znajdują się w dalszym stanie rozwoju, np. krycie pochodzi z CSS Color (Last Call), a Media Queries to rekomendacja kandydata. – Jim

17

Jeśli jesteś tylko do debugowania, można użyć javascript, aby modyfikować CSS:

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

Szukałem rozwiązania z JSF i to pomogło mi to naprawić. onmousemove = "this.style.color = '## {cc.attrs.color}';" onmouseout = "this.style.color = 'white';" – kdoteu

16

Jeśli to do debugowania, wystarczy dodać klasę css do unoszące (ponieważ elementy mogą mieć więcej niż jedną klasę):

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

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

To jest prawdopodobnie najbliższy oczekiwanemu efektowi –

-1

nie sądzę jQuery obsługuje pseudo-selektorów obaj, ale daje szybki sposób dodawać wydarzenia do jednego, wielu lub wszystkich podobnych kontroli i tagów na jednej stronie.

Co najlepsze, możesz powiązać wiązanie zdarzeń i zrobić to wszystko w jednym wierszu skryptu, jeśli chcesz. Znacznie łatwiejsze niż ręczne edytowanie całego kodu HTML, aby je włączyć lub wyłączyć. Z drugiej strony, ponieważ możesz zrobić to samo w CSS, nie wiem, że kupuje ci wszystko (poza nauką jQuery).

7

Proste rozwiązanie:

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

Albo

<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

ułożyła szybkie rozwiązanie dla wszystkich, którzy chcą tworzyć wyskakujące okna kursorem myszy bez CSS używając onmouseover i onmouseout zachowań.

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>