CSS가 같지 않음 선택기가 있습니까?


116

CSS에! = (같지 않음)과 같은 것이 있습니까? 예를 들어, 다음 코드가 있습니다.

input {
 ... 
 ...
}

그러나 일부 입력의 경우 이것을 무효화해야합니다. 입력 태그에 "reset"클래스를 추가하여이를 수행하고 싶습니다.

<input class="reset" ... />

그런 다음 CSS에서이 태그를 건너 뜁니다.

어떻게 할 수 있습니까?

내가 볼 수있는 유일한 방법은 입력 태그에 클래스를 추가하고 다음과 같이 CSS를 다시 작성하는 것입니다.

input.mod {
 ...
 ...
}

당신이 당신의 질문에 대답했다고 생각합니다. input.mod에 스타일을 넣고 원하는 입력 태그에 'mod'클래스를 추가합니다.
Nazmul

답변:


157

CSS3에서는 사용할 수있는 :not()필터를, 그래서 당신이 무슨 일을하는지 알고 있어야 할 수 있지만 모든 브라우저가 아직 완전히 CSS3를 지원 해주기되는 모든 주요 브라우저에서 지원 이가이다 (그리고 꽤 많은 시간 동안왔다 대답 ...).

예:

<input type="text" value="will be matched" />
<input type="text" value="will not be matched" class="avoidme" />
<input type="text" value="will be matched" />

및 CSS

input:not(.avoidme) { background-color: green; }

참고 : 이 해결 방법은 더 이상 필요하지 않습니다. 나는 맥락을 위해 여기에 남겨 둘 것입니다.

CSS3를 사용하지 않으려면 모든 요소에 스타일을 설정 한 다음 클래스로 재설정 할 수 있습니다.

input { background-color: green; }
input.avoidme { background-color: white; }

OMG ... 나는 그것이 존재한다는 것을 알고 있었다 :) 네, 그렇습니다! 감사.
Alex Ivasyuv

2
지원은 주로 IE8 (및 이전 릴리스)에서 부족합니다. polyfill에 관심이있는 사람은 : selectivizr.com
franzlorenzon 2013-06-26

1
@Guru : 여러 :not()선택기를 연결할 수 있습니다 .input:not(.avoidme):not(.avoidmetoo) 어느 클래스 요소를 피할 수 input:not(.avoidme.andme)와 요소를 방지 할 클래스를.
Tomas Aschan 2015

1
@TomasLycken, 실제로 여러 선택기를 사용하는 것은 CSS에서 까다로운 것입니다. 예를 들어 :not(.this.that) { }작동 할 수도 있지만 다음과 같은 작업을 수행하면:not(.this, .that) { } 당신이 아래로 떨어질 것이다, 당신은 그들과 같은 데이지 체인이 있습니다 :not(.this):not(.that). 나는 내가 :) 도움이 미래의 독자에 노력하고, 당신은 아마 이것을 알고 이해
캔 O '스팸

1
미래의 독자를 위해 여기에 댓글 남기기 : @SamSwift 웃의 댓글은 여전히 ​​정확하지만 목록에 대한 지원은 향후 제공 될 예정 입니다. 그러나 지금은 단일 선택 자만 :not().
Tomas Aschan 2017-09-20

24

CSS에서만 재설정 클래스의 변경 사항을 '되돌리기'하여이를 수행 할 수도 있습니다.

INPUT { 
    padding: 0px;
}
INPUT.reset {
    padding: 4px;
}

8

CSS3에는 :not()이 있지만 아직 모든 브라우저에서 구현되지는 않았습니다. 그러나 IE9 플랫폼 미리보기에서 구현됩니다.

input:not(.reset) { }

http://www.w3.org/TR/css3-selectors/#negation

그 동안에는 구식 방법을 고수해야합니다.


6

다음과 같은 속성을 타겟팅하여 접근 할 수도 있습니다.

input:not([type=checkbox]){ width:100%; }

이 경우 '체크 박스'유형이 아닌 모든 입력의 너비는 100 %입니다.


4

흥미로운 것은 JQuery를 사용하여 DOM 요소를 선택하기 위해 이것을 시도했으며 작동합니다! :)

$("input[class!='bad_class']");

이 페이지에는 'comment-copy'클래스가없는 168 개의 div가 있습니다.

$("div[class!='comment-copy']").length => 168
$("div[class!='.comment-copy']").length => 168

11
[attr!="value"]jQuery 전용 선택기입니다. api.jquery.com/attribute-not-equal-selector
xec

이것이 CSS와 어떤 관련이 있습니까?
데블린의 carnate

@devlincarnate "CSS"선택기가 JS ( 2013 년경 )에 빠져서 사람들이 검색합니다.
Nick T

0

class = "reset"대신 class = "valid"를 사용하여 논리를 뒤집을 수 있습니다. 기본적으로 이것을 추가하고 클래스를 제거하여 스타일을 재설정 할 수 있습니다.

그래서 당신의 모범과 토마스에서

input.valid {
 ... 
 ...
}

<input type="text" value="will be matched" class="valid"/>
<input type="text" value="will not be matched" />
<input type="text" value="will be matched" class="valid"/>

2
클래스에 적용하여 "리셋"할 수 있다는 전체 아이디어는 기본 스타일을 가져서는 안되는 요소의 수가 필요한 요소를 크게 초과했기 때문에 OP가 어떤 클래스 에도 적용하고 싶지 않다는 것입니다. 대부분의 요소.
Tomas Aschan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.