CSS 클래스 를 객체 지향 클래스 로 생각하지 말고 html 요소의 스타일 을 지정하는 속성 클래스 를 지정하는 다른 선택기 중 하나의 도구로 생각하십시오 . 중괄호 사이의 모든 것을 속성 클래스 로 생각 하고 왼쪽의 선택기 는 속성 클래스 에서 속성 을 상속 하기 위해 선택한 요소를 알려줍니다 . 예:
.foo, .bar { font-weight : bold; font-size : 2em; /* attribute class A */}
.foo { color : green; /* attribute class B */}
요소에 속성이 주어지면, class="foo"
클래스 .foo
에서 속성을 상속하는 것이 아니라 속성 클래스 A 와 속성 클래스 B 에서 속성 을 생각하는 것이 유용합니다 . 즉, 상속 그래프는 속성 클래스 에서 파생되는 요소 와 가장자리가 이동하는 위치를 지정하고 선택 속성이 경쟁 속성이있을 때 우선 순위를 결정하는 방법 (방법 해결 순서와 유사 함)을 갖는 한 수준의 깊이 입니다.
프로그래밍에 대한 실질적인 의미는 이것입니다. 당신이 위의 스타일 시트를 말해봐, 새로운 클래스를 추가 할 수 .baz
는 동일해야한다, font-size
등을 .foo
. 순진한 해결책은 다음과 같습니다.
.foo, .bar { font-weight : bold; font-size : 2em; /* attribute class A */}
.foo { color : green; /* attribute class B */}
.baz { font-size : 2em; /* attribute class C, hidden dependency! */}
무언가를 두 번 입력해야 할 때마다 너무 화가납니다! 뿐만 아니라 나는 두 번을 작성해야합니까, 지금은 프로그래밍 방식을 나타내는 방법이 없습니다 .foo
와 .baz
동일해야 font-size
하고, 내가 만든 숨겨진 의존성을! 위의 패러다임은 속성 클래스 Afont-size
에서 속성을 추출해야한다고 제안합니다 .
.foo, .bar, .baz { font-size : 2em; /* attribute base class for A */}
.foo, .bar { font-weight : bold; /* attribute class A */}
.foo { color : green; /* attribute class B */}
여기서 주요 불만은 이제 속성 클래스 A 에서 모든 선택자를 다시 입력 하여 선택 해야하는 요소가 속성 기본 클래스 A의 속성을 상속하도록 지정해야한다는 것 입니다. 여전히 대안은 무언가가 변경 될 때마다 숨겨진 종속성이있는 모든 속성 클래스 를 편집 하거나 타사 도구를 사용해야 한다는 것을 기억해야합니다 . 첫 번째 옵션은 신을 웃게 만들고, 두 번째 옵션은 나를 죽이고 싶어합니다.