답변:
외모 좋아 @mixin
하고 @include
이 같은 간단한 경우에 필요하지 않습니다.
하나는 할 수 있습니다 :
.myclass {
font-weight: bold;
font-size: 90px;
}
.myotherclass {
@extend .myclass;
color: #000000;
}
@extend
-알아 두어야 할 까다로운 부작용이 있습니다. stackoverflow.com/questions/30744625/…
.myclass
다른 곳에서는 사용하지 떨어져에서 (나는 가정) .myotherclass
다음은 한 수 더 나은, .myclass
정의 %myclass
및 연장 .myotherclass
등 @extend %myclass;
. 다음과 같이 생성됩니다.myotherclass{ font-weight: bold; font-size: 90px; color: #000000; }
이 시도:
이제 모든 클래스에서 % base-class를 확장 할 수 있습니다 (예 : .my-class).
%base-class {
width: 80%;
margin-left: 10%;
margin-right: 10%;
}
.my-base-class {
@extend %base-class;
}
.my-class {
@extend %base-class;
margin-bottom: 40px;
}
@extend를 사용하는 것이 좋은 해결책이지만 컴파일 된 CSS는 클래스 정의를 깨뜨릴 것입니다. 동일한 자리 표시자를 확장하는 모든 클래스는 함께 그룹화되며 클래스에서 확장되지 않은 규칙은 별도의 정의에있게됩니다. 여러 클래스가 확장되면 컴파일 된 CSS 또는 개발 도구에서 선택기를 찾는 것이 거의 불가능합니다. 믹스 인은 믹스 인 코드를 복제하고 추가 스타일을 추가합니다.
이 sassmeister 에서 @extend와 @mixin의 차이점을 볼 수 있습니다
@extend .myclass;
@extend #{'.my-class'};
@extend #{'.my-class', '.my-other-class'};
다른 옵션은 속성 선택기를 사용할 수 있습니다.
[class^="your-class-name"]{
//your style here
}
"your-class-name"으로 시작하는 모든 클래스는이 스타일을 사용합니다.
따라서 귀하의 경우 다음과 같이 할 수 있습니다.
[class^="class"]{
display: inline-block;
//some other properties
&:hover{
color: darken(#FFFFFF, 10%);
}
}
.class-b{
//specifically for class b
width: 100px;
&:hover{
color: darken(#FFFFFF, 20%);
}
}
w3Schools의 속성 선택기에 대한 추가 정보