คอร์ส IT พื้นฐาน CSS 028_Float, การจัดตำแหน่ง, การจัดแนว
Float
ใน CSS float เป็นเทคนิคการจัดเลย์เอาต์ที่ใช้คุณสมบัติ float เพื่อทำให้อิลิเมนต์ลอยไปตามด้านซ้ายหรือขวาของคอนเทนเนอร์ ทำให้อิลิเมนต์อื่นสามารถล้อมรอบได้
ตัวอย่าง:
.div-left { float: left; } .div-right { float: right; } <div class="div-left">div-left</div> <div class="div-right">div-right</div>ผลลัพธ์:
อิลิเมนต์ float อาจทำให้ความสูงของอิลิเมนต์แม่ยุบตัว อาจส่งผลกระทบต่ออิลิเมนต์ DIV อื่น และอิลิเมนต์ float หลายตัวในแถวเดียวกันอาจทับซ้อนกัน จำเป็นต้องใช้คุณสมบัติ clear เพื่อควบคุมผลกระทบระหว่างกัน
ตัวอย่าง:
.div-left { float: left; } .div-right { float: right; } /* ใช้คุณสมบัติ `clear` เพื่อยกเลิกผลกระทบของอิลิเมนต์ float .content { clear: both; } */ <div class="div-left">div-left</div> <div class="div-right">div-right</div>
<div class="content"> นี่คือข้อความที่จะได้รับผลกระทบ </div>ผลลัพธ์:
ตัวอย่าง:
.float-left { float: left; } .float-right { float: right; } <img class="float-left" src="zhaojian1.jpg" alt="" srcset=""> <div class="float-right">25 มกราคม 2024</div><div class="float-right">หัวข้อบทความ หัวข้อบทความ หัวข้อบทความ</div>ผลลัพธ์:

Float เป็นเทคนิคยุคแรกที่ใช้สร้างเลย์เอาต์หลายคอลัมน์ แต่ในเลย์เอาต์สมัยใหม่ แนะนำให้ใช้เทคนิคเลย์เอาต์ที่ยืดหยุ่นกว่าอย่าง Flexbox หรือ Grid
การจัดตำแหน่ง
ใน CSS การจัดตำแหน่งหมายถึงการกำหนดโหมดการจัดตำแหน่งของอิลิเมนต์ผ่านคุณสมบัติ position รวมถึงการระบุตำแหน่งของอิลิเมนต์เมื่อเทียบกับอิลิเมนต์บรรพบุรุษที่ถูกจัดตำแหน่งที่ใกล้ที่สุดผ่านคุณสมบัติ top, right, bottom, left
- การจัดตำแหน่งจะเทียบกับอิลิเมนต์บรรพบุรุษที่ถูกจัดตำแหน่ง (position ไม่ใช่
static) ที่ใกล้ที่สุด หากไม่มีอิลิเมนต์บรรพบุรุษที่ถูกจัดตำแหน่ง จะเทียบกับบล็อกที่บรรจุเริ่มต้น (โดยปกติคืออิลิเมนต์<html>) - อิลิเมนต์ที่จัดตำแหน่งแบบ absolute และ fixed จะออกจากโฟลว์เอกสารปกติ ซึ่งอาจส่งผลต่อเลย์เอาต์ของอิลิเมนต์อื่น
- ค่าคุณสมบัติมักใช้พิกเซล (
px) หรือเปอร์เซ็นต์ (%)
การจัดตำแหน่งแบบ static
การจัดตำแหน่งแบบ static (Static Positioning) เป็นค่าเริ่มต้นของคุณสมบัติ position โดยปกติไม่จำเป็นต้องระบุอย่างชัดเจน อิลิเมนต์ที่จัดตำแหน่งแบบ static จะถูกจัดเรียงตามปกติในโฟลว์เอกสาร และไม่ได้รับผลกระทบจากคุณสมบัติ top, right, bottom, left
การจัดตำแหน่งแบบ initial
ใน CSS initial เป็นคำสำคัญที่ใช้รีเซ็ตค่าคุณสมบัติกลับไปเป็นค่าเริ่มต้น สำหรับคุณสมบัติ position ค่าเริ่มต้นคือ static การใช้ position: initial; เทียบเท่ากับการไม่กำหนดคุณสมบัติ position
การจัดตำแหน่งแบบ relative
อิลิเมนต์จะถูกจัดตำแหน่งเมื่อเทียบกับตำแหน่งปกติของตัวเอง
ตัวอย่าง:
.base { width: 200px; height: 200px; background-color: aquamarine; } .relative-example { position: relative; top: 100px; left: 20%; } <!-- <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br> ลองเพิ่ม br หรืออิลิเมนต์อื่น --> <div class="base relative-example"></div>ผลลัพธ์:

การจัดตำแหน่งแบบ absolute
อิลิเมนต์จะถูกจัดตำแหน่งเมื่อเทียบกับอิลิเมนต์บรรพบุรุษที่ถูกจัดตำแหน่งที่ใกล้ที่สุด
ตัวอย่าง:
.base { width: 200px; height: 200px; } .absolute-example { position: absolute; top: 50px; left: 100px; background-color: blueviolet; } <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br> <div class="base absolute-example"></div>ผลลัพธ์:

การจัดตำแหน่งแบบ fixed
อิลิเมนต์จะถูกจัดตำแหน่งเมื่อเทียบกับหน้าต่างเบราว์เซอร์ และจะอยู่ในตำแหน่งคงที่บนหน้าจอเสมอ
ตัวอย่าง:
.base { width: 200px; height: 200px; } .fixed-example { position: fixed; bottom: 40%; left: 40%; background-color: gold; } <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br> <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br> <div class="base fixed-example"></div> <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br> <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>ผลลัพธ์:

การจัดตำแหน่งแบบ sticky
อิลิเมนต์จะกลายเป็นการจัดตำแหน่งแบบ fixed เมื่อเลื่อนไปถึงตำแหน่งที่กำหนด มิฉะนั้นจะเป็นการจัดตำแหน่งแบบ relative
ตัวอย่าง:
.base { width: 200px; height: 200px; } .sticky-example { position: sticky; top: 10%; left: 40%; background-color: darkcyan; } <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br> <div class="base sticky-example"></div> <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br> <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br> <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br> <br>1<br>2<br>3<br>4<br>5<br>6<br>7<br>8<br>9<br>10<br>ผลลัพธ์:

การจัดตำแหน่งแบบสืบทอด inherit
อิลิเมนต์จะสืบทอดโหมดการจัดตำแหน่งจากอิลิเมนต์แม่
ตัวอย่าง:
.base { width: 200px; height: 200px; } .inherit-example { position: inherit; top: 100%; /* ระวังขอบเขต */ left: 100%; /* ระวังขอบเขต */ background-color: violet; } <div class="base relative-example"> <div class="base inherit-example"></div> </div>ผลลัพธ์:

ลำดับการซ้อน (อิลิเมนต์ที่ทับซ้อนกัน)
z-index เป็นคุณสมบัติ CSS สำหรับควบคุมลำดับการซ้อน ซึ่งกำหนดลำดับการแสดงผลของอิลิเมนต์ในการซ้อนแนวตั้ง กล่าวคืออิลิเมนต์ใดจะอยู่ด้านหน้าหรือด้านหลังอิลิเมนต์อื่น
- ค่า
z-indexสามารถเป็นค่าลบได้ - อิลิเมนต์ที่มี
z-indexมากกว่าจะบังอิลิเมนต์ที่มีค่าน้อยกว่า z-indexมีผลเฉพาะกับอิลิเมนต์ที่ถูกจัดตำแหน่ง (positionไม่ใช่static) เท่านั้นz-indexต้องการให้opacityของอิลิเมนต์ไม่เป็น 0
ตัวอย่าง:
.base { width: 200px; height: 200px; position: absolute; } .z-index-example1{ background-color: red; z-index: 9; } .z-index-example2{ background-color: blue; z-index: 1; } <div class="base z-index-example1"></div> <div class="base z-index-example2"></div>การจัดแนว
การจัดแนว CSS หมายถึงการควบคุมการจัดแนวแนวนอนและแนวตั้งของอิลิเมนต์ผ่านคุณสมบัติ CSS คุณสมบัติการจัดแนว CSS สามารถใช้กับอิลิเมนต์ใดก็ได้ รวมถึงข้อความ รูปภาพ ตาราง รายการ เป็นต้น
คุณสมบัติการจัดแนวทั่วไปมีค่าดังนี้:
- left: จัดแนวซ้าย
- center: จัดแนวกลาง
- right: จัดแนวขวา
- top: จัดแนวบน
- middle: จัดแนวกลาง
- bottom: จัดแนวล่าง
การจัดแนวแนวนอน text-align
ใช้สำหรับกำหนดการจัดแนวแนวนอนของเนื้อหาข้อความภายในกล่องอิลิเมนต์
ตัวอย่าง:
.text-center { text-align: center; /* จัดกลางแนวนอน */}.text-left { text-align: left; /* จัดแนวซ้าย */}.text-right { text-align: right; /* จัดแนวขวา */}.text-justify { text-align: justify; /* จัดแนวชิดขอบทั้งสองด้าน */} <div class="text-center">นี่คือข้อความ ABCDE 12345</div> <div class="text-left">นี่คือข้อความ ABCDE 12345</div> <div class="text-right">นี่คือข้อความ ABCDE 12345</div> <div class="text-justify">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed euismod velit vel sapien accumsan, ac efficitur nulla bibendum. Nullam posuere fermentum nulla, in ultricies leo gravida sit amet. Vestibulum ut mi vitae libero accumsan dapibus.</div>ผลลัพธ์:

การจัดแนวแนวตั้ง vertical-align
ใช้สำหรับกำหนดการจัดแนวแนวตั้งของอิลิเมนต์อินไลน์ภายในอิลิเมนต์ โดยปกติใช้กับอิลิเมนต์อินไลน์ และไม่มีผลโดยตรงต่ออิลิเมนต์บล็อก
ตัวอย่าง:
.base{ height: 150px;}.vertical-align-baseline { vertical-align: baseline; /* การจัดแนวเส้นฐานเริ่มต้น */}.vertical-align-top { vertical-align: top; /* จัดแนวบน */}.vertical-align-middle { vertical-align: middle; /* จัดแนวกลาง */}.vertical-align-bottom { vertical-align: bottom; /* จัดแนวล่าง */} <div class="base"> <img class="vertical-align-baseline" src="zhaojian1.jpg" alt="" srcset="">นี่คือข้อความ ABCDE 12345 </div> <div class="base"> <img class="vertical-align-top" src="zhaojian1.jpg" alt="" srcset="">นี่คือข้อความ ABCDE 12345 </div> <div class="base"> <img class="vertical-align-middle" src="zhaojian1.jpg" alt="" srcset="">นี่คือข้อความ ABCDE 12345 </div> <div class="base"> <img class="vertical-align-bottom" src="zhaojian1.jpg" alt="" srcset="">นี่คือข้อความ ABCDE 12345 </div>ผลลัพธ์:
