[css] CSS 폭발 관리

나는 작업중 인 웹 사이트를 CSS에 크게 의존했습니다. 현재 모든 CSS 스타일이 태그별로 적용되고 있으므로 앞으로 변경 사항을 돕기 위해 더 많은 외부 스타일로 이동하려고합니다.

그러나 이제 문제는 “CSS 폭발”을 받고 있다는 것을 알게되었습니다. CSS 파일 내에서 데이터를 가장 잘 구성하고 추상화하는 방법을 결정하기가 어려워지고 있습니다.

div웹 사이트 내에서 많은 테이블 태그를 사용하고 있으며 테이블 기반 웹 사이트에서 많이 이동했습니다. 그래서 다음과 같은 CSS 선택기가 많이 있습니다.

div.title {
  background-color: blue;
  color: white;
  text-align: center;
}

div.footer {
  /* Styles Here */
}

div.body {
  /* Styles Here */
}

/* And many more */

아직 나쁘지는 않지만 초보자로서 CSS 파일의 다양한 부분을 구성하는 가장 좋은 방법에 대한 권장 사항이 있는지 궁금합니다. 내 웹 사이트의 모든 요소에 대해 별도의 CSS 속성을 원치 않으며 항상 CSS 파일이 상당히 직관적이고 읽기 쉽기를 원합니다.

나의 궁극적 인 목표는 CSS 파일을 쉽게 사용하고 웹 개발 속도를 높이는 힘을 보여주는 것입니다. 이런 식으로 미래에이 사이트에서 일할 수있는 다른 개인들도 내가 한 방식대로 선택하지 않고 좋은 코딩 방법을 사용하게 될 것입니다.



답변

이것은 매우 좋은 질문입니다. 어디에서나 CSS 파일은 특히 팀에서 일할 때뿐만 아니라 잠시 후 제어 할 수없는 경향이 있습니다.

다음은 내가 준수하려고하는 규칙입니다 (항상 관리하지는 않습니다).

  • 일찍 리팩터링하고 자주 리팩터링하십시오. CSS 파일을 자주 정리하고 동일한 클래스의 여러 정의를 통합하십시오. 더 이상 사용되지 않는 정의를 즉시 제거하십시오 .

  • 버그를 수정하는 동안 CSS를 추가 할 때 변경 내용에 대한 설명을 남겨주십시오 ( “이는 상자가 IE <7″에 정렬되어 있는지 확인하는 것입니다).

  • 중복을 피하십시오 (예 : .classname및 에서 동일한 것을 정의) .classname:hover.

  • 주석 /** Head **/을 사용하여 명확한 구조를 만드십시오.

  • 일정한 스타일을 유지하는 데 도움이되는 프리티 파이어 도구를 사용하십시오. 나는 꽤 행복합니다 ($ 15 비용이지만 돈을 잘 소비합니다) Polystyle을 사용 합니다. 무료로 사용할 수도 있습니다 (예 : 오픈 소스 도구 인 CSS Tidy 기반의 Code Beautifier ).

  • 합리적인 수업을 만드십시오. 이에 대한 몇 가지 참고 사항은 아래를 참조하십시오.

  • 의미론을 사용하고 DIV 수프를 피하십시오- <ul>예를 들어 메뉴에 s를 사용하십시오 .

  • 가능한 한 낮은 수준 (예 : 기본 글꼴 모음, 색상 및 크기 body) 으로 모든 것을 정의하고 가능한 경우 사용 inherit하십시오.

  • CSS가 매우 복잡한 경우 CSS 사전 컴파일러가 도움이 될 수 있습니다. 곧 같은 이유로 xCSS 를 조사 할 계획 입니다. 주위에 다른 몇 가지가 있습니다.

  • 팀에서 작업하는 경우 CSS 파일에 대한 품질 및 표준의 필요성도 강조하십시오. 모든 사람들은 프로그래밍 언어로 코딩 표준에 큰 관심을 가지고 있지만 CSS에도 이것이 필요하다는 인식이 거의 없습니다.

  • 팀에서 작업하는 경우 않는 버전 제어를 사용하는 것이 좋습니다. 추적하기가 훨씬 쉬워지고 수정하기가 훨씬 쉬운 충돌이 수정됩니다. HTML과 CSS에 “맞아”있어도 가치가 있습니다.

  • 로 작업하지 마십시오 !important. IE = <7 때문에 처리 할 수 ​​없습니다. 복잡한 구조에서 !important소스를 찾을 수없는 동작을 변경하려는 유혹이 종종 있지만 장기적인 유지 관리에는 독이 됩니다.

현명한 수업 만들기

이것이 현명한 수업을 만드는 방법입니다.

전역 설정을 먼저 적용합니다.

body { font-family: .... font-size ... color ... }
a { text-decoration: none; }

그런 다음 페이지 레이아웃의 주요 섹션 (예 : 상단 영역, 메뉴, 내용 및 바닥 글)을 식별합니다. 좋은 마크 업을 작성하면이 영역은 HTML 구조와 동일합니다.

그런 다음 가능한 한 많은 조상을 지정하고 가능한 한 밀접하게 관련 클래스를 그룹화하여 CSS 클래스를 작성하기 시작합니다.

div.content ul.table_of_contents
div.content ul.table_of_contents li
div.content ul.table_of_contents li h1
div.content ul.table_of_contents li h2
div.content ul.table_of_contents li span.pagenumber

전체 CSS 구조를 루트에서 멀어 질수록 점점 더 구체적인 정의가 있는 트리 로 생각하십시오 . 수업의 수를 가능한 적게 유지하고 가능한 한 드물게 반복하고 싶습니다.

예를 들어, 세 가지 수준의 탐색 메뉴가 있다고 가정 해 봅시다. 이 세 가지 메뉴는 다르게 보이지만 특정 특성을 공유합니다. 예를 들어, 그것들은 모두 <ul>이고, 모두 같은 폰트 크기를 가지고 있으며, 아이템은 모두 서로 옆에 있습니다 (의 기본 렌더링과 반대 ul). 또한 어떤 메뉴에도 글 머리 기호 ( list-style-type) 가 없습니다 .

먼저 다음과 같은 클래스에서 공통 특성을 정의하십시오 menu.

div.navi ul.menu { display: ...; list-style-type: none; list-style-image: none; }
div.navi ul.menu li { float: left }

그런 다음 세 가지 메뉴 각각의 특정 특성을 정의하십시오. 레벨 1의 높이는 40 픽셀입니다. 레벨 2 및 3, 20 픽셀.

참고 : 이 클래스에 여러 클래스를 사용할 수도 있지만 Internet Explorer 6 에는 여러 클래스에 문제가 있으므로이 예제에서는 ids 를 사용 합니다.

div.navi ul.menu#level1 { height: 40px; }
div.navi ul.menu#level2 { height: 20px; }
div.navi ul.menu#level3 { height: 16px; }

메뉴의 마크 업은 다음과 같습니다.

<ul id="level1" class="menu"><li> ...... </li></ul>
<ul id="level2" class="menu"><li> ...... </li></ul>
<ul id="level3" class="menu"><li> ...... </li></ul>

이 세 가지 메뉴와 같이 페이지에서 의미 적으로 유사한 요소가있는 경우 공통점을 먼저 해결하여 클래스에 배치하십시오. 그런 다음 특정 속성을 계산하여 클래스에 적용하거나 Internet Explorer 6을 지원해야하는 경우 ID를 적용하십시오.

기타 HTML 팁

이러한 의미를 HTML 출력에 추가하면 디자이너는 나중에 순수 CSS를 사용하여 웹 사이트 및 / 또는 앱의 모양을 사용자 지정할 수 있습니다. 이는 큰 이점이자 시간 절약입니다.

  • 가능하면 모든 페이지 본문에 고유 한 클래스를 지정하십시오. <body class='contactpage'>이렇게하면 스타일 시트에 페이지 별 조정을 매우 쉽게 추가 할 수 있습니다.

    body.contactpage div.container ul.mainmenu li { color: green }
  • 메뉴를 자동으로 만들 때는 나중에 CSS 스타일을 최대한 많이 할 수 있도록 CSS 컨텍스트를 최대한 추가하십시오. 예를 들면 다음과 같습니다.

    <ul class="mainmenu">
     <li class="item_first item_active item_1"> First item </li>
     <li class="item_2"> Second item </li>
     <li class="item_3"> Third item </li>
     <li class="item_last item_4"> Fourth item </li>
    </ul>

    이런 식으로, 모든 메뉴 항목은 그 의미 론적 맥락에 따라 스타일링을 위해 액세스 할 수 있습니다 : 목록에서 첫 번째 항목인지 마지막 항목인지; 현재 활성화 된 항목인지 여부 그리고 숫자로.

참고 예제에 설명 된대로 여러 클래스의 할당이 위의 것을 IE6에서 제대로 작동하지 않습니다 . IE6에서 여러 클래스를 처리 할 수 있는 해결 방법 이 있습니다. 해결 방법이 옵션이 아닌 경우 가장 중요한 클래스 (항목 번호, 활성 또는 첫 번째 / 마지막)를 설정하거나 ID 사용에 의존해야합니다.


답변

다음은 4 가지 예입니다.

내 답변에는 Natalie Downe의 PDF CSS Systems 를 다운로드하고 읽는 조언이 포함되어 있습니다. (PDF에는 슬라이드에없는 수많은 메모가 포함되어 있으므로 PDF를 읽으십시오!). 조직에 대한 그녀의 제안을 적어 둡니다.

4 년 후 EDIT (2014/02/05) 는 다음과 같습니다.

  • CSS 전처리 기를 사용하고 파일을 부분적으로 관리하십시오 (개인적으로 Sass with Compass를 선호하지만 Less도 꽤 좋고 다른 것들도 있습니다)
  • OOCSS , SMACSSBEM 또는 getbem 과 같은 개념을 읽으십시오 .
  • BootstrapZurb Foundation 과 같은 인기있는 CSS 프레임 워크가 어떻게 구성되어 있는지 살펴보십시오 . 덜 인기있는 프레임 워크를 할인하지 마십시오- 이누이트 는 흥미로운 것이지만 다른 많은 것들이 있습니다.
  • 지속적인 통합 서버 및 / 또는 Grunt 또는 Gulp와 같은 작업 실행기에서 빌드 단계로 파일을 결합 / 최소화하십시오.

답변

CSS에 제목을 쓰지 마십시오

섹션을 파일로 나누기 만하면됩니다. 모든 CSS 주석은 주석이어야합니다.

reset.css
base.css
somepage.css
someotherpage.css
some_abstract_component.css

스크립트를 사용하여 하나를 결합하십시오. 필요하다면. 멋진 디렉토리 구조를 가질 수도 있고 스크립트가 재귀 적으로 .css파일을 스캔하도록 할 수도 있습니다.

표제를 작성해야하는 경우 파일 시작 부분에 TOC를 두십시오.

목차의 제목은 나중에 쓰는 제목과 완전히 같아야합니다. 제목을 찾는 것은 고통입니다. 문제를 더하기 위해 첫 번째 헤더 다음에 다른 헤더가 있다는 것을 어떻게 알고 있습니까? 추신. TOC를 작성할 때 각 줄의 시작 부분에 문서와 같은 * (별표)를 추가하지 마십시오. 텍스트를 선택하는 것이 더 성가 시게합니다.

/* Table of Contents
   - - - - - - - - -
   Header stuff
   Body Stuff
   Some other junk
   - - - - - - - - -
 */
...
/* Header Stuff
 */
...
/* Body Stuff
 */

블록 외부가 아닌 규칙 내에서 또는 규칙 내에서 의견 쓰기

먼저, 스크립트를 편집 할 때 룰 블록 외부에있는 내용에주의를 기울여야합니다 (특히 텍스트가 큰 경우;)). 둘째, 외부에 “댓글”이 필요한 경우는 거의 없습니다. 외부에있는 경우 제목 시간의 99 %이므로 제목을 그대로 유지하십시오.

페이지를 컴포넌트로 분할

구성 요소에는 대부분 position:relative, no padding및 no 가 있어야합니다 margin. 이 간소화 %가 많은뿐만 아니라 훨씬 더 간단 허용 규칙 absolute:position절대 위치 지정된 컨테이너가 있다면 계산할 때 절대 위치 지정된 요소가 컨테이너를 사용하기 때문에, 요소 보내고 ‘ top, right, bottom, left속성을.

HTML5 문서의 대부분의 DIV는 일반적으로 구성 요소입니다.

구성 요소는 페이지에서 독립적 인 단위로 간주 될 수도 있습니다. 평신도의 용어로 블랙 박스 와 같은 것을 다루는 것이 합리적이라면 구성 요소와 같은 것을 취급합니다 .

품질 보증 페이지 예를 다시 살펴 보겠습니다.

#navigation
#question
#answers
#answers .answer
etc.

페이지를 구성 요소로 분할하면 작업을 관리 가능한 단위로 분할 할 수 있습니다.

같은 줄에 누적 효과가있는 규칙을 적용하십시오.

예를 들어 border, marginpadding(하지만 outline) 당신은 스타일링하는 요소의 치수와 크기에 대한 모든 추가.

position: absolute; top: 10px; right: 10px;

그들이 한 줄로 읽을 수 없다면 적어도 가까이 두십시오.

padding: 10px; margin: 20px;
border: 1px solid black;

가능하면 속기를 사용하십시오.

/* the following... */
padding-left: 10px;
padding-right: 10px;
/* can simply be written as */
padding: 0 10px;

선택기를 반복하지 마십시오

동일한 선택기의 인스턴스가 더 많은 경우 동일한 규칙의 여러 인스턴스가 생길 수 있습니다. 예를 들면 다음과 같습니다.

#some .selector {
    margin: 0;
    font-size: 11px;
}
...
#some .selector {
    border: 1px solid #000;
    margin: 0;
}

ID / 클래스를 사용할 수있는 경우 TAG를 선택기로 사용하지 마십시오.

먼저 DIV 및 SPAN 태그는 예외입니다. 절대로 사용해서는 안됩니다! 😉 클래스 / ID를 첨부 할 때만 사용하십시오.

이…

div#answers div.answer table.statistics {
    border-collapse: collapsed;
    color: pink;
    border: 1px solid #000;
}
div#answers div.answer table.statistics thead {
    outline: 3px solid #000;
}

다음과 같이 작성해야합니다.

#answers .answer .statistics {
    border-collapse: collapsed;
    color: pink;
    border: 1px solid #000;
}
#answers .answer .statistics thead {
    outline: 3px solid #000;
}

여분의 매달려있는 DIV가 있기 때문에 선택기에 아무것도 추가하지 않습니다. 또한 불필요한 태그 규칙을 강제합니다. 당신은, 예를 들어, 변경한다면 .answerA로부터div A와 article스타일 휴식 것입니다.

또는 더 명확성을 선호하는 경우 :

#answers .answer .statistics {
    color: pink;
    border: 1px solid #000;
}
#answers .answer table.statistics {
    border-collapse: collapsed;
}
#answers .answer .statistics thead {
    outline: 3px solid #000;
}

border-collapse속성이 되는 이유는에 적용될 때만 의미가있는 특수 속성입니다 table. 만약.statistics 않은table 적용되지 않아야합니다.

일반적인 규칙은 악하다!

  • 가능한 경우 일반 / 마법 규칙을 작성하지 마십시오
  • CSS-reset / rereset에 대한 것이 아닌 한 모든 일반적인 마술은 적어도 하나의 루트 구성 요소에 적용되어야합니다.

그들은 시간을 절약하지 않고 머리를 터뜨립니다. 유지 보수를 악몽으로 만듭니다. 규칙을 작성할 때 규칙이 적용되는 위치를 알 수 있지만 나중에 규칙이 엉망이된다는 보장은 없습니다.

이 일반적인 규칙에 추가하는 것은 스타일을 지정하는 문서에 대한 아이디어가 있더라도 혼란스럽고 읽기 어렵습니다. 이것은 일반적인 규칙을 작성해서는 안된다고 말하는 것이 아니라, 규칙을 일반화하려는 의도가 아니라면 규칙을 사용하지 말고 선택기에 가능한 한 많은 범위 정보를 추가하는 것입니다.

이런 것들 …

.badges {
    width: 100%;
    white-space: nowrap;
}

address {
    padding: 5px 10px;
    border: 1px solid #ccc;
}

… 프로그래밍 언어에서 전역 변수를 사용하는 것과 같은 문제가 있습니다. 당신은 그들에게 범위를 제공해야합니다!

#question .userinfo .badges {
    width: 100%;
    white-space: nowrap;
}

#answers .answer .userinfo address {
    padding: 5px 10px;
    border: 1px solid #ccc;
}

기본적으로 다음과 같이 읽습니다.

components                   target
---------------------------- --------
#answers .answer   .userinfo address
-------- --------- --------- --------
domain   component component selector 

내가 알고있는 구성 요소가 페이지의 단일 항목 일 때마다 ID를 사용하는 것이 좋습니다. 당신의 요구는 다를 수 있습니다.

참고 : 이상적으로는 충분히 작성해야합니다. 그러나 선택기에서 더 많은 구성 요소를 언급하는 것은 더 적은 구성 요소를 언급하는 것과 비교하여 더 관대 한 실수입니다.

pagination컴포넌트 가 있다고 가정 해 봅시다 . 사이트의 여러 곳에서 사용합니다. 이것은 일반적인 규칙을 작성할 때 좋은 예입니다. display:block개별 페이지 번호 링크를 말하고 어두운 회색 배경을 제공합니다. 그것들이 보이려면 다음과 같은 규칙이 있어야합니다.

.pagination .pagelist a {
    color: #fff;
}

이제 답변 목록에 페이지 매김을 사용한다고 말하면 다음과 같은 상황이 발생할 수 있습니다

#answers .header a {
    color: #000;
}
...
.pagination .pagelist a {
    color: #fff;
}

이렇게하면 원하지 않는 흰색 링크가 검은 색이됩니다.

그것을 고치는 잘못된 방법은 다음과 같습니다.

.pagination .pagelist a {
    color: #fff !important;
}

그것을 고치는 올바른 방법은 다음과 같습니다.

#answers .header .pagination .pagelist a {
    color: #fff;
}

복잡한 “논리”설명이 작동하지 않습니다 🙂

“이 값은 blah-blah의 높이와 결합 된 blah-blah에 따라 다릅니다”와 같은 것을 쓰면 실수를 저지르는 것이 불가피하며 모두 카드 집처럼 쓰러 질 것입니다.

귀하의 의견을 단순하게 유지하십시오. “논리 연산”이 필요한 경우 SASS 또는 LESS 와 같은 CSS 템플릿 언어 중 하나를 고려하십시오 .

컬러 팔레트는 어떻게 작성합니까?

이것을 마지막으로 두십시오. 전체 색상 표에 파일을 준비하십시오. 이 파일이 없으면 스타일에 규칙에 사용 가능한 색상 표가 여전히 있어야합니다. 색상 표를 덮어 써야합니다. 매우 높은 수준의 상위 컴포넌트 (예 :)를 사용하여 선택기를 연결 한 #page다음 스타일을 자체 규칙 블록으로 작성하십시오. 그냥 색이나 그 이상일 수 있습니다.

예.

#page #header .description,
#page #categories .description,
#page #answers .answer .body
{
    color: #222; background: #fff;
    border-radius: 10px;
    padding: 1em;
}

아이디어는 간단합니다, 당신의 컬러 팔레트는 기본 스타일의 스타일 시트 독립적이며, 단계적으로 으로.

이름이 적고 메모리가 적으므로 코드를 쉽게 읽을 수 있습니다.

더 적은 이름을 사용하는 것이 좋습니다. 텍스트, 본문, 머리글과 같은 매우 간단한 단어를 사용하는 것이 이상적입니다.

또한 간단한 단어의 조합을 이해하기가 더 쉽다는 것을 알았습니다. 그런 다음 긴 “적절한”단어가 포함 된 포스트 바디, 포스트 헤드, 사용자 정보 등이 있습니다.

몇 주 후에 자신과 같은 스타일 스프를 읽기 위해 어떤 낯선 사람이 와서도 모든 셀렉터가 사용되는 곳이 아니라 단어가 사용되는 곳만 이해하면됩니다. 예를 들어.this 요소가 “선택한 항목”또는 “현재 항목”등일 때마다 .

자신을 정리

CSS를 작성하는 것은 먹는 것과 같습니다. 때로는 혼란스러워합니다. 그 엉망을 정리하십시오. 그렇지 않으면 가비지 코드가 쌓일 것입니다. 사용하지 않는 클래스 / ID를 제거하십시오. 사용하지 않는 CSS 규칙을 제거하십시오. 모든 것이 단단하고 규칙이 충돌하거나 중복되지 않는지 확인하십시오.

내가 제안한 것처럼 일부 컨테이너를 스타일의 블랙 박스 (구성 요소)로 처리하고 선택기에서 해당 구성 요소를 사용하고 모든 것을 하나의 전용 파일에 보관하거나 파일을 TOC와 헤더로 올바르게 분할하면 일이 훨씬 쉽다 …

firefox 확장 프로그램 Dust-Me Selectors (팁 : sitemap.xml을 가리킴)와 같은 도구를 사용하여 CSS 핵무기 및 카르 니에 숨겨진 일부 정크를 찾을 수 있습니다.

unsorted.css파일 보관

품질 보증 사이트를 스타일링하고 있고 ‘응답 페이지’에 대한 스타일 시트가 이미 있다고 가정 해 보겠습니다 answers.css. 새로운 CSS를 많이 추가해야하는 경우 unsorted.css스타일 시트에 추가 한 다음answers.css .

이에 대한 몇 가지 이유 :

  • 완료 한 후 리팩토링하는 것이 더 빠르며, 규칙을 검색하고 (존재하지 않을 수 있음) 코드를 삽입하는 것입니다
  • 제거 할 내용을 작성하고 코드를 삽입하면 해당 코드를 제거하기가 더 어려워집니다.
  • 원본 파일에 쉽게 추가하면 규칙 / 선택기 중복이 발생합니다

답변

1. SASS
2. Compass를 살펴보십시오.


답변

CSS부풀림 을 방지하는 가장 좋은 방법 은 객체 지향 CSS 원칙을 사용하는 것입니다.

꽤 좋은 OOCSS 프레임 워크 도 있습니다 .

이데올로기 중 일부는 최고의 답변에서 여기에 언급 된 많은 것에 반대하지만 CSS객체 지향 방식 으로 설계하는 방법을 알고 나면 실제로 코드를 간결하고 의미있게 유지하는 데 효과적이라는 것을 알 수 있습니다.

여기서 중요한 것은 사이트에서 ‘객체’또는 빌딩 블록 패턴을 식별하고이를 설계하는 것입니다.

페이스 북은 OOCSS 제작자를 고용했습니다. Nicole Sullivan 을 프론트 엔드 코드 (HTML / CSS)를 많이 절약했습니다. 당신이 변환 말할 것도 같은 예는 실제로 CSS에서, 그러나 그것의 소리, 당신을 위해 아주 가능하다 너무 당신의 HTML에서뿐만 아니라 절감 효과를 얻을 수있는 table많은으로 기반의 레이아웃을 div

또 다른 위대한 접근 방식은 OOCSS와 일부 측면에서 비슷합니다. CSS는 처음부터 확장 가능하고 모듈화되도록 CSS를 계획하고 작성하는 것입니다. Jonathan SnookSMACSS-CSS를위한 확장 가능하고 모듈화 된 아키텍처에 대해 훌륭한 글을 쓰고 책을 읽었습니다.

다음은 몇 가지 링크로 연결하겠습니다.
대규모 CSS 실수 5 개-(비디오)
대규모 CSS 실수 5 개-(슬라이드)
CSS Bloat-(슬라이드)


답변

캐스케이드, 무게 및 작동 방식도 이해해야합니다.

클래스 식별자 (div.title) 만 사용하고 있습니다. ID를 사용할 수 있고 ID가 클래스보다 더 중요하다는 것을 알고 있습니까?

예를 들어

#page1 div.title, #page1 ul, #page1 span {
  // rules
}

모든 요소가 글꼴 크기, 말 또는 색상 또는 규칙에 관계없이 공유되도록합니다. # page1의 후손 인 모든 DIV에 특정 규칙을 적용 할 수도 있습니다.

가중치와 관련하여 CSS 축은 가장 일반적인 / 가장 가벼운 것에서 가장 구체적인 것 / 가벼운 것으로 이동합니다. 즉, CSS 선택기에서 요소 지정자가 클래스 지정자에 의해 제어되고 ID 지정자에 의해 제어됩니다. 숫자가 계산되므로 두 요소 지정자 (ul li)가있는 선택기는 단일 지정자 (li) 만있는 것보다 가중치가 더 큽니다.

숫자처럼 생각하십시오. ones 열의 9는 여전히 tens 열의 1보다 작습니다. ID 지정자, 클래스 지정자 및 두 개의 요소 지정자가있는 선택기는 ID가없는 선택자, 500 개의 클래스 지정자 및 1,000 개의 요소 지정자보다 가중치가 더 높습니다. 물론 이것은 터무니없는 예이지만 아이디어를 얻습니다. 요점은이 개념을 적용하면 많은 CSS를 정리하는 데 도움이됩니다.

BTW에서 class = “title”이있는 다른 요소와 충돌하지 않는 한 요소 지정자를 클래스 (div.title)에 추가 할 필요는 없습니다. 나중에 그 무게를 사용해야 할 수도 있으므로 불필요한 무게를 추가하지 마십시오.


답변

적은 CSS 동적 프레임 워크를 제안해도 될까요

앞에서 언급 한 SASS와 유사합니다.

부모 클래스 당 CSS를 유지하는 데 도움이됩니다.

예 :

 #parent{     
  width: 100%;

    #child1
    {
     background: #E1E8F2;    
     padding: 5px;
    }

    #child2
   {
     background: #F1F8E2;
     padding: 15px
   }
 }

이것이하는 일 : width : 100 %를 # child1과 # child2에 적용합니다.

또한 # child1 특정 CSS는 #parent에 속합니다.

이것은 렌더링

#parent #child1
{
 width: 100%;
 background: #E1E8F2;
 padding: 5px;
}

#parent #child2
{
 width: 100%;
 background: #F1F8E2;
 padding: 15px;
}