반응형
2020.03.27 - [Frontend/Sass (SCSS)] - [Sass 특징] @mixin 과 @include
예전에 포스팅한 @mixin과 @include에 대한 기본적인 내용과 더불어
@mixin과 @include 문법을 작성할 때,
빼놓을 수 없는 문법이 콘텐츠 블록(content block),
즉 @content 문법이다.
* @content 사용
@mixin을 통해 반복되는 css 내용들을 미리 등록해놓고 필요할때마다 사용할 때,
변동되는 값 들은 파라미터로 적용해서 필요에 따라 다른 값을 줄 수 있다.
/* SCSS */
@mixin common-box ($wsize:10px, $hsize:10px){
&:after{
display: block;
content: '';
border: 1px solid #333;
width: $wsize;
height: $hsize;
}
}
.box1{
@include common-box;
}
.box2{
@include common-box($wsize:20px, $hsize:20px);
}
/* css로 컴파일 */
.box1:after {
display:block;
content:'';
border:1px solid #333;
width:10px;
height:10px;
}
.box2:after {
display:block;
content:'';
border:1px solid #333;
width:20px;
height:20px;
}
위의 예시처럼 $wsize, $hsize의 파라미터 값으로
.box1, .box2의 :after에 서로 다른 width, height 값을 적용한다.
하지만 위와 같이 단순 border, width, height 값 뿐만 아니라
.box2:after에만 background 값을 넣고 싶다면..?
/* SCSS */
@mixin common-box ($wsize:10px, $hsize:10px){
&:after{
display: block;
content: '';
border: 1px solid #333;
width: $wsize;
height: $hsize;
}
}
.box2{
@include common-box($wsize:20px, $hsize:20px); // after에 대한 @include
&:after{
background: #f0f0f0; // after에 대한 css 추가
}
}
/* css로 컴파일 */
.box2:after {
display:block;
content:'';
border:1px solid #333;
width:20px;
height:20px;
background:#f0f0f0;
}
위와 같이 .box2:after에 background 값을 따로 입력하는 방법이 있을 수 있겠지만
그렇게 되면 .box2에 @include한 값이 :after 속성인데
또 한번 &:after를 사용하여 css를 추가하게 되어
나중에 소스가 많아졌을 경우 문법을 한눈에 알아보는데 어려움이 있을 수 있다.
이럴 때 편하게 특정 요소에만 원하는 css를 추가할 수 있는 방법이
@content 이다.
/* SCSS */
@mixin common-box ($wsize:10px, $hsize:10px){
display: block;
content: '';
border: 1px solid #333;
width: $wsize;
height: $hsize;
@content;
}
.box2{
@include common-box($wsize:20px, $hsize:20px){
background:#f0f0f0;
};
}
/* css로 컴파일 */
.box2:after {
display:block;
content:'';
border:1px solid #333;
width:20px;
height:20px;
background:#f0f0f0;
}
위와 같이 @mixin 안에 @content; 라는 문법을 작성해놓으면
@include 믹스인명(...){
*추가할 css 내용 작성
}
위 예시처럼 @include할 때 필요한 css를 바로바로 적용해 넣을 수 있다.
반응형
'Frontend > Sass (SCSS)' 카테고리의 다른 글
[Sass 특징] Interpolation (보간법, #{}) (2) | 2021.04.01 |
---|---|
[Sass 특징] Parent Selector (부모 선택자, &) (0) | 2021.03.30 |
[Sass 특징] @at-root (0) | 2020.05.06 |
[Sass 특징] Sass 데이터 타입(값) 소개 (0) | 2020.04.02 |
[Sass 특징] @mixin 과 @include (0) | 2020.03.27 |