# SCSS ตอนที่ 3 --- ## content ในตอนนี้ที่เราจะพูดถึงกันนะครับ - @import นำเข้าไฟล์ - การเขียนคอมเม้น - รูปแบบการเขียน - selector ซ้อน selector - & กับการต่อคำ - @extend รวม selector - %selector ต้นแบบ css ล่องหน --- <small> SCSS นั่นเราสามารถ เขียนโค๊ตส่วนต่างๆ แยกเป็นไฟล์แล้วนำมารวมกันตอนใช้งานได้ เพื่อให้ง่ายต่อการแก้ไขและจัดกลุ่ม ตัวอย่างเช่น </small> - <small>//ไฟล์ _setting.scss</small> - <small>@import 'setting';</small> - <small>//ไฟล์ _run.scss .ในโฟลเดอร์ mixin</small> - <small>@import>@import 'mixin/run';</small> --- <small> การตั้งชื่อไฟล์นำหน้าด้วย _ นั้น จะทำให้ไฟล์นั้นไม่ทำการสร้างไฟล์ .css ขึ้นมา และตอนนำมา @import ก็ไม่จำเป็นต้องใส่ _ นำหน้า และนามสกุลไฟล์ แต่อย่างได </small> --- ==การนำเข้าไฟล์ทีเดียวทั้งโฟล์เดอร์== --- <small> SCSS นั้นไม่สามารถนำเข้าไฟล์แบบใช้ mixin/* แทนการนำเข้าทีเดียวยกโฟล์เดอร์ได้ เราจึงแก้โดย สร้างไฟล์ ที่ @import ไฟล์ทั้งหมดไว้ด้วยกัน เพื่อให้ง่ายต่อการนำเข้าไฟล์ แค่เนี่ย ?!! เยส สั้นๆพอ :+1: </small> --- ==การเขียนคอมเม้น== --- <small> การเขียนคอมเม้นใน SCSS นั้นใช้ได้2แบบคือ </small> * <small>// เพื่อบอกว่าข้อความหลังจากนี้คือ คอมเม้น </small> * <small>/* ..... */ สำหรับการคอมเม้นหลายบรรทัด แบบเดียวกับใน CSS</small> --- ==รูปแบบการเขียน== --- <small> รูปแบบการเขียนของ SCSS นั้น คล้ายกับ CSS คือ เริ่มต้นด้วย selector เนื้อหาใน selector ถูกครอบด้วย { } แล้วปิดชุดคำสั่ง css ด้วย ; แบบเดียวกับเขียน css (SASS นั้นจะไม่มี {} และ ; แต่ใช้การขึ้นบรรทัดใหม่แทน) </small> ```css= .foo { display: block; overflow: hidden; padding: 0 1em; } ``` --- ==selector ซ้อน selector== --- <small> นอกจากการเขียนแบบปกติแล้วเรายังซามารถซ้อน selector แบบนี้ </small> ```css= .foo { .bar1{ display: block; overflow: hidden; } div{ padding: 0 1em; } } ``` --- <small>เราก็จะได้ผลลัพ แบบนี้ </small> ```css= .foo .bar1 { display: block; overflow: hidden; } .foo div { padding: 0 1em; } ``` --- ==& กับการต่อคำ== --- <small> ในการซ้อน selector เราสามารถใช้สัญลักษณ์ & ร่วมด้วย โดยใช้แทนข้อความชื่อของ selector ก่อนหน้า ตัวอย่างเช่น </small> ```css= .foo { background-color: azure; &-1{ display: block; overflow: hidden; } &-red{ color: red; } } ``` --- <small>เราก็จะได้ผลลัพ แบบนี้ </small> ```css= .foo { background-color: azure; } .foo-1 { display: block; overflow: hidden; } .foo-red { color: red; } ``` --- <small>การใช้ & ร่วมด้วย ทำให้ง่ายต่อการเขียน css แบบกลุ่มหรือที่ต้องใช้คำขึ้นต้นซ้ำๆ เท่าที่ทดลอง & ต้องอยู่หน้าสุดเสมอ(ถ้าวางไว้หลังได้ด้วยก็คงดี -0-) </small> --- ==@extend รวม selector== --- <small> @extend ใช้สำหรับเพิ่ม selector ให้กับต้นแบบ css ที่เราเตรียมไว้ อย่างเช่น เราต้องการ css แบบนี้ </small> ```css= .foo, .foo-1, .foo-2, .foo-3 { position: relative; } .foo-1 { width: 100%; } .foo-2 { width: 50%; } .foo-3 { width: 25%; } ``` --- <small>เราสามารถเขียนได้ด้วย </small> ```css= .foo { position: relative; &-1{ @extend .foo; width: 100%; } &-2{ @extend .foo; width: 50%; } &-3{ @extend .foo; width: 25%; } } ``` --- <small> เอ๊ะ ทำไมดุมันยุ่งยากขึ้นละ?? ตอนแรกผมก็มองว่าแบบนั้นแหละ แต่พอตอนใช้จริง เราก็จะเอามันมาใช้ร่วมกับ Loop หรือใช้ในการจัดรูปแบบโค๊ตให้อ่านง่ายขึ้น ลงท้ายเลยเป็นตัวนึงที่สำคัญมากเลยทีเดียว </small> --- ==%selector ต้นแบบ css ล่องหน== --- <small> การสร้างต้นแบบ css นั้น ถ้าใช้ใช้เป็น selector ปกติ มันก็จะแสดงในไฟล์ .css ของเราด้วย ถูกไหมครับ แล้วถ้าเราไม่ต้องการให้มันแสดงละจะทำยังไง เช่นโค๊ตข้างบน ถ้าเราไม่ต้องการ .foo </small> --- <small>เราต้องการแค่ </small> ```css= .foo-1, .foo-2, .foo-3 { position: relative; } ``` --- <small>การเรียกใช้ @extend จำเป็นต้องอ้างชื่อ selector เพียงเราใช้ %selector แทน selector ปกติ ก็ใช้ได้แล้วละครับ ตัวอย่างเช่น </small> ```css= %bar{ position: relative; } .foo { &-1{ @extend %bar; width: 100%; } &-2{ @extend %bar; width: 50%; } &-3{ @extend %bar; width: 25%; } } ``` --- <small>ผลที่ได้คือ</small> ```css= .foo-1, .foo-2, .foo-3 { position: relative; } .foo-1 { width: 100%; } .foo-2 { width: 50%; } .foo-3 { width: 25%; } ``` --- ==ตอนต่อไปพบกับ การใช้งาน Loop ต่างๆ== ==THE END== ---
{"metaMigratedAt":"2023-06-15T05:22:48.129Z","metaMigratedFrom":"YAML","title":"SCSS ตอนที่ 3 มารู้จัก SCSS กันสักหน่อย พอไปวัดไปวาได้","breaks":true,"description":"SCSS เบื้องต้น","contributors":"[{\"id\":\"50acef50-3a9a-4a0c-afa0-1be3d0c7c8e8\",\"add\":4495,\"del\":0}]"}
    348 views