Guest Adventurer 🥉 Lv.1
🪙 50
🔷 10
← Back to library
Article · programming

HTML & CSS EP1: สร้างเว็บไซต์แรกด้วยตัวเอง ตั้งแต่เริ่มต้นจนเห็นผลจริง

HTML & CSS

เริ่มเรียน HTML และ CSS ตั้งแต่พื้นฐาน ทำความเข้าใจโครงสร้างเว็บไซต์ สร้างหน้าเว็บจริงด้วยตัวเอง และทดลองเปิดดูผลลัพธ์จากไฟล์ HTML ที่มี CSS ในตัว

EP1: เริ่มต้นสร้างเว็บไซต์แรกด้วยตัวเอง

ยินดีต้อนรับสู่บทเรียน HTML และ CSS สำหรับผู้เริ่มต้น หากคุณเคยสงสัยว่าเว็บไซต์ที่เปิดผ่านโทรศัพท์หรือคอมพิวเตอร์สร้างขึ้นมาได้อย่างไร บทเรียนนี้จะพาคุณเริ่มต้นจากศูนย์ โดยไม่จำเป็นต้องมีประสบการณ์เขียนโปรแกรมมาก่อน เป้าหมายของเราคือสร้างหน้าเว็บไซต์หนึ่งหน้าที่มีหัวข้อ ข้อความ ปุ่ม สีพื้นหลัง และกล่องเนื้อหาที่ดูเป็นระเบียบ จากนั้นเปิดไฟล์ในเว็บเบราว์เซอร์เพื่อดูผลงานของตัวเอง
คอมพิวเตอร์สำหรับเขียนโปรแกรมและพัฒนาเว็บไซต์
การเริ่มต้นสร้างเว็บไซต์ด้วยโปรแกรมแก้ไขโค้ดและเว็บเบราว์เซอร์

1. เว็บไซต์ทำงานอย่างไร

เว็บไซต์คือเอกสารและทรัพยากรต่าง ๆ ที่เว็บเบราว์เซอร์นำมาประมวลผลและแสดงเป็นหน้าเว็บ เมื่อเราเปิดเว็บไซต์ เบราว์เซอร์จะอ่านโครงสร้างเนื้อหา นำรูปแบบการตกแต่งมาจัดวาง และอาจทำงานร่วมกับโปรแกรมอื่นเพื่อให้เว็บไซต์โต้ตอบกับผู้ใช้งานได้ สำหรับบทเรียนแรก เราจะเริ่มจาก HTML และ CSS ซึ่งเพียงพอสำหรับสร้างหน้าเว็บพื้นฐานที่แสดงผลได้จริง
เทคโนโลยีหน้าที่ตัวอย่าง
HTMLกำหนดโครงสร้างและเนื้อหาของหน้าเว็บหัวข้อ ย่อหน้า รูปภาพ ลิงก์ และปุ่ม
CSSกำหนดรูปลักษณ์และการจัดวางสี ขนาดตัวอักษร ระยะห่าง และเลย์เอาต์
JavaScriptเพิ่มพฤติกรรมและการโต้ตอบตรวจสอบฟอร์ม เปิดเมนู และอัปเดตข้อมูล
จำให้ง่ายHTML เปรียบเหมือนโครงสร้างของบ้าน ส่วน CSS คือการตกแต่งบ้านให้สวยงาม สำหรับบทเรียนนี้เราจะใช้ HTML และ CSS ก่อน โดยยังไม่จำเป็นต้องใช้ JavaScript

2. เตรียมเครื่องมือก่อนเริ่มเขียนโค้ด

สิ่งที่จำเป็นมีเพียงคอมพิวเตอร์ โปรแกรมสำหรับแก้ไขข้อความหรือโค้ด และเว็บเบราว์เซอร์ เช่น Chrome, Edge หรือ Firefox หากยังไม่มีโปรแกรมแก้ไขโค้ด คุณสามารถเริ่มจากโปรแกรมข้อความที่มีอยู่ในระบบได้ แต่โปรแกรมที่ออกแบบมาสำหรับเขียนโค้ดจะช่วยให้อ่านโค้ดและตรวจสอบข้อผิดพลาดได้สะดวกขึ้น

ขั้นตอนการเตรียมไฟล์

1. สร้างโฟลเดอร์ชื่อ my-first-website 2. เปิดโปรแกรมแก้ไขโค้ด 3. สร้างไฟล์ใหม่ชื่อ index.html 4. ตรวจสอบว่านามสกุลไฟล์เป็น .html จริง ไม่ใช่ index.html.txt 5. เมื่อเขียนโค้ดแล้ว ให้บันทึกไฟล์และเปิดด้วยเว็บเบราว์เซอร์
ข้อควรระวังสำหรับ Windowsหากใช้ Notepad ให้เลือกบันทึกเป็นชนิดไฟล์ All Files และใส่ชื่อ index.html หากไฟล์ถูกบันทึกเป็น index.html.txt เบราว์เซอร์อาจไม่ตีความไฟล์ตามที่ต้องการ

3. รู้จักโครงสร้างพื้นฐานของ HTML

HTML ประกอบด้วยองค์ประกอบที่เรียกว่า element โดยทั่วไปจะใช้แท็กเปิดและแท็กปิดครอบเนื้อหา เช่น h1 ใช้สร้างหัวข้อหลัก และ p ใช้สร้างย่อหน้า ชื่อแท็กจะอยู่ภายในเครื่องหมายมุมแหลม และแท็กปิดจะมีเครื่องหมาย / เพิ่มเข้ามา

ตัวอย่าง HTML สำหรับหัวข้อและย่อหน้า

<h1>เว็บไซต์แรกของฉัน</h1>
<p>ฉันกำลังเรียนรู้การสร้างเว็บไซต์ด้วย HTML</p>
ตัวอย่างนี้เป็นเพียงส่วนหนึ่งของ HTML ไม่ใช่เอกสาร HTML ฉบับเต็ม จึงกำหนดให้แสดงเฉพาะโค้ด หากต้องการนำไปทดลอง ให้คัดลอกไปใส่ภายในโครงสร้าง HTML ที่สมบูรณ์

4. สร้างโครงสร้างเอกสาร HTML ให้ถูกต้อง

เอกสาร HTML ฉบับเต็มควรมี doctype เพื่อแจ้งชนิดเอกสาร มี html เป็นองค์ประกอบหลัก มี head สำหรับข้อมูลเกี่ยวกับหน้าเว็บ และมี body สำหรับเนื้อหาที่ผู้ใช้มองเห็น นอกจากนี้ควรกำหนดภาษาและชุดอักขระให้เหมาะสม เพื่อให้ข้อความภาษาไทยแสดงผลได้ถูกต้อง

โครงสร้าง HTML ขั้นพื้นฐาน

<!DOCTYPE html>
<html lang="th">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>เว็บไซต์แรกของฉัน</title>
</head>
<body>
  <h1>สวัสดี เว็บไซต์แรก!</h1>
  <p>นี่คือหน้าเว็บที่สร้างด้วย HTML</p>
</body>
</html>

อธิบายแท็กที่สำคัญ

แท็กหรือคำสั่งความหมาย
<!DOCTYPE html>แจ้งให้เบราว์เซอร์ใช้มาตรฐาน HTML
<html lang="th">กำหนดเอกสาร HTML และภาษาหลักเป็นภาษาไทย
<head>เก็บข้อมูลกำกับหน้าเว็บและการตั้งค่าที่จำเป็น
<meta charset="UTF-8">กำหนดชุดอักขระเพื่อรองรับข้อความภาษาไทย
<meta name="viewport" ...>ช่วยให้หน้าเว็บปรับตามความกว้างของอุปกรณ์
<title>กำหนดชื่อหน้าเว็บที่แสดงบนแท็บเบราว์เซอร์
<body>เก็บเนื้อหาหลักที่แสดงในหน้าเว็บ

5. ทำความรู้จัก CSS

ถ้า HTML ช่วยจัดโครงสร้าง CSS จะช่วยกำหนดหน้าตาขององค์ประกอบ เช่น สีพื้นหลัง สีตัวอักษร ขนาดข้อความ เส้นขอบ และระยะห่าง รูปแบบคำสั่ง CSS โดยทั่วไปประกอบด้วย selector สำหรับเลือกองค์ประกอบ ตามด้วย property และ value ที่กำหนดลักษณะการแสดงผล

ตัวอย่าง CSS สำหรับหัวข้อ

h1 {
  color: #2563eb;
  font-size: 32px;
  text-align: center;
}
ตัวอย่างนี้เลือกองค์ประกอบ h1 แล้วกำหนดสีตัวอักษรเป็นสีน้ำเงิน ปรับขนาดตัวอักษรเป็น 32 พิกเซล และจัดข้อความให้อยู่กึ่งกลาง โค้ด CSS นี้เป็นเพียงกฎการตกแต่ง จึงยังไม่สามารถสร้างหน้าเว็บที่สมบูรณ์ได้ด้วยตัวเอง

6. เข้าใจ selector, property และ value

ส่วนประกอบตัวอย่างหน้าที่
Selectorh1เลือกองค์ประกอบที่จะตกแต่ง
Propertycolorระบุคุณสมบัติที่ต้องการเปลี่ยน
Value#2563ebกำหนดค่าของคุณสมบัติ
Declarationcolor: #2563eb;ระบุคุณสมบัติพร้อมค่าที่ต้องการ
เครื่องหมายปีกกา { } ใช้ครอบชุดคำสั่งของ selector ส่วนเครื่องหมายโคลอน : ใช้คั่นชื่อ property กับ value และเครื่องหมายอัฒภาค ; ใช้ปิดคำสั่งแต่ละรายการ การเขียนเครื่องหมายให้ครบช่วยให้โค้ดอ่านง่ายและลดข้อผิดพลาด

7. ใส่ CSS ลงในเอกสาร HTML

สำหรับโปรเจกต์ขนาดเล็กหรือบทเรียนแรก เราสามารถใส่ CSS ไว้ภายในแท็ก style ในส่วน head ได้ วิธีนี้ทำให้เก็บตัวอย่างทั้งหมดไว้ในไฟล์เดียวและทดลองได้สะดวก เมื่อเว็บไซต์มีขนาดใหญ่ขึ้นจึงค่อยแยก CSS ไปไว้ในไฟล์ .css ต่างหาก

ตัวอย่างการเชื่อม HTML กับ CSS ในไฟล์เดียว

<!DOCTYPE html>
<html lang="th">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>ทดลอง CSS</title>
  <style>
    body {
      font-family: Arial, sans-serif;
      background: #f1f5f9;
      color: #1e293b;
    }

    h1 {
      color: #2563eb;
    }
  </style>
</head>
<body>
  <h1>เริ่มต้นเรียน CSS</h1>
  <p>HTML สร้างโครงสร้าง ส่วน CSS ตกแต่งหน้าตา</p>
</body>
</html>

8. จัดระยะห่างด้วย margin และ padding

การจัดระยะห่างมีผลอย่างมากต่อความอ่านง่ายของเว็บไซต์ margin คือพื้นที่ด้านนอกองค์ประกอบ ส่วน padding คือพื้นที่ด้านในระหว่างเนื้อหากับขอบองค์ประกอบ หากข้อความชิดขอบกล่องเกินไป ให้เพิ่ม padding แต่หากกล่องแต่ละใบอยู่ติดกันเกินไป ให้พิจารณาเพิ่ม margin หรือใช้ gap เมื่อจัดวางด้วย Flexbox หรือ Grid

ตัวอย่างระยะห่างภายในกล่อง

.card {
  margin: 16px;
  padding: 24px;
  border-radius: 16px;
  background: #ffffff;
}

9. สร้างกล่องเนื้อหาและปุ่ม

เว็บไซต์สมัยใหม่มักใช้กล่องเนื้อหาเพื่อแยกข้อมูลแต่ละส่วน และใช้ปุ่มเพื่อชี้ให้ผู้ใช้เห็นการกระทำที่สำคัญ ในบทเรียนนี้เราจะทำให้กล่องมีพื้นหลังสีขาว ขอบมน และเงาเบา ๆ พร้อมปุ่มสีน้ำเงินที่มีข้อความชัดเจน ทั้งหมดจะอยู่ในหน้าเว็บตัวอย่างเดียวกัน

โครงสร้างกล่องเนื้อหาและปุ่ม

<section class="card">
  <h2>เริ่มสร้างเว็บไซต์</h2>
  <p>เรียนรู้ทีละขั้นตอนและทดลองเขียนโค้ดด้วยตัวเอง</p>
  <a class="button" href="#about">ดูรายละเอียด</a>
</section>

ตกแต่งกล่องเนื้อหาและปุ่ม

.card {
  max-width: 560px;
  padding: 28px;
  background: #ffffff;
  border-radius: 18px;
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.08);
}

.button {
  display: inline-block;
  padding: 12px 20px;
  border-radius: 10px;
  background: #2563eb;
  color: #ffffff;
  text-decoration: none;
}
โค้ด HTML และ CSS สองตัวอย่างนี้เป็นส่วนประกอบคนละส่วน จึงกำหนดให้แสดงเฉพาะโค้ด เมื่อรวมทั้งสองส่วนเข้ากับเอกสาร HTML ที่สมบูรณ์ กล่องเนื้อหาจะมีพื้นหลังสีขาว ขอบมน เงาอ่อน และปุ่มสีน้ำเงิน

10. จัดหน้าเว็บให้อยู่กึ่งกลาง

การจัดวางเนื้อหาให้อยู่กึ่งกลางช่วยให้หน้าเว็บดูเป็นระเบียบ โดยเฉพาะหน้าสำหรับแนะนำบริการหรือแสดงการ์ดเนื้อหา เราสามารถใช้ margin: 0 auto เพื่อจัดกล่องที่มีความกว้างกำหนดไว้ให้อยู่กึ่งกลางในแนวนอน และใช้ Flexbox เพื่อจัดองค์ประกอบภายในให้ตรงตามต้องการ

จัดกล่องให้อยู่กึ่งกลาง

.container {
  width: min(100% - 32px, 1080px);
  margin: 0 auto;
}
ค่า min() ช่วยจำกัดความกว้างไม่ให้เกิน 1080 พิกเซล ขณะเดียวกันยังเหลือพื้นที่ด้านข้างสำหรับหน้าจอที่เล็กกว่า การออกแบบลักษณะนี้เป็นพื้นฐานของ Responsive Design ซึ่งจะช่วยให้เนื้อหาปรับตัวได้ตามขนาดหน้าจอ

11. เลือกสีและตัวอักษรให้อ่านง่าย

การเลือกสีไม่จำเป็นต้องใช้หลายสีในหน้าเดียว เริ่มจากสีหลักหนึ่งสี สีพื้นหลังอ่อนหนึ่งสี และสีข้อความเข้มหนึ่งสี จากนั้นใช้ขนาดตัวอักษรเพื่อสร้างลำดับความสำคัญ เช่น หัวข้อใหญ่กว่าย่อหน้า และปุ่มมีข้อความที่อ่านง่าย ควรตรวจสอบความแตกต่างระหว่างสีข้อความกับพื้นหลังเพื่อให้ผู้ใช้อ่านได้สะดวก
แนวทางสำหรับมือใหม่ลองเริ่มจากพื้นหลังสีอ่อน ตัวอักษรสีเข้ม และปุ่มสีหลักเพียงสีเดียว เมื่อจัดวางได้ลงตัวแล้วจึงค่อยเพิ่มรายละเอียดอื่น ๆ

12. ตรวจสอบหน้าเว็บบนหน้าจอขนาดเล็ก

หน้าเว็บที่ดูดีบนคอมพิวเตอร์อาจมีปัญหาบนโทรศัพท์ หากกำหนดความกว้างตายตัวมากเกินไป กล่องเนื้อหาอาจล้นหน้าจอ การใช้ max-width, width ที่ยืดหยุ่น และ media query จะช่วยให้เนื้อหาปรับเปลี่ยนได้ตามพื้นที่ที่มีอยู่ ควรทดลองลดขนาดหน้าต่างเบราว์เซอร์เพื่อตรวจดูว่าข้อความและปุ่มยังใช้งานได้สะดวกหรือไม่

ตัวอย่าง Media Query

@media (max-width: 600px) {
  .hero h1 {
    font-size: 2rem;
  }

  .cards {
    grid-template-columns: 1fr;
  }
}
Media query นี้เป็นเพียงส่วนเสริมของ CSS ที่ต้องนำไปใช้กับหน้าเว็บซึ่งมีองค์ประกอบ .hero และ .cards อยู่แล้ว จึงแสดงเฉพาะโค้ด ตัวอย่างฉบับเต็มท้ายบทความจะรวมโครงสร้างและรูปแบบที่จำเป็นเข้าด้วยกัน

13. วิธีบันทึกและเปิดหน้าเว็บเพื่อดูผลลัพธ์

เมื่อเขียนไฟล์เสร็จ ให้บันทึกชื่อ index.html จากนั้นเปิดโฟลเดอร์ที่เก็บไฟล์และดับเบิลคลิกไฟล์ดังกล่าว เบราว์เซอร์จะเปิดหน้าเว็บขึ้นมา หากแก้ไขโค้ดภายหลัง ให้บันทึกไฟล์ก่อนแล้วกลับไปกดรีเฟรชในเบราว์เซอร์ เพื่อดูผลลัพธ์ล่าสุด
อาการสิ่งที่ควรตรวจสอบ
หน้าเว็บไม่แสดงตามที่คาดตรวจสอบว่าบันทึกไฟล์แล้วและเปิดไฟล์ถูกตัว
ภาษาไทยแสดงผิดปกติตรวจสอบว่ามี meta charset="UTF-8"
CSS ไม่เปลี่ยนแปลงตรวจสอบชื่อ selector ว่าตรงกับ HTML หรือไม่
หน้าเว็บล้นจอตรวจสอบความกว้างตายตัวและเพิ่มการจัดวางแบบยืดหยุ่น
เห็นโค้ดเป็นข้อความตรวจสอบนามสกุลไฟล์และแท็ก HTML ว่าครบหรือไม่

14. สรุปสิ่งที่ได้เรียนรู้

ในบทเรียนนี้ คุณได้รู้จักหน้าที่ของ HTML และ CSS วิธีเตรียมไฟล์ index.html โครงสร้างเอกสาร HTML การสร้างหัวข้อและย่อหน้า การกำหนดสีและขนาดตัวอักษร การตกแต่งกล่องเนื้อหาและปุ่ม การจัดระยะห่าง และแนวคิด Responsive Design สิ่งสำคัญคือการทดลองเปลี่ยนค่าทีละอย่างและสังเกตผลที่เกิดขึ้น เพื่อให้เข้าใจว่าโค้ดแต่ละส่วนมีผลต่อหน้าเว็บอย่างไร

15. แบบฝึกหัดท้ายบท

ลองแก้ไขหน้าเว็บฉบับเต็มที่อยู่ท้ายบทความ โดยเปลี่ยนชื่อเว็บไซต์ เปลี่ยนสีหลัก ปรับข้อความในปุ่ม เพิ่มคำอธิบายในกล่องเนื้อหา และเปลี่ยนสีพื้นหลัง จากนั้นบันทึกไฟล์แล้วรีเฟรชเบราว์เซอร์เพื่อดูความเปลี่ยนแปลง เป้าหมายไม่ใช่การจำโค้ดทุกบรรทัด แต่เป็นการเข้าใจว่าคุณสามารถแก้ไขส่วนใดเพื่อให้ได้ผลลัพธ์ที่ต้องการ
ภารกิจลงมือทำทำให้หน้าเว็บมีชื่อของคุณเอง มีหัวข้อหลักอย่างน้อยหนึ่งหัวข้อ มีกล่องเนื้อหาอย่างน้อยสองกล่อง และมีปุ่มที่อ่านง่าย จากนั้นทดลองเปิดหน้าเว็บทั้งบนหน้าจอใหญ่และหน้าจอเล็ก

Full Page Code — เว็บไซต์ตัวอย่างฉบับสมบูรณ์

โค้ดชุดสุดท้ายนี้เป็นหน้าเว็บฉบับเต็มที่รวม HTML และ CSS ไว้ในไฟล์เดียว สามารถคัดลอกทั้งหมดไปบันทึกเป็น index.html แล้วเปิดในเว็บเบราว์เซอร์ได้ทันที หน้าเว็บมีส่วนหัว เมนูแนะนำ ส่วน Hero กล่องข้อมูลสามใบ ปุ่ม ลิงก์นำทาง และส่วนท้าย พร้อม CSS สำหรับหน้าจอขนาดเล็ก โค้ดนี้ตั้งใจให้เป็นตัวอย่างที่เห็นผลชัดเจนโดยไม่ต้องใช้ไลบรารีภายนอกหรือ JavaScript

Full Page — Copy & Run | index.html

<!DOCTYPE html>
<html lang="th">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="description" content="ตัวอย่างเว็บไซต์แรกที่สร้างด้วย HTML และ CSS">
  <title>My First Website | เว็บไซต์แรกของฉัน</title>
  <style>
    :root {
      --primary: #4f46e5;
      --primary-dark: #3730a3;
      --accent: #06b6d4;
      --ink: #172033;
      --muted: #64748b;
      --surface: #ffffff;
      --page: #f1f5f9;
      --border: #e2e8f0;
      --radius: 20px;
      --shadow: 0 16px 40px rgba(30, 41, 59, 0.09);
    }

    * {
      box-sizing: border-box;
    }

    html {
      scroll-behavior: smooth;
    }

    body {
      margin: 0;
      font-family: Tahoma, Arial, sans-serif;
      color: var(--ink);
      background: var(--page);
      line-height: 1.75;
    }

    a {
      color: inherit;
    }

    .container {
      width: min(1100px, calc(100% - 40px));
      margin: 0 auto;
    }

    .site-header {
      background: var(--surface);
      border-bottom: 1px solid var(--border);
    }

    .nav {
      min-height: 76px;
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 20px;
    }

    .brand {
      display: inline-flex;
      align-items: center;
      gap: 11px;
      color: var(--primary-dark);
      font-size: 1.15rem;
      font-weight: 800;
      text-decoration: none;
    }

    .brand-mark {
      display: grid;
      width: 42px;
      height: 42px;
      place-items: center;
      border-radius: 13px;
      color: #ffffff;
      background: linear-gradient(135deg, var(--primary), var(--accent));
      font-size: 1.2rem;
    }

    .nav-links {
      display: flex;
      align-items: center;
      gap: 22px;
    }

    .nav-links a {
      color: var(--muted);
      font-size: 0.92rem;
      font-weight: 700;
      text-decoration: none;
    }

    .nav-links a:hover {
      color: var(--primary);
    }

    .hero {
      position: relative;
      overflow: hidden;
      padding: 76px 0 82px;
      color: #ffffff;
      background: linear-gradient(130deg, #312e81 0%, #4f46e5 52%, #0891b2 100%);
    }

    .hero::after {
      position: absolute;
      top: -130px;
      right: -80px;
      width: 360px;
      height: 360px;
      border: 55px solid rgba(255, 255, 255, 0.08);
      border-radius: 50%;
      content: "";
      pointer-events: none;
    }

    .hero-content {
      position: relative;
      z-index: 1;
      max-width: 760px;
    }

    .eyebrow {
      display: inline-block;
      margin-bottom: 18px;
      padding: 6px 13px;
      border: 1px solid rgba(255, 255, 255, 0.28);
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.1);
      font-size: 0.85rem;
      font-weight: 700;
    }

    .hero h1 {
      max-width: 720px;
      margin: 0 0 18px;
      font-size: clamp(2.2rem, 6vw, 4.2rem);
      line-height: 1.2;
      letter-spacing: -1.5px;
    }

    .hero p {
      max-width: 620px;
      margin: 0 0 28px;
      color: #e0e7ff;
      font-size: 1.08rem;
    }

    .button-row {
      display: flex;
      flex-wrap: wrap;
      gap: 12px;
    }

    .button {
      display: inline-flex;
      min-height: 48px;
      align-items: center;
      justify-content: center;
      padding: 12px 21px;
      border: 1px solid transparent;
      border-radius: 12px;
      font-weight: 800;
      text-decoration: none;
      transition: transform 160ms ease, background 160ms ease;
    }

    .button:hover {
      transform: translateY(-2px);
    }

    .button-light {
      color: var(--primary-dark);
      background: #ffffff;
    }

    .button-outline {
      color: #ffffff;
      border-color: rgba(255, 255, 255, 0.55);
      background: rgba(255, 255, 255, 0.08);
    }

    .section {
      padding: 68px 0;
    }

    .section-heading {
      max-width: 650px;
      margin: 0 auto 34px;
      text-align: center;
    }

    .section-heading .kicker {
      margin: 0 0 8px;
      color: var(--primary);
      font-size: 0.85rem;
      font-weight: 800;
      letter-spacing: 1.2px;
      text-transform: uppercase;
    }

    .section-heading h2 {
      margin: 0 0 12px;
      font-size: clamp(1.7rem, 4vw, 2.4rem);
      line-height: 1.3;
    }

    .section-heading p {
      margin: 0;
      color: var(--muted);
    }

    .cards {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 22px;
    }

    .card {
      padding: 27px;
      border: 1px solid var(--border);
      border-radius: var(--radius);
      background: var(--surface);
      box-shadow: var(--shadow);
    }

    .card-icon {
      display: grid;
      width: 52px;
      height: 52px;
      margin-bottom: 18px;
      place-items: center;
      border-radius: 16px;
      background: #eef2ff;
      font-size: 1.6rem;
    }

    .card:nth-child(2) .card-icon {
      background: #cffafe;
    }

    .card:nth-child(3) .card-icon {
      background: #dcfce7;
    }

    .card h3 {
      margin: 0 0 10px;
      font-size: 1.2rem;
    }

    .card p {
      margin: 0;
      color: var(--muted);
    }

    .demo-section {
      padding: 0 0 72px;
    }

    .demo-panel {
      display: grid;
      grid-template-columns: 1fr 1fr;
      overflow: hidden;
      border: 1px solid var(--border);
      border-radius: 24px;
      background: var(--surface);
      box-shadow: var(--shadow);
    }

    .demo-copy {
      padding: 36px;
    }

    .demo-copy h2 {
      margin: 0 0 14px;
      font-size: 1.8rem;
      line-height: 1.35;
    }

    .demo-copy p {
      color: var(--muted);
    }

    .check-list {
      display: grid;
      gap: 10px;
      margin: 20px 0 0;
      padding: 0;
      list-style: none;
    }

    .check-list li::before {
      margin-right: 10px;
      color: #059669;
      font-weight: 900;
      content: "✓";
    }

    .code-window {
      display: flex;
      min-width: 0;
      flex-direction: column;
      justify-content: center;
      padding: 26px;
      color: #e2e8f0;
      background: #0f172a;
    }

    .window-bar {
      display: flex;
      gap: 7px;
      margin-bottom: 22px;
    }

    .window-dot {
      width: 10px;
      height: 10px;
      border-radius: 50%;
      background: #fb7185;
    }

    .window-dot:nth-child(2) {
      background: #fbbf24;
    }

    .window-dot:nth-child(3) {
      background: #34d399;
    }

    .code-window pre {
      overflow-x: auto;
      margin: 0;
      font-family: Consolas, Monaco, monospace;
      font-size: 0.9rem;
      line-height: 1.9;
      white-space: pre-wrap;
      overflow-wrap: anywhere;
    }

    .cta {
      padding: 48px 24px;
      border-radius: 24px;
      color: #ffffff;
      background: linear-gradient(120deg, #4338ca, #0891b2);
      text-align: center;
    }

    .cta h2 {
      margin: 0 0 10px;
      font-size: clamp(1.6rem, 4vw, 2.3rem);
    }

    .cta p {
      max-width: 580px;
      margin: 0 auto 22px;
      color: #e0f2fe;
    }

    .site-footer {
      padding: 25px 0;
      border-top: 1px solid var(--border);
      color: var(--muted);
      background: #ffffff;
      text-align: center;
      font-size: 0.9rem;
    }

    @media (max-width: 760px) {
      .nav {
        padding: 14px 0;
        align-items: flex-start;
        flex-direction: column;
      }

      .nav-links {
        flex-wrap: wrap;
        gap: 12px 18px;
      }

      .hero {
        padding: 56px 0 62px;
      }

      .cards {
        grid-template-columns: 1fr;
      }

      .demo-panel {
        grid-template-columns: 1fr;
      }

      .demo-copy {
        padding: 27px;
      }

      .section {
        padding: 52px 0;
      }
    }

    @media (prefers-reduced-motion: reduce) {
      html {
        scroll-behavior: auto;
      }

      .button {
        transition: none;
      }
    }
  </style>
</head>
<body>
  <header class="site-header">
    <div class="container nav">
      <a class="brand" href="#home" aria-label="My First Website หน้าหลัก">
        <span class="brand-mark" aria-hidden="true">&lt;/&gt;</span>
        <span>My First Website</span>
      </a>
      <nav class="nav-links" aria-label="เมนูหลัก">
        <a href="#home">หน้าหลัก</a>
        <a href="#features">สิ่งที่ได้เรียนรู้</a>
        <a href="#about">เกี่ยวกับบทเรียน</a>
      </nav>
    </div>
  </header>

  <main>
    <section class="hero" id="home">
      <div class="container hero-content">
        <span class="eyebrow">HTML + CSS · Beginner Project</span>
        <h1>เริ่มต้นสร้างเว็บไซต์แรกของคุณ</h1>
        <p>เปลี่ยนจากบรรทัดโค้ดให้กลายเป็นหน้าเว็บจริง เรียนรู้โครงสร้าง HTML และการตกแต่งด้วย CSS ผ่านตัวอย่างที่ทดลองแก้ไขได้ด้วยตัวเอง</p>
        <div class="button-row">
          <a class="button button-light" href="#features">เริ่มสำรวจเว็บไซต์</a>
          <a class="button button-outline" href="#about">ดูสิ่งที่ได้เรียนรู้</a>
        </div>
      </div>
    </section>

    <section class="section" id="features">
      <div class="container">
        <div class="section-heading">
          <p class="kicker">What You Will Learn</p>
          <h2>พื้นฐานที่ช่วยให้คุณสร้างหน้าเว็บได้</h2>
          <p>เว็บไซต์นี้แสดงแนวคิดสำคัญสามส่วนที่ทำงานร่วมกัน เพื่อสร้างหน้าเว็บที่อ่านง่ายและดูเป็นระเบียบ</p>
        </div>

        <div class="cards">
          <article class="card">
            <div class="card-icon" aria-hidden="true">🧱</div>
            <h3>HTML Structure</h3>
            <p>จัดโครงสร้างเนื้อหาให้เป็นหัวข้อ ย่อหน้า ส่วนเนื้อหา และลิงก์ที่มีความหมาย</p>
          </article>
          <article class="card">
            <div class="card-icon" aria-hidden="true">🎨</div>
            <h3>CSS Styling</h3>
            <p>กำหนดสี ตัวอักษร ระยะห่าง ขอบมน เงา และองค์ประกอบที่ช่วยให้หน้าเว็บน่าอ่าน</p>
          </article>
          <article class="card">
            <div class="card-icon" aria-hidden="true">📱</div>
            <h3>Responsive Layout</h3>
            <p>ปรับการจัดวางให้ยืดหยุ่น เพื่อให้หน้าเว็บใช้งานได้ทั้งบนคอมพิวเตอร์และโทรศัพท์</p>
          </article>
        </div>
      </div>
    </section>

    <section class="demo-section" id="about">
      <div class="container">
        <div class="demo-panel">
          <div class="demo-copy">
            <h2>โค้ดเพียงไฟล์เดียว ก็สร้างหน้าเว็บได้</h2>
            <p>ตัวอย่างนี้รวม HTML และ CSS ไว้ในเอกสารเดียว จึงไม่ต้องติดตั้งไลบรารีเพิ่มเติม เพียงบันทึกเป็น index.html แล้วเปิดด้วยเว็บเบราว์เซอร์</p>
            <ul class="check-list">
              <li>มีโครงสร้าง HTML ครบถ้วน</li>
              <li>มี CSS สำหรับสีและการจัดวาง</li>
              <li>มีส่วนหัว การ์ดเนื้อหา และปุ่ม</li>
              <li>ปรับหน้าจอขนาดเล็กได้</li>
            </ul>
          </div>
          <div class="code-window" aria-label="ภาพตัวอย่างโค้ด">
            <div class="window-bar" aria-hidden="true">
              <span class="window-dot"></span>
              <span class="window-dot"></span>
              <span class="window-dot"></span>
            </div>
            <pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang="th"&gt;
  &lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;title&gt;My First Website&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;เว็บไซต์แรกของฉัน&lt;/h1&gt;
    &lt;p&gt;สร้างด้วย HTML และ CSS&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre>
          </div>
        </div>
      </div>
    </section>

    <section class="section">
      <div class="container">
        <div class="cta">
          <h2>เริ่มจากสิ่งเล็ก ๆ แล้วค่อยพัฒนาให้ดีขึ้น</h2>
          <p>ลองเปลี่ยนหัวข้อ สีปุ่ม และข้อความในการ์ด แล้วบันทึกไฟล์เพื่อดูผลลัพธ์จริงในเบราว์เซอร์</p>
          <a class="button button-light" href="#home">กลับไปด้านบน ↑</a>
        </div>
      </div>
    </section>
  </main>

  <footer class="site-footer">
    <div class="container">
      <p>My First Website · สร้างด้วย HTML และ CSS</p>
    </div>
  </footer>
</body>
</html>
Reach within 500px of the page end and stay for at least 5 minutes to earn EXP once per day.

⏳ Reading timer is running...

🌐
Select Language
21 World Languages Supported