스타일 시트에서 사용되지 않거나 적용되지 않은 CSS 규칙을 찾으려면 어떻게해야합니까?


18

거대한 CSS 파일과 HTML 파일이 있습니다. HTML 파일을 표시하는 동안 사용되지 않는 규칙을 찾고 싶습니다. 이를위한 도구가 있습니까?

CSS 파일은 몇 년 동안 발전해 왔으며, 아무도 그것을 제거한 적이 없다는 것을 알고 있습니다. 사람들은 새로운 규칙을 반복해서 작성했습니다.

편집 : Dust-Me Selectors 또는 Chrome의 웹 페이지 성능 도구 를 사용하는 것이 좋습니다 . 그러나 둘 다 개별 규칙이 아닌 선택기 수준에서 작동합니다. 선택기 내부의 규칙이 항상 재정의되는 경우가 많이 있습니다. 이것이 대부분 내가 없애고 싶은 것입니다. 예를 들면 다음과 같습니다.

body { color: white; padding: 10em; }
h1 { color: black; }
p { color: black; }
...
ul { color: black; }

HTML의 모든 텍스트가 래퍼 요소 안에 있으므로 절대 흰색이 아닙니다. body의 패딩은 항상 작동하므로 전체 body선택기를 제거 할 수는 없습니다. 그리고 나는 그런 쓸모없는 규칙도 제거하고 싶습니다.

편집 : 그리고 쓸모없는 규칙의 또 다른 경우 : 기존 규칙을 변경하지 않고 복제 할 때 :

a       { margin-left: 5px; color: blue; }
a:hover { margin-left: 5px; color: red; }

나는 행복하게 두 번째를 제거 margin-left할 것입니다 ... 다시 그 도구가 그러한 것을 찾지 못하는 것 같습니다.

편집 : 나는 모든 답변을 주셔서 감사하지만 슬프게도 당신이 제안한 도구는 유용한 제안을하지 않았습니다. 나는 당신의 대답을 찬성했지만 위에서 지정한대로 더 세밀하게 일을하는 도구를 기다릴 것입니다.

감사합니다,


적절한 도구가 부족할 수 있습니다. 필요한 것을 이해했기 때문에 그러한 도구를 만드는 가장 좋은 사람이 될 수 있습니다. 기존 도구의 코드에서 아이디어와 기법을 검사 한 다음 선택기보다는 규칙 수준에서 작동하는 것을 만들 수 있습니다. 명성과 재산에 당신의 기회! ... 음, 아마도 명성 일 것입니다.)
iconoclast

@Brandon : 당신이 잘 될 수 있도록이 문제는 단지 ... :-)은 "주목할만한 질문"마크를 히트
liori

답변:


8

Dust Me Selecters Firefox 확장

Chrome 개발자 도구에서 웹 페이지 성능 도구를 사용하여 사용하지 않는 CSS 규칙을 찾을 수 있습니다.


좋아요, 바로 확인하겠습니다!
liori

이 도구는 쓸모없는 선택기 만 제거 할 수 있습니다. 나는 나의 질문을 명확히했다.
liori

2
@liori : 이것이 확실하게 가능하다고 생각하지 않습니다. 여백 예제에서 두 번째 여백 규칙은 불필요한 것처럼 보일 수 있지만 더 높은 특이성을 가지며 이후 규칙을 무시할 수 있습니다. 예를 들어 클래스의 .abc마진이 다른 경우 <a class="abc">호버에서 마진이 변경됩니다. 아마도 그것은 당신이 의도 한 것이 아닐 수도 있지만 확실히 그럴 수도 있으며, 그 중복 규칙을 맹목적으로 제거 할 수는 없습니다.
DisgruntledGoat

@DisgruntledGoat : 닫힌 세계의 경우를 생각하고 있습니다. 지정하지 않으면 존재하지 않습니다. 따라서에 대한 정의 a.abc가 없거나 HTML에 <a class="abc"/>가 없으면 존재하지 않습니다. 어쨌든, 나는 이미이 질문을하라는 작업을 마치고 끝났습니다. 많은 휴리스틱을 적용합니다. Chrome 개발자 도구를 사용해 보았지만별로 도움이되지 않았습니다.
liori

5

Unused-CSS.com을 살펴볼 수도 있습니다. 이 도구는 페이지를 탐색하고 사용되지 않은 선택기를 사용하지 않고 최적화 된 CSS 파일을 작성합니다.


4

나는 항상 CSS 사용을 좋아했습니다 . Firebug 용 플러그인이며 페이지를 스캔하고 적용되지 않은 CSS 규칙을 확인합시다. 심지어 여러 페이지에서 자동 스캔되어 작동합니다.


2

uncss를 확인하십시오. 노드 모듈입니다.

"UnCSS는 스타일 시트에서 사용되지 않은 CSS를 제거하는 도구입니다. 여러 파일에서 작동하며 Javascript로 주입 된 CSS를 지원합니다."

https://www.npmjs.com/package/uncss

주석 후 편집 :

나는 당신이 두 가지 다른 것을 요구한다고 생각합니다.

  1. 사용하지 않는 규칙을 자동으로 제거하면 uncss가 자동으로 수행 할 수 있습니다. 나는 또한 CSS byebye라는이 도구를 만들었지 만, 당신이 묻는 것처럼 자동적이지는 않습니다 : https://www.npmjs.com/package/css-byebye

  2. 규칙을 병합 / 간단 할 수있는 스타일 시트를 최적화하십시오.

이 경우 이런 종류의 작업을 수행하는 두 가지 도구를 권장합니다.

그들은 거의 동일한 최적화를 수행합니다. 때로는 하나가 다른 것보다 더 나은 결과를 얻거나 때로는 반대입니다. 스타일 시트에 따라 다릅니다. (당신도 차례로 실행할 수 있습니다 : P)

나는 grunt와 함께 빌드 프로세스의 일부로 사용합니다. 그래서 그것은 실제로 당신이 묻는 시각적 인 것은 아니지만 원하는 종류의 최적화를 수행합니다.

CSSO에 대한 의견은 다음과 같습니다 ( https://en.bem.info/tools/optimizers/csso/ )

구조 최적화 :

  • 동일한 셀렉터로 블록 병합
  • 동일한 속성을 가진 블록 병합
  • 재정의 된 속성 제거
  • 재정의 된 속기 속성 제거
  • 반복 선택기 제거
  • 블록의 부분 병합
  • 블록의 부분 분할
  • 빈 규칙 세트 및 규칙 제거
  • 여백 및 패딩 속성 최소화

메인 페이지에서 판단하면 선택기 수준에서 작동합니다. 질문에서 언급 한 두 가지 사례에서 실제로 규칙을 제거 할 수 있습니까?
liori

내 답변을 편집했습니다. CSSO 웹 인터페이스로 첫 번째 예제를 테스트했습니다. result : body {color : #fff; padding : 10em} h1, p, ul {color : # 000}
Kev

1

@ 존 : 훌륭한 도구, 링크 주셔서 감사합니다

@liori : 또한 요소 이름 / 속성을 표시하고 실시간으로 CSS를 편집 (css 파일에 쓰지 않음) 할 수 있는 Firefox 웹 개발자 플러그인 을 강력히 추천합니다. 따라서 faff없이 CSS 변경 사항을 편집하고 테스트 할 수 있습니다 3 초 동안 CSS를 저장하고 업로드해야합니다. + 더 많은 기능을로드합니다.

Firebug에 연결하는 매우 훌륭한 DOM 인스펙터도 있습니다.이 플러그인은 플러그인되어 Javascript를 정렬하는 데 좋습니다.


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