สตริงใน SASS
บทความนี้อธิบายเกี่ยวกับสตริงใน SASS
เราจะอธิบายทีละขั้นตอน ตั้งแต่การใช้สตริงพื้นฐานไปจนถึงการใช้งานขั้นสูงใน SASS
YouTube Video
สตริงใน SASS
SASS เป็น preprocessor สำหรับขยาย CSS และสตริงเป็นองค์ประกอบสำคัญที่ช่วยให้การกำหนดสไตล์มีความยืดหยุ่นและไดนามิกมากยิ่งขึ้น
พื้นฐานของสตริง
สตริงใน SASS สามารถใส่เครื่องหมายคำพูดเดี่ยวหรือคู่ก็ได้ และบางกรณีสามารถละเครื่องหมายคำพูดเพื่อให้เหมือนตัวระบุ (identifier) ด้านล่างนี้คือตัวอย่างพื้นฐานในการเขียนสตริง
1// Single quotes
2$single-quoted: 'Hello, World!';
3// Double quotes
4$double-quoted: "Hello, World!";
5// No quotes
6$unquoted: Hello-World;หมายเหตุ
- สตริงที่มีเครื่องหมายคำพูดจะถูกประมวลผลโดยตรงในฐานะค่าผกผันของสตริง (string literal)
- สตริงที่ไม่มีเครื่องหมายคำพูดมักจะถูกใช้เป็นตัวระบุของ CSS เช่น ชื่อคลาสหรือไอดี จึงควรระมัดระวังในการใช้งาน
การต่อสตริง
ใน SASS คุณสามารถต่อสตริงได้โดยใช้โอเปอเรเตอร์ +
1$greeting: "Hello";
2$name: "Alice";
3
4$result: $greeting + ", " + $name + "!"; // "Hello, Alice!"- โค้ดนี้คือตัวอย่างการใช้โอเปอเรเตอร์
+ใน SASS เพื่อต่อสตริงหลายอันให้เป็นสตริงใหม่
ตัวอย่างขั้นสูง: การสร้างชื่อคลาส
1$base-class: "btn";
2$modifier: "primary";
3
4.class-name {
5 content: $base-class + "--" + $modifier; // "btn--primary"
6}- โค้ดนี้คือตัวอย่างการใช้โอเปอเรเตอร์
+ใน SASS เพื่อรวมชื่อคลาสหลักกับมอดิฟายเออร์ สร้างชื่อคลาสใหม่ขึ้นมา
การใช้ฟังก์ชันสตริง
SASS มีฟังก์ชันสำเร็จรูปที่สะดวกสำหรับการจัดการสตริง เช่น การควบคุมเครื่องหมายคำพูดหรือแยกสตริงย่อย
quote() และ unquote()
ด้วยฟังก์ชัน quote() และ unquote() คุณสามารถเพิ่มหรือลบเครื่องหมายคำพูดออกจากสตริง
1$quoted: quote(Hello); // '"Hello"'
2$unquoted: unquote("Hello"); // Hellostr-length($string)
ฟังก์ชัน str-length() ใช้สำหรับหาความยาวของสตริง
1$length: str-length("Hello"); // 5str-insert($string, $insert, $index)
ฟังก์ชัน str-insert() ใช้สำหรับแทรกสตริงที่ตำแหน่งที่กำหนด
1$result: str-insert("Hello", " SASS", 6); // "Hello SASS"str-slice($string, $start-at, [$end-at])
ฟังก์ชัน str-slice() ใช้สำหรับตัดเอาส่วนหนึ่งของสตริงออกมา
1$substring: str-slice("Hello, World!", 1, 5); // "Hello"to-upper-case() และ to-lower-case()
ฟังก์ชัน to-upper-case() และ to-lower-case() ใช้สำหรับแปลงสตริงให้เป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กตามลำดับ
1$upper: to-upper-case("sass"); // "SASS"
2$lower: to-lower-case("SASS"); // "sass"สตริงกับตรรกะเงื่อนไข
ด้วย directive @if ของ SASS คุณสามารถตรวจสอบค่าในสตริงและสลับรูปแบบ (style) ตามธีมหรือการตั้งค่าได้อย่างยืดหยุ่น
1$theme: "dark";
2
3@if $theme == "dark" {
4 body {
5 background-color: black;
6 color: white;
7 }
8} @else {
9 body {
10 background-color: white;
11 color: black;
12 }
13}- โค้ดนี้คือตัวอย่างการใช้ directive
@ifใน SASS เพื่อตรวจสอบว่าธีมเป็นdarkหรือไม่ แล้วสลับรูปแบบตามนั้น
ตัวอย่างการใช้งานจริง: การสร้างเส้นทางรูปพื้นหลังแบบไดนามิก
ด้านล่างนี้คือตัวอย่างการใช้การจัดการสตริงเพื่อสร้าง URL รูปพื้นหลัง
1$image-path: "/images/";
2$image-name: "background";
3$image-extension: ".jpg";
4
5.background {
6 background-image: url($image-path + $image-name + $image-extension);
7}ผลลัพธ์หลังแปลง
1.background {
2 background-image: url("/images/background.jpg");
3}- โค้ดนี้คือตัวอย่างการต่อสตริงใน SASS เพื่อสร้างเส้นทางของรูปพื้นหลังแบบไดนามิกและนำไปใช้เป็นพื้นหลัง
การใช้งานร่วมกับ List และ Map
โดยผสมผสาน List และ Map กับการจัดการสตริงใน SASS คุณสามารถสร้างสไตล์ได้อย่างยืดหยุ่นมากขึ้น
ตัวอย่าง List
1$states: "hover", "focus", "active";
2
3@each $state in $states {
4 .btn-#{$state} {
5 content: "Button in " + $state + " state";
6 }
7}ผลลัพธ์หลังแปลง
1.btn-hover {
2 content: "Button in hover state";
3}
4.btn-focus {
5 content: "Button in focus state";
6}
7.btn-active {
8 content: "Button in active state";
9}- โค้ดนี้เป็นตัวอย่างการใช้ directive
@eachใน SASS เพื่อสร้างคลาสสำหรับแต่ละสถานะใน list และตั้งค่าภายในแบบไดนามิกโดยการต่อสตริง
ตัวอย่าง Map
1$colors: (
2 "primary": "#3498db",
3 "secondary": "#2ecc71"
4);
5
6@each $name, $color in $colors {
7 .text-#{$name} {
8 color: $color;
9 }
10}ผลลัพธ์หลังแปลง
1.text-primary {
2 color: #3498db;
3}
4.text-secondary {
5 color: #2ecc71;
6}- โค้ดนี้เป็นตัวอย่างการใช้ map ใน SASS เชื่อมโยงชื่อสีเข้ากับค่า แล้วสร้างคลาสแต่ละอันแบบไดนามิกด้วย directive
@each
การ escape สตริง
เพื่อให้สามารถใช้สตริงบางชนิดเป็นตัวระบุ CSS ได้อย่างปลอดภัย อาจจำเป็นต้อง escape ตัวอักษรพิเศษ
1$special_character: "example\\@123";
2.#{$special_character} {
3 content: "This is a valid CSS class.";
4}ผลลัพธ์หลังแปลง
1.example\@123 {
2 content: "This is a valid CSS class.";
3}- โค้ดนี้เป็นตัวอย่างของการนำสตริงที่มีอักขระพิเศษมาใช้เป็นตัวแปรใน SASS, ขยายค่าด้วย
#{$variable}และนำไปใช้เป็นชื่อคลาสที่ถูกต้องใน CSS
สรุป
การจัดการสตริงใน SASS มีมากกว่าการเขียนค่าผกผันของสตริง เพราะเป็นเครื่องมือสำคัญสำหรับการสร้างสไตล์แบบไดนามิก โดยใช้การจัดการและฟังก์ชันพื้นฐานที่แนะนำในที่นี้ คุณจะสามารถเพิ่มการนำกลับมาใช้ใหม่และความง่ายในการดูแลโค้ด CSS ของคุณได้อย่างมีประสิทธิภาพ
คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย