Syntax-08-functions
#
Sass(SCSS) Syntax - 8. ํจ์(Functions)โ๏ธ ํด๋น ๊ธ์ ํจ์คํธ์บ ํผ์ค - ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๊ฐ์์์ HTML & CSS, SASS(SCSS) Part์ ๋ฐ์์ ๊ฐ์ฌ๋์ ๊ฐ์์๋ฃ(Sass(SCSS) ์์ ์ ๋ณต!)๋ฅผ ๋ณด๋ฉฐ ์ ๋ฆฌํ ๊ฒ์ ๋๋ค.
#
ํจ์(Functions)ํจ์์ @mixins
์ ๊ฑฐ์ ์ ์ฌํ์ง๋ง ๋ฐํ๋๋ ๋ด์ฉ์ด ๋ค๋ฅด๋ค
@mixin
์ ์ง์ ํ ์คํ์ผ(Style)์ ๋ฐํํ๋ ๋ฐ๋ฉด,
ํจ์๋ ๋ณดํต ์ฐ์ฐ๋(Computed) ๊ฐ์ @return
์ง์์ด๋ฅผ ํตํด ๋ฐํํ๋ค.
// Mixins@mixin ๋ฏน์ค์ธ์ด๋ฆ($๋งค๊ฐ๋ณ์) { ์คํ์ผ;}
// Functions@function ํจ์์ด๋ฆ($๋งค๊ฐ๋ณ์) { @return ๊ฐ}
@mixin
์ @include
์ง์์ด๋ฅผ ์ฌ์ฉํ๋ ๋ฐ๋ฉด,
ํจ์๋ ํจ์์ด๋ฆ์ผ๋ก ๋ฐ๋ก ์ฌ์ฉํ๋ค.
// Mixin@include ๋ฏน์ค์ธ์ด๋ฆ(์ธ์);
// Functionsํจ์์ด๋ฆ(์ธ์)
$max-width: 980px;
@function columns($number: 1, $columns: 12) { @return $max-width * ($number / $columns)}
.box_group { width: $max-width;
.box1 { width: columns(); } .box2 { width: columns(8); } .box3 { width: columns(3); }}
์ปดํ์ผํ๋ฉด
.box_group {/* ์ด ๋๋น */width: 980px;}.box_group .box1 {/* ์ด ๋๋น์ ์ฝ 8.3% */width: 81.66667px;}.box_group .box2 {/* ์ด ๋๋น์ ์ฝ 66.7% */width: 653.33333px;}.box_group .box3 {/* ์ด ๋๋น์ 25% */width: 245px;}
ํจ์๋ @include
๊ฐ์ ๋ณ๋์ ์ง์์ด ์์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ด์ฅ ํจ์(Built-in Functions)์ ์ด๋ฆ์ด ์ถฉ๋ํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
๋ฐ๋ผ์ ์ง์ ํ ํจ์์๋ ๋ณ๋์ ์ ๋์ด๋ฅผ ๋ถ์ฌ ์ถฉ๋์ ๋ฐฉ์งํ๋ ๊ฒ์ด ์ข๋ค.
์๋ฅผ ๋ค์ด, red()
๋ผ๋ ๋ด์ฅ ํจ์๊ฐ ์๋ค.
๊ฐ์ ์ด๋ฆ์ ์ฌ์ฉํ๋ฉด ์ด๋ฆ์ด ์ถฉ๋ํ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ์ ๋์ด๋ฅผ ๋ถ์ฌ extract-red()
๊ฐ์ ์ด๋ฆ์ ๋ง๋ ๋ค.
// ๋ด๊ฐ ์ ์ํ ํจ์@function extract-red($color) { // ๋ด์ฅ ํจ์ @return rgb(red($color), 0, 0);}
div { color: extract-red(#D55A93);}
ํน์ ํน๋ณํ ์ด๋ฆ์ ์ ๋์ด๋ก ์ฌ์ฉํ ์๋ ์๋ค.
my-custom-func-red()
#
Referenceํจ์คํธ์บ ํผ์ค - ํ๋ก ํธ์๋ ๊ฐ๋ฐ ๊ฐ์ - HTML & CSS, SASS(SCSS) Part by ParkYoungWoong