비활성화되지 않은 경우에만 호버 및 활성


186

내가 사용하는 호버 , 활성버튼 스타일을 지정하기 및 비활성화사용 합니다.

그러나 문제는 버튼이 비활성화되어 있으면 호버 및 활성 스타일이 여전히 적용됩니다.

활성화 된 버튼에만 호버를 적용하고 활성화하는 방법은 무엇입니까?

답변:



75
.button:active:hover:not([disabled]) {
    /*your styles*/
}

당신은 이것을 시도 할 수 있습니다 ..


"호버 비활성화 됨"상태가 "호버링 비활성화 됨"상태와 동일하게 보이도록하려는 경우에 적합한 솔루션입니다.
Mikhael Loo

나는 <3이 해결책이다. : not (.no-hover)를 사용하여 <button class = "button"> 마우스 </ button> 및 <button class = "button no-hover> 호버하지 않음 </ button>
Ben

35

CSS에서 "disabled"속성을 사용하지 않는 이유는 무엇입니까? 모든 브라우저에서 작동해야합니다.

button[disabled]:hover {
    background: red;
}
button:hover {
    background: lime;
}

13
한 줄에서 모두 선택하여 비활성화 된 모든 상태를 커버하십시오..button[disabled], .button[disabled]:hover, .button[disabled]:focus, .button[disabled]:active {}
DBK

13

대부분의 최신 브라우저 (IE11 + 및 일부 모바일 Opera & IE 브라우저 제외)에서 작동하는 낮은 특이성 접근 방식 ( http://caniuse.com/#feat=pointer-events ) :

.btn {
  /* base styles */
}

.btn[disabled]
  opacity: 0.4;
  cursor: default;
  pointer-events: none;
}

.btn:hover {
  color: red;
}

pointer-events: none규칙은 호버를 비활성화합니다. .btn[disabled]:hover호버 스타일을 무효화 하기 위해 선택기를 사용하여 특수성을 높일 필요는 없습니다 .

(참고로, 이것은 논쟁적인 추상 입력 장치 포인터 이벤트가 아닌 간단한 HTML 포인터 이벤트입니다)


12

sass (scss)에서 :

 button {
  color: white;
  cursor: pointer;
  border-radius: 4px;

  &:disabled{
    opacity: 0.4;

    &:hover{
      opacity: 0.4;  //this is what you want
    }
  }

  &:hover{
    opacity: 0.9;
  }
}

10

당신이 사용하는 경우 LESS또는 Sass, 당신이 시도 할 수 있습니다 :

.btn {
  &[disabled] {
    opacity: 0.6;
  }
  &:hover, &:active {
    &:not([disabled]) {
      background-color: darken($orange, 15);
    }
  }
}

차단하지 않은 상태로 래핑하지 않는 한 비활성화 된 버튼에 대해 호버 효과가 처리되므로 SASS에서 유용한 솔루션입니다.
mbokil

2

한 가지 방법은 css에서 버튼을 비활성화하고 해당 클래스의 호버 및 활성 상태를 재정의하면서 부분 클래스를 추가하는 것입니다. 또는 CSS에서만 해당 클래스의 호버 및 활성 의사 속성을 비활성화하고 지정할 때 클래스를 제거하십시오. 어느 쪽이든, CSS로 순수하게 수행 할 수는 없으므로 약간의 js를 사용해야합니다.

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