CSS에서 : hover 역할을하는 인라인 스타일


93

CSS 스타일이 영향을 미치는 HTML 태그에 직접 포함하면 CSS의 대부분의 목적이 무효화되지만 때로는 다음과 같이 디버깅 목적으로 유용합니다.

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

다음과 같은 규칙을 포함하는 구문은 무엇입니까?

a:hover {text-decoration: underline;}

A 태그의 스타일 속성에? 분명히 이건 아니야 ...

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

... 항상 호버링하는 동안이 아니라 항상 적용되기 때문입니다.


이론적으로 호버를 동적으로 만들려는 경우 자바 스크립트를 사용하여 기존 시트의 window.document.styleSheets 목록을 사용하여 스타일 시트에 호버 규칙을 삽입 할 수 있습니다.
GAgnew 2011

답변:


97

할 수없는 일이 아닐까 걱정됩니다. 가상 클래스 선택기는 인라인으로 설정할 수 없습니다. 페이지 나 스타일 시트에서 설정해야합니다.

내가 언급해야 기술적으로 당신이 해야 그것을 할 수있을 CSS의 사양에 따라 ,하지만 대부분의 브라우저를 지원하지 않습니다

편집 : 나는 이것으로 간단한 테스트를했다 :

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

그리고 IE7, IE8 베타 2, Firefox 또는 Chrome에서는 작동하지 않습니다. 다른 사람이 다른 브라우저에서 테스트 할 수 있습니까?


3
그것은 6 년 동안 업데이트되지 않은 매우 낮은 우선 순위의 CSS 3 작업 초안입니다. 사양에서 : 'W3C 작업 초안을 참조 자료로 사용하거나 "진행중인 작업"이외의 것으로 인용하는 것은 부적절합니다. '
Jim

1
사실이지만 브라우저는 일부 CSS3 규칙을 구현 합니다 .이 문맥에서는 아마도 잘못된 단어 일 것입니다
Glenn Slaven

브라우저는 일반적으로 추가 개발 상태에있는 CSS 기능을 구현합니다. 예를 들어 불투명도는 CSS 색상 (마지막 호출)에서 가져오고 미디어 쿼리는 후보 권장 사항입니다.
Jim

style = ": hover {}"가 스타일 시트의 "a {: hover {}}"와 같지 않습니까? 그것은 분명히 구문 오류입니다.
Kornel

32
이 답변은 아주 오래 전에 게시되었으며 그 이후로 상황이 변경되었으며 관련 W3C 사양의 현재 버전 인 CSS 스타일 속성 Rec. ( w3.org/TR/css-style-attr/#syntax ) — 스타일 속성이 CSS 선언 블록의 내용 만 포함 할 수 있음을 분명히 말합니다. 따라서 style속성이있는 의사 요소를 삽입하는 것은 이제 불가능 합니다.
Ilya Streltsyn 2014 년

24

디버깅 만하는 경우 javascript를 사용하여 CSS를 수정할 수 있습니다.

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

1
JSF를 사용하여 솔루션을 검색했으며 이로 인해 문제를 해결할 수있었습니다. onmousemove = "this.style.color = '## {cc.attrs.color}';" onmouseout = "this.style.color = 'white';"
kdoteu 2014-06-02

17

간단한 해결책 :

   <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>

16

디버깅을위한 것이라면 호버링을위한 CSS 클래스를 추가하기 만하면됩니다 (요소는 둘 이상의 클래스를 가질 수 있기 때문입니다).

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

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

2
이것은 아마도 원하는 효과를 얻을 수있는 가장 가까운 것입니다
Glenn Slaven

1

onmouseover 및 onmouseout 동작을 사용하여 CSS없이 호버 팝업을 만들고자하는 사람을 위해 빠른 솔루션을 구성했습니다.

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>

0

해당 <p>태그가 JavaScript에서 생성 된 경우 다른 옵션이 있습니다. JSS를 사용하여 프로그래밍 방식으로 문서 헤드에 스타일 시트를 삽입합니다. 그것은 지원하지 않습니다 '&:hover'. https://cssinjs.org/


-2

jQuery 가 의사 선택기를 지원 한다고 생각하지 않지만 단일 페이지에서 하나, 여러 또는 모든 유사한 컨트롤 및 태그에 이벤트를 추가하는 빠른 방법을 제공합니다.

무엇보다도 원하는 경우 이벤트 바인딩을 연결하고 한 줄의 스크립트에서 모두 수행 할 수 있습니다. 모든 HTML을 수동으로 편집하여 켜거나 끄는 것보다 훨씬 쉽습니다. 그런 다음 CSS에서 똑같이 할 수 있기 때문에 jQuery를 배우는 것 외에는 아무것도 구매하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.