Mixin은 코드를 재사용하기 위해 만들어진 기능
선택자들 사이에서 반복되고 있는 코드들은 mixin을 사용하여 코드 반복 최소화
중복되는 코드는 mixin으로 만들어 놓고 원하는 선택자 블럭에 mixin을 include
@mixin 이름(매개변수) //생성
@include 이름(인수) //사용
@Mixin
을 쓰고 이름을 정해준 후, 중괄호 { }
안에 중복되는 코드를 넣어주기@include
를 사용하여 스타일 하고자 하는 요소에 포함 _mixins.scss
파일을 만들어서 관리.card{
display : flex;
justify-content : center;
align-items : center;
background : gray;
}
.aside {
display : flex;
justify-content : center;
align-items : center;
background : white;
}
/*.card와 .aside 클래스 선택자의 적용한 스타일이 겹침*/
// scss를 사용
@mixin center-xy{
display: flex;
justify-content : center;
align-items : center;
}
.card{
@include center-xy; // 정의한 center-xy mixin을 사용하여 코드 한줄이면 끝!
}
.aside{
@include center-xy;
}
⚠️ 반복하는 모든 코드를 하나의 mixin에 몰아넣어서 사용하는 건 바른 mixin 사용법 xxx
@mixin image-style($ul, $size, $repeat, $positionX, $positionY) {
background-image: url($u);
background-size: $size;
background-repeat: $repeat;
background-position: $positionX $positionY;
}
//background관련 스타일 코드가 들어있다.
//mixin의 인수에 따라 조금씩 다른 스타일링이 가능하다.
.profile {
@include image-style("./assets/user.jpg", cover, no-repeat, center, center);
}
.box-one {
@include image-style(url("/images/poster1.svg"), cover, no-repeat, 40%, 50%);
}
// 위에 코드를 가져와서 기본값을 설정해주었다.
@mixin image-style($ul, $size, $repeat, $positionX : 50%, $positionY : 50%) {
background-image: url($ul);
background-size: $size;
background-repeat: $repeat;
background-position: $positionX $positionY;
}
.profile {
@include image-style("./assets/user.jpg", cover, no-repeat);
}
// profile과 .box-one은 서로 관계가 없지만, 코드가 중복되기때문에 mixin을 만들어서 각 요소에서 사용
// 정의하는 곳에서
@mixin sample{
display: flex;
justify-content : center;
align-items : center;
@content
}
// 사용하는 곳에서 (추가로 스타일링을 할 수 있음)
@include sample{
color:white;
};
@ inlcude
키워드에다가 믹스인 이름만 넣어주기a {
@include text-style;
}