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.