중요를 무시하는 방법?


250

Wordpress 템플릿의 원래 CSS를 재정의하는 사용자 지정 스타일 시트를 만들었습니다. 그러나 내 캘린더 페이지에서 원래 CSS는 !important선언으로 설정된 각 테이블 셀의 높이를 갖습니다 .

td {height: 100px !important}

이것을 무시할 수있는 방법이 있습니까?


3
당신 !important도 사용해 보셨습니까 ? CSS 시트가 원본 템플릿 뒤에 정의되어 있으면 잘 작동합니다.
Petr Janeček 2016 년

1
당신이나 템플릿 중 어느 시트가 마지막에 올까요?
j08691

67
이것이 !important해로운 것으로 간주되는 이유 입니다.
Spudley

8
가장 강력한 방법은 다음과 같습니다. td [style] {height : 110px! important; }. 태그의 실제 스타일 속성에 스타일을 적용하기 때문에 HTML에 스타일을 인라인으로 삽입 한 것처럼 작동합니다.
DMTintner 2016 년

답변:


352

중요 수정 자 재정의

  1. 로 다른 CSS 규칙을 추가 !important하고 선택기에 더 높은 고유성을 부여합니다 (선택기에 태그, ID 또는 클래스 추가 추가).
  2. 기존 선택기보다 나중에 선택기에서 동일한 선택기를 사용하여 CSS 규칙을 추가합니다 (동점에서는 마지막으로 정의 된 승).

특이성이 더 높은 일부 예 (첫 번째는 가장 높거나 무시하고 세 번째는 가장 낮음)

table td    {height: 50px !important;}
.myTable td {height: 50px !important;}
#myTable td {height: 50px !important;}

또는 기존 선택기 뒤에 동일한 선택기를 추가하십시오.

td {height: 50px !important;}

부인 성명:

거의 사용하지 않는 것이 좋습니다 !important. 이것은 WordPress 템플릿을 만든 사람에게는 나쁜 엔지니어링입니다. 바이러스 방식으로 템플릿 사용자는 자신의 !important수정자를 추가하여 템플릿을 재정의하고 JavaScript를 통한 템플릿 재정의 옵션을 제한합니다.

그러나 때로는 재정의 하는 방법 을 아는 것이 유용 합니다.


7
나는 이것이 대답의 오래된 측면에 약간 있다는 것을 알고 있지만 이것이 CSS를 작성하는 데 매우 나쁜 방법이라는 의견을 추가 할 수 있습니까? 사람들이이 답변을 참조하는 것을 보았습니다 ... :)
ZenMaster

좋은 대답입니다. 동의합니다. 그것은 해킹 주위를 해킹하고 누군가 내 해킹 등을 해킹하도록합니다. 내 경우에는 데이터베이스에서 CSS를 가져 오는 템플릿을 처리해야합니다. DB 덤프를 grep하고 1MB json blob에서 가져온 것을 보여줍니다. 변경해야 할 위치를 찾고 CSS를 코드 파일에 추가 해야하는 방식 (이러한 해킹을 제외하고는 수행 방법)에별로 유용하지 않습니다.
Josh Ribakoff


css 속도가 느려지더라도 태그 식별자를 추가하는 것이 좋습니다. div # header.class {style :; } 그것을 얻기 위해 ... 매우 성가신
Sparatan117

에 대한 좋은 용도가 !important있습니다. Stylish, AdBlock 또는 uBlock 스크립트의 브라우저 또는 사이트 전체 스타일 재정의와 같습니다. 또는 매우 복잡한 기본 CSS에 쉽게 액세스 할 수없는 경우에는 매우 복잡하고 많은 파일을 통해 확산되며 시간이 지남에 따라 변경 될 수도 있습니다 (또한 사용할 수도 있음 !important). 다른 툴과 마찬가지로 포지티브 또는 네거티브 전위는 사용 방법에 따라 다릅니다. 사람들은 이와 같은 일이나 goto / eval / globals / etc와 같은 일을 할 때마다 원숭이를 멈추어야합니다. 언급됩니다. "물건을 놓칠"가능성이 너무 높기 때문에 "워드 프레스 피하기"또는 "CSS 피하기"라고 말할 수도 있습니다.
Beejor

30

!important당신이 충돌하여 스타일 시트에 선택기가있는 경우에만 사용해야합니다 특이성을 .

그러나 특성이 상충되는 경우에도 예외에 대해보다 구체적인 선택자를 작성하는 것이 좋습니다. 귀하의 경우 규칙이 class필요없는보다 구체적인 선택기를 만드는 데 사용할 수있는 HTML을 사용하는 것이 !important좋습니다.

td.a-semantic-class-name { height: 100px; }

나는 개인적 !important으로 내 스타일 시트에 사용하지 않습니다 . CSS의 C는 계단식입니다. 를 사용하면 문제 !important가 발생합니다.


17
사실이 아닙니다. 예 !important를 들어 스타일 시트 의 규칙은 style태그 의 일반 규칙보다 우선합니다 . 그러나 경우에 따라보다 구체적인 규칙이 규칙보다 우선합니다. 당신이 설정 한 경우 예를 들어, font-size: 24pt !important에가 body, 당신은 여전히 그것을 대체 할 수 있습니다 font-size: 12ptp. !important규칙을 재정의하지 않고 의 암시 적을 재정의하기 때문 font-size: inherit입니다 p.
meustrus

23

면책 조항 : 모든 비용에 중요하지 마십시오!

이것은 더럽고 더러운 해킹이지만 중요를 무시하려는 속성에 (무한하게 반복되거나 매우 오래 지속되는) 애니메이션을 사용하여! important없이! important를 무시할 수 있습니다.

@keyframes forceYellow {
  from {
    background-color: yellow;
  }
  to {
    background-color: yellow;
  }
}

div {
  width: 100px;
  height: 100px;
  margin: 0 auto;
  background: red !important;
  animation: 1s linear infinite forceYellow;
}
<div></div>


2
사용자의 CPU에 부담을 줄 수 있음
Berry Tsakala

2
이 트릭은 더 이상 작동하지 않는 것 같습니다. Firefox 78 및 Chrome 83에서 상자는 여전히 빨간색으로 표시됩니다.
앤디 팬

13

여기 CSS 중요성에 대한 간단한 교훈이 있습니다. 아래가 도움이되기를 바랍니다!

먼저 스타일의 모든 부분이 가중치로 이름 지정되므로 해당 스타일과 관련된 요소가 많을수록 더 중요합니다. 예를 들어

#P1 .Page {height:100px;}

보다 더 중요하다 :

.Page {height:100px;}

따라서 중요한 것을 사용할 때 이상적으로는 실제로 필요할 때만 사용해야합니다. 따라서 편차를 무시하려면 스타일을 더 구체적으로 지정하고 재정의를 사용하십시오. 아래를보십시오 :

td {width:100px !important;}
table tr td .override {width:150px !important;}

이게 도움이 되길 바란다!!!


두 사람은 !important다시 정의에 의해 대체 될 수 .old로 클래스 이름 {즐 즐 즐}.old로-클래스 name.overrided {즐 즐 즐}<style></style>구성 요소 위의 태그, 나를 위해 그것의 일
타렉 Kalaji

11

JavaScript를 사용하여 재정의

$('.mytable td').attr('style', 'display: none !important');

나를 위해 일했다.


인라인 스타일은 항상 부모의 중요한 요소보다 우선합니다. 깃발.
Joshua Ramirez

3
@JoshuaRamirez 아니요! 중요한 플래그를 인라인으로 넣지 않으면 실제로 중요한 플래그를 무시하지 않습니다.
Cam

1
JS를 사용하려는 경우 다시 필요할 가능성이없는 한 요소를 완전히 삭제할 수도 있습니다. JS를 통해 중요!를 스태킹하면 원래 질문으로 돌아갑니다.
SilverbackNet

@SilverbackNet 내 이해에 따르면 JS를 사용하여 재정의하는 것이 더 정확하고 일반적으로 CSS로드 순서대로 작동하고 모든 것이로드 된 후 JS jquery 블록로드로 작동합니다. 따라서 CSS 시퀀스와 독립적으로 CSS가 수행 한 변경 사항을 무시합니다.
Manish Shrivastava 2016

이와 같은 재정의는 스타일 속성에 작동하지 않습니다.
user2284570

6

이것도 도움이 될 수 있습니다

td[style] {height: 50px !important;}

인라인 스타일 보다 우선합니다.



-5

위에서 언급하지 않은 답변을 추가하고 싶습니다. 위의 내용을 모두 사용해 보았습니다. 내 구체적인 상황은 !important요소 에 속성 이 내장 된 semantic-ui를 사용하고 있다는 것입니다 (매우 성가시다). 나는 그것을 재정의하기 위해 모든 것을 시도했지만 결국에는 한 가지 일만했습니다 (jquery 사용). 다음과 같습니다.

$('.active').css('cssText', 'border-radius: 0px !important');

이것은 작동하지 않습니다. attr('style', ...대신 Manish의 답변을 참조하십시오
Christophe Roussy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.