พื้นฐานของ SASS
บทความนี้อธิบายพื้นฐานของ SASS
เราจะอธิบายฟีเจอร์พื้นฐานของ SASS อย่างละเอียดทีละขั้นตอน พร้อมแสดงตัวอย่างโค้ดการใช้งานจริง
YouTube Video
พื้นฐานของ SASS
SASS (Syntactically Awesome Stylesheets) เป็นภาษาสำหรับไฟล์สไตล์ชีทที่ขยายความสามารถของ CSS ด้วยการใช้ SASS คุณสามารถใช้ฟีเจอร์ขั้นสูงที่ CSS ไม่มีได้ เช่น ตัวแปร การซ้อนกันของโค้ด มิกซ์อิน และการสืบทอด สิ่งนี้ทำให้การจัดการและนำสไตล์ชีตกลับมาใช้ใหม่ง่ายขึ้นมาก
SASS คืออะไร?
SASS เป็นภาษาที่ช่วยให้งานเขียน CSS ง่ายขึ้น และทำให้การสไตลิ่งยืดหยุ่นและทรงพลังมากขึ้น SASS ยังมีไวยากรณ์ SCSS (Sassy CSS) ซึ่งมีความคล้ายคลึงกับไวยากรณ์ CSS มาตรฐาน ตัวอย่างดังนี้:
ตัวอย่าง SCSS
1$base-font: Arial, sans-serif;
2$bg-color: #f4f4f4;
3
4body {
5 font-family: $base-font;
6 background-color: $bg-color;
7}
ตัวอย่าง CSS
1body {
2 font-family: Arial, sans-serif;
3 background-color: #f4f4f4;
4}
การติดตั้ง SASS
วิธีการติดตั้ง
เพื่อใช้ SASS ให้ติดตั้ง Node.js ก่อน จากนั้นติดตั้ง SASS ด้วยคำสั่งต่อไปนี้:
1npm install -g sass
วิธีการคอมไพล์
หากต้องการคอมไพล์ไฟล์ SASS (.scss
หรือ .sass
) ให้เป็น CSS ให้ใช้คำสั่งต่อไปนี้:
1sass input.scss output.css
คุณยังสามารถใช้ตัวเลือก watch
เพื่อตรวจสอบการเปลี่ยนแปลงของไฟล์และคอมไพล์แบบเรียลไทม์ได้
ตัวแปร
SASS ให้คุณใช้ตัวแปรเพื่อเรียกใช้ค่าเดิม เช่น สี หรือขนาดตัวอักษร ได้อย่างสะดวก
โค้ดตัวอย่าง
1$primary-color: #3498db;
2$font-stack: 'Roboto', sans-serif;
3
4body {
5 color: $primary-color;
6 font-family: $font-stack;
7}
- โค้ดนี้ใช้ตัวแปร SASS เพื่อกำหนดสีและฟอนต์ และนำมาใช้ซ้ำในตัวเลือก
body
เพื่อเพิ่มความคงที่และความง่ายในการดูแล
ผลลัพธ์ที่ได้จากการคอมไพล์
1body {
2 color: #3498db;
3 font-family: 'Roboto', sans-serif;
4}
การซ้อน (Nesting)
SASS ช่วยเพิ่มความอ่านง่ายของโค้ดด้วยการอนุญาตให้ซ้อน CSS selectors ได้
โค้ดตัวอย่าง
1nav {
2 ul {
3 list-style: none;
4 margin: 0;
5 padding: 0;
6
7 li {
8 display: inline-block;
9
10 a {
11 text-decoration: none;
12 color: #333;
13
14 &:hover {
15 color: #3498db;
16 }
17 }
18 }
19 }
20}
- โค้ดนี้ใช้โครงสร้างซ้อนกันเพื่อแสดงโครงสร้างของสไตล์ให้ชัดเจน
ผลลัพธ์ที่ได้จากการคอมไพล์
1nav ul {
2 list-style: none;
3 margin: 0;
4 padding: 0;
5}
6
7nav ul li {
8 display: inline-block;
9}
10
11nav ul li a {
12 text-decoration: none;
13 color: #333;
14}
15
16nav ul li a:hover {
17 color: #3498db;
18}
มิกซ์อิน (Mixins)
Mixins ช่วยให้คุณนำโค้ดกลับมาใช้ซ้ำในหลายๆ selector
โค้ดตัวอย่าง
1@mixin border-radius($radius) {
2 border-radius: $radius;
3 -webkit-border-radius: $radius;
4 -moz-border-radius: $radius;
5}
6
7button {
8 @include border-radius(10px);
9}
10
11.card {
12 @include border-radius(5px);
13}
- โค้ดนี้กำหนดสไตล์
border-radius
โดยใช้@mixin
และนำไปใช้ซ้ำกับbutton
และ.card
ด้วย@include
ทำให้จัดการสไตล์ได้อย่างมีประสิทธิภาพโดยไม่ซ้ำซ้อน
ผลลัพธ์ที่ได้จากการคอมไพล์
1button {
2 border-radius: 10px;
3 -webkit-border-radius: 10px;
4 -moz-border-radius: 10px;
5}
6
7.card {
8 border-radius: 5px;
9 -webkit-border-radius: 5px;
10 -moz-border-radius: 5px;
11}
อินเฮอริแทนซ์ (@extend)
การสืบทอด (Inheritance) ช่วยให้คุณใช้สไตล์ที่มีอยู่กับ selector อื่นๆ ได้
โค้ดตัวอย่าง
1%button-style {
2 padding: 10px 20px;
3 color: white;
4 background-color: #3498db;
5}
6
7button {
8 @extend %button-style;
9 border: none;
10}
11
12.link-button {
13 @extend %button-style;
14 text-decoration: none;
15}
- โค้ดนี้กำหนด placeholder selector
%button-style
และใช้@extend
เพื่อใช้สไตล์ร่วมกันกับทั้งbutton
และ.link-button
ส่งเสริมการนำกลับมาใช้ใหม่และความเป็นอันหนึ่งอันเดียวกัน
ผลลัพธ์ที่ได้จากการคอมไพล์
1button, .link-button {
2 padding: 10px 20px;
3 color: white;
4 background-color: #3498db;
5}
6
7button {
8 border: none;
9}
10
11.link-button {
12 text-decoration: none;
13}
การใช้เงื่อนไขและลูป
SASS รองรับเงื่อนไขและลูป เพื่อสร้างสไตล์แบบไดนามิก
ตัวอย่างการใช้คำสั่งเงื่อนไข
1$theme: dark;
2
3body {
4 background-color: if($theme == light, #fff, #333);
5 color: if($theme == light, #333, #fff);
6}
- โค้ดนี้ใช้ฟังก์ชัน
if
ของ SASS เพื่อเปลี่ยนสีพื้นหลังและตัวอักษรตามค่า$theme
ช่วยให้สร้างสไตล์แบบไดนามิกตามเงื่อนไขได้
ตัวอย่างการใช้ลูป
1@for $i from 1 through 3 {
2 .column-#{$i} {
3 width: calc(100% / $i);
4 }
5}
- โค้ดนี้ใช้ลูป
@for
ของ SASS เพื่อสร้างคลาส.column-1
ถึง.column-3
แบบไดนามิก
ผลลัพธ์ที่ได้จากการคอมไพล์
1body {
2 background-color: #333;
3 color: #fff;
4}
5
6.column-1 {
7 width: 100%;
8}
9
10.column-2 {
11 width: 50%;
12}
13
14.column-3 {
15 width: 33.3333%;
16}
การแยกไฟล์และนำเข้าไฟล์
SASS อนุญาตให้แบ่งไฟล์และนำกลับมาใช้ใหม่โดยใช้ @use
หรือ @import
โครงสร้างไฟล์
styles/
_variables.scss
_mixins.scss
main.scss
_variables.scss
1$primary-color: #3498db;
_mixins.scss
1@mixin flex-center {
2 display: flex;
3 justify-content: center;
4 align-items: center;
5}
main.scss
1@use 'variables';
2@use 'mixins';
3
4header {
5 background-color: variables.$primary-color;
6 @include mixins.flex-center;
7}
ผลลัพธ์ที่ได้จากการคอมไพล์
1header {
2 background-color: #3498db;
3 display: flex;
4 justify-content: center;
5 align-items: center;
6}
สรุป
การใช้ SASS ช่วยให้การเขียน CSS ง่ายขึ้น และเพิ่มความสามารถในการนำโค้ดไปใช้ซ้ำ รวมถึงความง่ายในการดูแลรักษาโค้ด
คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย