05: CSS Fundamentals
เริ่มต้นตกแต่งหน้าเว็บให้สวยงามด้วย CSS (Cascading Style Sheets)
1. วิธีเขียน CSS (3 แบบ)
สามารถสั่งให้ CSS ทำงานได้ 3 วิธี แต่ละวิธีมีข้อดี-ข้อเสียต่างกัน
ฝังลงใน Tag เลย (ไม่แนะนำให้ใช้เยอะ)
<h1 style="color: blue;">
สวัสดี
</h1>
เขียนไว้ในส่วน <head> ของไฟล์นั้นๆ
<style>
h1 {
color: blue;
}
</style>
แยกไฟล์ .css ต่างหาก (มาตรฐานที่ถูกต้อง)
<link rel="stylesheet" href="style.css">
2. Selectors
หัวใจของ CSS คือการ "ชี้เป้า" ให้ถูกตัว มีวิธีการเลือกตั้งแต่พื้นฐานไปจนถึงเทคนิคขั้นสูง
2.1 Basic Selectors (พื้นฐาน)
Tag Selector
เหมาทั้งหน้าเลือกจากชื่อ Tag (กระทบทุกตัวในหน้า)
<p>ย่อหน้าที่ 1</p>
<p>ย่อหน้าที่ 2</p>
p {
color: gray;
}
Class Selector (.)
ใช้บ่อยที่สุดเลือกจาก "ชื่อกลุ่ม" (ซ้ำกันได้)
<div class="box">A</div>
<div class="box">B</div>
.box {
border: 1px solid red;
}
ID Selector (#)
ห้ามซ้ำเลือกจาก "ค่าประจำตัว" (มีได้ตัวเดียว)
<div id="logo">Brand</div>
#logo {
font-size: 30px;
}
2.2 Advanced Selectors
เลือกแบบเจาะจง โดยดูจากความสัมพันธ์ของ Tag
1. Group Selector
(,)
ใช้เมื่ออยากแต่งหลาย ๆ Elements ให้เหมือนกัน (ประหยัดบรรทัด)
<h1>หัวข้อหลัก</h1>
<h2>หัวข้อรอง</h2>
/* เครื่องหมาย comma (,) แปลว่า "และ" */
h1, h2 {
color: navy;
text-align: center;
}
2. Descendant (ลูกหลาน)
ใช้ เว้นวรรค คือ เลือกทุกลำดับชั้นที่อยู่ข้างใน (ลูก, หลาน, เหลน โดนหมด)
<div class="container">
<p>ฉันคือลูก (โดน)</p>
<article>
<p>ฉันคือหลาน (โดนด้วย)</p>
</article>
</div>
/* เลือก p ทุกตัว ที่อยู่ใน .container */
.container p {
color: red;
}
3. Child (ลูกแท้ๆ)
ใช้ เครื่องหมาย > คือ เลือกเฉพาะลูกที่อยู่ติดกันชั้นเดียว (หลานไม่เกี่ยว)
<div class="container">
<p>ฉันคือลูก (โดนคนเดียว)</p>
<article>
<p>ฉันคือหลาน (รอดตัวไป)</p>
</article>
</div>
/* เลือก p เฉพาะที่เป็นลูกติดตัว */
.container > p {
color: blue;
}
3. ระบบสี
ใน CSS เรากำหนดสีได้หลายรูปแบบ แต่ที่นิยมใช้มี 3 แบบหลักๆ
1. Hex Code
#FF5733
ใช้รหัสเลขฐาน 16 (RRGGBB) นิยมใช้มากที่สุด
2. RGB
rgb(255, 87, 51)
ผสมสี แดง-เขียว-น้ำเงิน (ค่า 0-255)
3. RGBA (Opacity)
rgba(255, 87, 51, 0.5)
เหมือน RGB แต่เพิ่มตัว A (Alpha) คือความโปร่งใส (0.0 - 1.0)
4. Text & Fonts
4.1 Basic Properties
h1 {
/* 1. สีตัวอักษร */
color: #333;
/* 2. ขนาด (px, rem, em) */
font-size: 24px;
/* 3. ความหนา (normal, bold, 100-900) */
font-weight: bold;
/* 4. การจัดตำแหน่ง (left, center, right) */
text-align: center;
}
Hello World
ทดสอบการจัดรูปแบบข้อความ
img {
/* 1. กำหนดขนาด (Width/Height) */
width: 100%; /* ปรับความกว้างตามกล่องที่ใส่ (หรือใส่เป็น px) */
max-width: 300px; /* จำกัดความกว้างสูงสุดไม่ให้ใหญ่เกินไป */
height: auto; /* สำคัญ! ช่วยรักษาสัดส่วนภาพไม่ให้เบี้ยว */
/* 2. ความโค้งมนของขอบ (Border Radius) */
border-radius: 8px; /* ใส่ค่ามากขอบยิ่งมน (ใส่ 50% เป็นวงกลม) */
/* 3. การจัดตำแหน่ง (Alignment) */
display: block; /* เปลี่ยนสถานะให้เป็นบล็อกเพื่อจัดตำแหน่ง */
margin: 0 auto; /* จัดกึ่งกลางหน้าจอ (บน-ล่าง 0, ซ้าย-ขวา auto) */
/* 4. ตกแต่งเพิ่มเติม (Decoration) */
box-shadow: 0 4px 8px rgba(0,0,0,0.1); /* ใส่เงาให้ดูมีมิติ */
object-fit: cover; /* (กรณีระบุ height) ตัดส่วนเกินออกให้ภาพเต็มกรอบสวยงาม */
}
ทดสอบการจัดรูปแบบรูปภาพ
4.2 Font Family & Google Fonts
การเลือกฟอนต์ที่เหมาะสม ช่วยให้เว็บดูดีขึ้น
| ตระกูล (Family) | ลักษณะเด่น | ตัวอย่าง Code |
|---|---|---|
| Serif | มี "เชิง" (ขีดที่ปลายตัวอักษร) ดูเป็นทางการ, คลาสสิก |
CSS
|
| Sans-serif | "ไม่มีเชิง" เรียบง่าย ทันสมัย |
CSS
|
| Monospace | ความกว้างเท่ากันทุกตัวอักษร (เหมือนเครื่องพิมพ์ดีด/โค้ด) |
CSS
|
| Cursive | เลียนแบบลายมือเขียน (Handwriting) ดูเป็นกันเอง |
CSS
|
| Fantasy | แบบตกแต่งพิเศษ แฟนตาซี (ใช้เฉพาะหัวข้อ) |
CSS
|
- เข้าเว็บ fonts.google.com แล้วเลือกฟอนต์ที่ชอบ (เช่น "Kanit")
- กดปุ่ม Get font (หรือเครื่องหมาย +)
- กดปุ่ม Get embed code
- Copy โค้ดในช่อง Web
(เลือกแบบ
<link>) ไปวางใน<head>ของ HTML - Copy โค้ด CSS class ไปใส่ในไฟล์ CSS
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Kanit:wght@300;400;700&display=swap" rel="stylesheet">
body {
/* ใช้ชื่อฟอนต์ให้ตรงกับที่เลือกมา */
font-family: 'Kanit', sans-serif;
}
Workshop: แต่งสวยให้ Travel Page
นำไฟล์ travel.html
จากสัปดาห์ที่ 1 มาตกแต่งให้สวยงามด้วย External CSS:
- สร้างไฟล์
style.cssในโฟลเดอร์เดียวกัน - เชื่อมไฟล์ด้วย
<link rel="stylesheet" href="style.css">ใน travel.html - เปลี่ยน Background ของทั้งหน้าเว็บ (body) เป็นสีครีมอ่อน ๆ
- จัด หัวข้อ (h1) ให้เป็นสีน้ำเงินเข้ม และอยู่กึ่งกลาง
- ปรับ รูปภาพ (img) ให้มีความกว้าง 100%
แต่ไม่เกิน 600px และจัดกึ่งกลาง (ใช้
display: block; margin: auto;)
Practice Mission: สร้างนามบัตรดิจิทัล "Link-in-Bio"
บรีฟจากลูกค้า (Influencer ท่านหนึ่ง):
"อยากได้หน้าเว็บรวมลิงก์เอาไว้แปะหน้า IG ขอโทนสีพาสเทล ดูมินิมอล ใช้ฟอนต์ภาษาไทยสวย ๆ"
1. โครงสร้าง HTML (สร้างไฟล์ bio.html)
- Profile Image: ใส่รูปโปรไฟล์ (class="profile-pic")
- Name & Bio: ชื่อ (h1) และคำบรรยายสั้นๆ (p)
- Social Links: สร้างรายการของลิงก์ (ul > li > a) อย่างน้อย 3 ลิงก์ (เช่น Facebook, YouTube, IG) โดยให้
<a>มี class="btn-link" - Footer: ข้อความ Copyright เล็ก ๆ ด้านล่าง
2. ตกแต่ง CSS (สร้างไฟล์ bio-style.css)
- Connect: เชื่อมไฟล์ CSS เข้ากับ HTML ให้ถูกต้อง
- Font: ไปที่ Google Fonts เลือกฟอนต์มาใช้กับทั้งหน้าเว็บ (body)
- Background: กำหนดสีพื้นหลังของทั้งหน้าเว็บ
- Text Align: จัดทุกอย่างให้อยู่ กึ่งกลาง (text-align: center)
3. เก็บรายละเอียดให้สวยงาม
ใช้ Class Selector เพื่อตกแต่งเฉพาะจุด:
- รูปโปรไฟล์ (.profile-pic): กำหนดความกว้าง 150px และทำเป็นวงกลม (ใช้
border-radius: 50%) - ชื่อ (h1): เปลี่ยนสีตัวอักษรให้เป็นสีเข้ม ๆ
- รายการ (ul): เอาจุด Bullet ออก (ใช้
list-style: none;และpadding: 0;) - ปุ่มลิงก์ (.btn-link): ใส่สีพื้นหลัง (background-color), เปลี่ยนสีตัวอักษรเป็นสีขาว, และเอาขีดเส้นใต้ออก (
text-decoration: none;)