Notice
Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- HTML기초
- JS 함수
- JS 타이머기능
- JS prompt
- JS appendChild
- JS form action
- JS redirection
- JS classList
- JS 숫자
- JS setTimeout
- CSS속성정리
- JS 스코프
- JS null undefined
- JS 삼항연산
- CSS기초
- JS 연산
- JS setInterval
- git 협업셋팅
- JS 화살표함수
- JS localStorage
- JS preventDefault
- JS typeof연산자
- JS form
- JS append
- JS value속성
- JS clearInterval
- JS 데이터타입
- JS 기초
- JS 형변환
- js 변수
Archives
공부기록용
Sass(SCSS) At-Rules(@mixin, @include) 본문
@mixin
재사용할 그룹을 선언(정의 및 지정)
/* SCSS 선언 방식 */
@mixin 믹스인 이름 {
재사용할 스타일 속성들
}
/* Sass 선언 방식(주로 SCSS를 사용하니 참고만) */
= 믹스인 이름 {
재사용할 스타일 속성들
}
@include
정의된 @mixin을 사용(포함)
/* SCSS 사용 방식*/
선택자 {
@include 믹스인 지정 이름
}
/* Sass 사용 방식*/
선택자 {
+ 믹스인 지정 이름
}
@mixin과 @include 사용
<body>
<h1 class="heading">codingworks <span>publishing</span> class</h1>
<h2 class="new-title">new <span>letter</span> broadcast</h2>
</body>
/* .scss */
/* Google Web Font - "Montserrat", sans-serif*/
@import url("https://fonts.googleapis.com/css?family=Montserrat:300,400,500&display=swap");
body {
font-family: "Montserrat", sans-serif;
}
$primary-color: crimson;
@mixin headline {
text-align: center;
text-transform: uppercase;
position: relative;
padding-bottom: 15px;
span {
color: $primary-color;
}
&::before {
content: "";
position: absolute;
width: 100px;
height: 4px;
background-color: $primary-color;
bottom: 0;
left: 50%;
transform: translateX(-50%);
}
}
.heading,
.new-title {
@include headline;
}
@mixin과 @include 사용시 파일 관리
<!-- index.html -->
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="style.css" />
<title>14 @mixin, @include 응용</title>
</head>
<body>
<h1 class="heading">mini web</span> project</h1>
</body>
</html>
@mixin을 사용해 사용할 속성을 모두 한 곳에 작성
/* mixin.scss */
@mixin default {
font-family: "Montserrat", sans-serif;
font-size: 15px;
margin: 0;
padding: 0;
color: #333;
background-color: #dfbbbb;
line-height: 1.6em;
}
메인이 될 .scss파일에 mixin을 작성한 파일을 import해주고 사용하고자 하는 곳에 include해줌
/* style.scss */
/* Google Web Font - "Montserrat", sans-serif*/
@import url("https://fonts.googleapis.com/css?family=Montserrat:300,400,500&display=swap");
@import "mixin";
body {
@include default
}
결과적으로 메인이 되는 .css에 이렇게 출력되면서 다음과 같은 결과로 출력된다.
/* style.css */
/* Google Web Font - "Montserrat", sans-serif*/
@import url("https://fonts.googleapis.com/css?family=Montserrat:300,400,500&display=swap");
body {
font-family: "Montserrat", sans-serif;
font-size: 15px;
margin: 0;
padding: 0;
color: #333;
background-color: #dfbbbb;
line-height: 1.6em;
}
다음과 같은 폴더 구조를 가지게 된다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<title>Document</title>
</head>
<body>
<div class="btns">
<button class="complete">완료</button>
<button class="loading">전송중</button>
<button class="error">오류</button>
</div>
</body>
</html>
/* style.scss */
/* Google Web Fonts - 'Noto Sans KR', sans-serif */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans+KR:300,400,500,700,900&display=swap");
* {
font-family: "Noto Sans KR", serif;
}
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
// Button Mixin
@mixin notice-button {
font-size: 16px;
width: 150px;
padding: 7px;
background-color: #fff;
outline: none;
cursor: pointer;
border-radius: 5px;
}
.complete {
@include notice-button;
border: 3px solid skyblue;
color: skyblue;
}
.loading {
@include notice-button;
border: 3px solid yellowgreen;
color: yellowgreen;
}
.error {
@include notice-button;
border: 3px solid crimson;
color: crimson;
}
빌드된 .css파일
/* style.css */
/* Google Web Fonts - 'Noto Sans KR', sans-serif */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans+KR:300,400,500,700,900&display=swap");
* {
font-family: "Noto Sans KR", serif;
}
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.complete {
font-size: 16px;
width: 150px;
padding: 7px;
background-color: #fff;
outline: none;
cursor: pointer;
border-radius: 5px;
border: 3px solid skyblue;
color: skyblue;
}
.loading {
font-size: 16px;
width: 150px;
padding: 7px;
background-color: #fff;
outline: none;
cursor: pointer;
border-radius: 5px;
border: 3px solid yellowgreen;
color: yellowgreen;
}
.error {
font-size: 16px;
width: 150px;
padding: 7px;
background-color: #fff;
outline: none;
cursor: pointer;
border-radius: 5px;
border: 3px solid crimson;
color: crimson;
}
@mixin에 인수 사용하기
/* 사용방식 */
@mixin 믹스인 이름 ($매개변수, $매개변수) {
CSS 속성: 인수1 인수2 인수3
}
@include 믹스인 이름(값1, 값2, 값3)
<body>
<div class="buttons">
<button class="appoval">승인</button>
<button class="refuse">거절</button>
</div>
</body>
/* style.scss */
/* Google Web Fonts - 'Noto Sans KR', sans-serif */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans+KR:300,400,500,700,900&display=swap");
* {
font-family: "Noto Sans KR", sans-serif;
}
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
// Buttons mixin
@mixin border-style($width, $style, $color) {
border: $width $style $color;
}
@mixin button-padding($updown, $leftright) {
padding: $updown $leftright;
}
.buttons {
button {
padding: 7px;
background-color: #fff;
outline: none;
cursor: pointer;
font-size: 18px;
@include button-padding(10px, 100px);
&.appoval {
@include border-style(2px, solid, red);
}
&.refuse {
@include border-style(2px, dashed, royalblue);
}
}
}
/* 컴파일된 style.css */
/* Google Web Fonts - 'Noto Sans KR', sans-serif */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans+KR:300,400,500,700,900&display=swap");
* {
font-family: "Noto Sans KR", sans-serif;
}
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
.buttons button {
padding: 7px;
background-color: #fff;
outline: none;
cursor: pointer;
font-size: 18px;
padding: 10px 100px;
}
.buttons button.appoval {
border: 2px solid red;
}
.buttons button.refuse {
border: 2px dashed royalblue;
}
<body>
<a href="#none">mini web portfolio</a>
</body>
/* Google Web Fonts - 'Noto Sans KR', sans-serif */
@import url("https://fonts.googleapis.com/css?family=Noto+Sans+KR:300,400,500,700,900&display=swap");
* {
font-family: "Noto Sans KR", sans-serif;
}
body {
margin: 0;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
}
a {
text-decoration: none;
color: #222;
text-transform: uppercase;
}
@mixin font-color($red, $blue, $green) {
a {
&:hover {
color: $red;
}
&:visited {
color: $blue;
}
&:active {
color: $green;
}
}
}
@include font-color(red, blue, green);
🔗참고🔗
'💡깨달음💡 > SASS(SCSS)' 카테고리의 다른 글
@mixin 변수의 기본값 오류?! (0) | 2024.06.23 |
---|---|
Sass(SCSS) At-Rules(@extend) (3) | 2024.05.29 |
Sass(SCSS) At-Rules(@import) (0) | 2024.05.24 |
Sass(SCSS)의 주석과 중첩 (0) | 2024.05.22 |
Sass(SCSS) 시작하기 (0) | 2024.05.22 |
Comments