# 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}]"}