나는 최근에 SASS의 땅에서 "물건"을 만났습니다. 그리고 어쩌면 너희들은 속임수를 아는 사람이나 똑같은 것을 알고 있을지 모른다.SASS는 루트에서만 확장
이 클래스는 .icon
입니다. 여기에는 내 아이콘에 대한 기본적인 스타일이 포함되어 있습니다 (iconfont에 사용). 이 아이콘들은 내가 원할 때마다 마크 업에 넣을 수 있습니다. 예 : button
그러나 버튼 안에는이 아이콘이 약간의 추가 스타일링이 필요합니다. 그래서 다음을 수행하십시오
.icon {
// Basic styling
}
button {
.icon {
// Additional styling
}
}
그것은이 CSS로 컴파일 : 지금까지 확인
.icon {
// Basic styling
}
button .icon {
// Additional styling
}
다. 하지만 지금은 너무 좋아 내 모든 .foo
요소의 내부에 후 요소에 .icon
을 확장하려는 :
.foo:after {
@extend .icon;
}
을 지금은이 CSS로 컴파일 :
.icon, .foo:after { // This is good, exactly what I want
// Basic styling
}
button .icon, button .foo:after { // But I don't need the second half of this line
// Basic Additional
}
이제 foo는 요소 ISN ' "루트"아이콘 - 클래스뿐만 아니라 아이콘 - 클래스 언더 버튼과 모든 추가 스타일링을 확장합니다. 그러나 나는 그것을 필요로하지 않는다. 그 요소가 그 추가 스타일을 가지기를 바랄뿐입니다. 아직 문제는 발생하지 않습니다. 그러나 어쩌면 그럴 수도 있습니다. 따라서 .icon
을 루트에서 확장하고 에 중첩 된 .icon
을 생략하고 나중에 다른 요소에 중첩 된 아이콘 클래스를 나중에 추가하는 것이 가능한지 궁금했습니다.
나의 첫 번째 생각은 %icon
과 같은 abstact 클래스를 사용하고 그로부터 확장했지만 위의 아이콘 클래스와 파일은 grunt-webfont에 의해 생성됩니다. 따라서 나는 아이콘 클래스 스타일을 항상 겹쳐서 바꿀 수는 없습니다.
어떻게해야합니까? 내가 알지 못하는 SASS의 확장 기능에 더 많은 것이 있습니까? 아니면 완전히 다른 방법이 있습니까?
도움 주셔서 감사합니다.
해결책 : 모든 멋진 도움과 내가이 문제를 방지하는 방법을 발견 팁을 사용
는 : 그런트 - Webfont는 아이콘을 표시합니다 i-tag
를 사용하여 제안합니다. Font-Awesome도 똑같습니다. 그래서, 나는 그것을 정확하게하고 있습니다. 그리고 저는 대개 다른 용도로 사용하지 않습니다. 이렇게하면 .icon
클래스가 아닌 button
아래의 i-tag
을 추가로 사용할 수 있습니다. 이렇게하면 .icon
클래스는 생성 된 파일에서 한 번만 사용 된 다음 다시는 사용되지 않습니다.
.icon {
// Basic styling
}
button {
i { // <= Previously '.icon'
// Additional styling
}
}
질문 나에게 분명하지 않지만 부모 선택기를 사용하고 싶습니다. "&"(앰퍼샌드) – Daredzik
여기에는 선택 사항이 없습니다. 이것이'@ extend'가 작동하는 방식입니다. "이 클래스를 확장 할 수는 있지만 더 복잡한 선택기의 일부가 아닌 경우"라는 마법은 없습니다. – cimmanon
중첩 된 선택기 대신 다른 클래스를 사용할 수 있습니까? 'button .icon' 대신'.button-icon'을 사용하여 거기에 다른 스타일을 추가하십시오. 그런 다음 버튼 안에 아이콘 HTML에'.icon'과'.button-icon' 클래스를 추가하십시오. –