คุณสมบัติ CSS ที่เกี่ยวข้องกับการจัดเลย์เอาต์แบบคอลัมน์
บทความนี้อธิบายถึงคุณสมบัติ CSS ที่เกี่ยวข้องกับการจัดเลย์เอาต์แบบคอลัมน์
คุณสามารถเรียนรู้วิธีการอธิบายการจัดเลย์เอาต์แบบคอลัมน์
YouTube Video
HTML สำหรับการแสดงตัวอย่าง
css-columns.html
1<!DOCTYPE html>
2<html lang="en">
3<head>
4 <meta charset="UTF-8">
5 <meta name="viewport" content="width=device-width, initial-scale=1.0">
6 <title>CSS Properties Example</title>
7 <link rel="stylesheet" href="css-base.css">
8 <link rel="stylesheet" href="css-columns.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties For Columns</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Layout Related Properties</h2>
20 </header>
21 <article>
22 <h3>columns</h3>
23 <section style="width: 100%; height: 350px;">
24 <h4>Columns Example</h4>
25 <header><h4>columns: 100px 3; column-gap: 20px; column-rule: 2px solid #333;</h4></header>
26 <section class="sample-view">
27 <section class="columns-container">
28 <h5>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</h5>
29 <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla id odio sit amet eros feugiat semper.</p>
30 <p>Donec vehicula est non sapien sollicitudin, id tincidunt velit volutpat.</p>
31 <p>Pellentesque malesuada diam eu sem finibus scelerisque.</p>
32 <p>Integer eget dolor nec est dignissim fermentum ut eget nunc.</p>
33 <p>Morbi in nibh in lorem vestibulum sollicitudin.</p>
34 </section>
35 </section>
36 </section>
37 </article>
38 <article>
39 <h3>order</h3>
40 <section style="height: 300px;">
41 <header><h4>column-width: 250px</h4></header>
42 <section class="sample-view">
43 <div class="container">
44 <div class="item item-1">Item 1</div>
45 <div class="item item-2">Item 2</div>
46 <div class="item item-3">Item 3</div>
47 </div>
48 </section>
49 </section>
50 </article>
51 </main>
52</body>
53</html>
การจัดเลย์เอาต์แบบคอลัมน์
คอลัมน์
1.columns-container {
2 columns: 100px 3;
3 column-gap: 20px;
4 column-rule: 2px solid #333;
5}
6
7h5 {
8 column-span: all;
9}
คุณสมบัติ columns
ของ CSS ช่วยให้สามารถแสดงเนื้อหาที่ถูกแบ่งออกเป็นหลายคอลัมน์ได้อย่างสะดวก เพียงการกำหนดค่าเดียว คุณสามารถตั้งค่าความกว้างของคอลัมน์และจำนวนคอลัมน์ได้ง่าย ทำให้เหมาะกับการออกแบบที่ตอบสนองทุกอุปกรณ์ สิ่งนี้มีประสิทธิภาพอย่างยิ่งเมื่อจำเป็นต้องจัดเลย์เอาต์ที่ข้อความแสดงผลในแนวตั้งและจัดวางเป็นหลายคอลัมน์ เช่น ในหนังสือพิมพ์หรือแมกกาซีน
- ในตัวอย่างนี้ เนื้อหาถูกแบ่งออกเป็น 3 คอลัมน์ โดยมีช่องว่าง 20px และเส้นแบ่งคอลัมน์ขนาด 2px นอกจากนี้องค์ประกอบ
h5
ยังครอบคลุมหลายคอลัมน์
columns
เป็นคำย่อสำหรับคุณสมบัติ column-width
และ column-count
รูปแบบไวยากรณ์ของคุณสมบัติ columns
1columns: <column-width> <column-count>;
columns
มีรูปแบบดังนี้
<column-width>
: ระบุความกว้างของแต่ละคอลัมน์ คุณสามารถใช้ค่าauto
หรือหน่วยความยาวใด ๆ (เช่นpx
,em
,%
, เป็นต้น) ได้<column-count>
: ระบุจำนวนคอลัมน์ แสดงผลเป็นค่าตัวเลข
คุณสมบัติ column-width
1.container {
2 column-width: 250px;
3}
column-width
เป็นคุณสมบัติที่ใช้ระบุความกว้างขั้นต่ำของแต่ละคอลัมน์ เมื่อใช้ร่วมกับ column-count
จะทำให้สามารถจัดวางและปรับคอลัมน์ได้โดยอัตโนมัติ เบราว์เซอร์คำนึงถึงความกว้างของคอนเทนเนอร์และคำนวณจำนวนคอลัมน์ที่จำเป็นโดยอัตโนมัติ
- ในตัวอย่างนี้ ความกว้างของแต่ละคอลัมน์คือ 250px และจำนวนคอลัมน์ที่เหมาะสมจะถูกคำนวณตามความกว้างของคอนเทนเนอร์
คุณสมบัติ column-count
1.container {
2 column-count: 3;
3}
column-count
เป็นคุณสมบัติที่กำหนดจำนวนคอลัมน์ที่องค์ประกอบที่ระบุจะแบ่งออก แตกต่างจาก column-width
ซึ่งกำหนดจำนวนคอลัมน์ให้คงที่
- ในตัวอย่างนี้ เนื้อหาภายในคอนเทนเนอร์ถูกแบ่งออกเป็นสามคอลัมน์
คุณสมบัติ column-gap
1.container {
2 column-gap: 20px;
3}
column-gap
เป็นคุณสมบัติที่กำหนดระยะห่าง (ช่องว่าง) ระหว่างแต่ละคอลัมน์ มีคุณสมบัติร่วมของ CSS Grid ที่เรียกว่า gap
แต่ column-gap
มีประโยชน์เมื่อคุณต้องการปรับแต่งขอบเฉพาะระหว่างคอลัมน์
- ในตัวอย่างนี้ มีระยะห่าง 20px ระหว่างแต่ละคอลัมน์ ค่าตั้งต้นคือ 16px
คุณสมบัติ column-rule
1.container {
2 column-rule: 2px solid #333;
3}
column-rule
เป็นคุณสมบัติสำหรับวาดเส้นระหว่างคอลัมน์ มีไวยากรณ์คล้ายกับคุณสมบัติ border
และช่วยให้คุณกำหนดความกว้าง รูปแบบ และสีของเส้นได้
- ในตัวอย่างนี้ มีเส้นสีดำแบบทึบที่มีความกว้าง 2px แสดงระหว่างคอลัมน์
column-rule
สามารถแยกออกเป็นคุณสมบัติย่อยสามแบบดังนี้column-rule-width
: กำหนดความกว้างของเส้นcolumn-rule-style
: กำหนดรูปแบบของเส้น ตัวอย่างเช่น มีรูปแบบsolid
,dashed
,dotted
และอื่น ๆcolumn-rule-color
: กำหนดสีของเส้น
คุณสมบัติ column-span
1h5 {
2 column-span: all;
3}
column-span
เป็นคุณสมบัติที่กำหนดองค์ประกอบบางอย่างให้ครอบคลุมหลายคอลัมน์ ส่วนใหญ่จะถูกใช้กับองค์ประกอบเช่น หัวข้อหรือชื่อเรื่อง มีค่าที่เป็นไปได้สองค่า:
- none
: องค์ประกอบไม่ครอบคลุมคอลัมน์และอยู่ภายในหนึ่งคอลัมน์ นี่คือค่าตั้งต้น
- all
: องค์ประกอบจะแสดงโดยครอบคลุมทุกคอลัมน์
- ในตัวอย่างนี้ องค์ประกอบ
h5
จะแสดงโดยครอบคลุมหลายคอลัมน์
คุณสมบัติ column-fill
1.container {
2 column-fill: balance;
3}
column-fill
เป็นคุณสมบัติที่ใช้ควบคุมการจัดสรรเนื้อหาในคอลัมน์ ปกติแล้ว คอลัมน์จะถูกเติมเนื้อหาพอๆ กัน แต่คุณสมบัตินี้ช่วยให้คุณสามารถกำหนดรูปแบบการจัดวางที่แตกต่างได้ ค่าต่อไปนี้สามารถใช้งานได้:
- balance
: เนื้อหาจะถูกจัดวางให้เติมคอลัมน์อย่างสม่ำเสมอ นี่คือค่าตั้งต้น
- auto
: คอลัมน์จะถูกเติมอัตโนมัติ คอลัมน์สุดท้ายอาจมีความยาวมากกว่า
- การตั้งค่านี้จะปรับให้เนื้อหาสามารถกระจายอย่างสม่ำเสมอ
การใช้งานร่วมกับ Media Queries
1.container {
2 columns: 200px 3;
3}
4
5@media (max-width: 600px) {
6 .container {
7 columns: 1;
8 }
9}
คุณสมบัติ columns
สามารถใช้งานร่วมกับ media queries เพื่อรองรับการออกแบบที่ตอบสนอง คุณสามารถเปลี่ยนจำนวนคอลัมน์และความกว้างของคอลัมน์ตามขนาดหน้าจอที่แตกต่างกันได้อย่างยืดหยุ่น
- ในตัวอย่างนี้ เมื่อความกว้างของหน้าจอเท่ากับหรือน้อยกว่า 600px จะมี 1 คอลัมน์ สำหรับหน้าจอที่กว้างกว่า จะถูกแบ่งออกเป็น 3 คอลัมน์ โดยแต่ละคอลัมน์มีความกว้าง 200px
สรุป
คุณสมบัติ columns
ของ CSS เป็นเครื่องมือที่ทรงพลังสำหรับการสร้างเลย์เอาต์แบบหลายคอลัมน์ได้อย่างง่ายดาย คุณสมบัตินี้มีประโยชน์มากสำหรับการออกแบบที่ตอบสนองและเลย์เอาต์ข้อความที่ให้ความสำคัญกับความสามารถในการอ่าน ด้วยการผสมผสานคุณสมบัติที่เกี่ยวข้อง คุณสามารถปรับแต่งจำนวนและความกว้างของคอลัมน์ ช่องว่าง การตกแต่ง และอื่นๆ ได้อย่างยืดหยุ่น
สิ่งนี้ช่วยให้สามารถนำดีไซน์ที่ซับซ้อนได้ง่ายยิ่งขึ้น ดังนั้นโปรดใช้ประโยชน์จากคุณสมบัตินี้
order (ลำดับ)
1.container {
2 all:initial;
3 display: flex;
4}
5.item {
6 padding: 10px;
7 background-color: lightblue;
8 margin: 5px;
9}
10.item-1 {
11 order: 3;
12}
13.item-2 {
14 order: 1;
15}
16.item-3 {
17 order: 2;
18}
คุณสมบัติ order
ของ CSS ใช้ควบคุมลำดับการแสดงผลขององค์ประกอบเมื่อใช้เลย์เอาต์ Flexbox หรือ Grid โดยปกติแล้ว องค์ประกอบจะถูกแสดงผลตามโครงสร้าง HTML แต่คุณสามารถเปลี่ยนลำดับการแสดงผลด้วยคุณสมบัติ order
คุณสมบัตินี้ช่วยในการออกแบบอินเตอร์เฟซผู้ใช้งานที่ยืดหยุ่นและสร้างการออกแบบที่ตอบสนอง
- ในตัวอย่างนี้ รายการถูกกำหนดใน HTML เป็น
Item 1
,Item 2
,Item 3
แต่ลำดับการแสดงผลเปลี่ยนไปเป็นItem 2
,Item 3
,Item 1
เนื่องจากคุณสมบัติorder
ของ CSS
พื้นฐานของคุณสมบัติ order
คุณสมบัติ order
ถูกใช้กับไอเท็มที่อยู่ภายใน Flexbox หรือ Grid containers คุณกำหนดลำดับการจัดวางโดยตั้งค่าตัวเลขจำนวนเต็มให้กับแต่ละรายการ โดยค่าเริ่มต้น order
ของทุกรายการจะถูกตั้งค่าเป็น 0
โดยการเปลี่ยนค่านี้ คุณสามารถกำหนดลำดับการแสดงผลของรายการได้
ไวยกรณ์พื้นฐาน
1.item {
2 order: <integer>;
3}
- คุณสามารถระบุตัวเลขจำนวนเต็มใดๆ สำหรับค่า
order
สามารถใช้ค่าบวก ค่าลบ หรือศูนย์ได้ ยิ่งค่าน้อย องค์ประกอบจะแสดงก่อน และยิ่งค่ามาก องค์ประกอบจะแสดงทีหลัง
การใช้ค่าเป็นบวกและลบ
คุณยังสามารถกำหนดค่าลบให้กับคุณสมบัติ order
ได้ องค์ประกอบที่มีค่าลบจะแสดงก่อนลำดับค่าเริ่มต้น
1.item-1 {
2 order: -1;
3}
4.item-2 {
5 order: 2;
6}
7.item-3 {
8 order: 1;
9}
ในตัวอย่างนี้ Item 1
ถูกตั้งค่าเป็น order: -1
ดังนั้นจึงแสดงก่อน ในทางกลับกัน Item 3
ถูกตั้งค่าเป็น order: 1
และ Item 2
ถูกตั้งค่าเป็น order: 2
ดังนั้นจึงแสดงตามลำดับนั้น
order
ในการออกแบบที่ตอบสนองต่อขนาดหน้าจอ
ในการออกแบบที่ตอบสนองต่อขนาดหน้าจอ เป็นไปได้ที่จะเปลี่ยนลำดับขององค์ประกอบตามขนาดหน้าจอ ตัวอย่างเช่น ในมุมมองมือถือ คุณสามารถเปลี่ยนลำดับขององค์ประกอบเพื่อแสดงข้อมูลสำคัญก่อน
1.item-1 {
2 order: 1;
3}
4.item-2 {
5 order: 2;
6}
7.item-3 {
8 order: 3;
9}
10
11/* Change the order on screens with a width of 800px or less */
12@media (max-width: 800px) {
13 .item-1 {
14 order: 3;
15 }
16 .item-2 {
17 order: 1;
18 }
19 .item-3 {
20 order: 2;
21 }
22}
ในตัวอย่างนี้ ในมุมมองปกติ รายการจะแสดงตามลำดับ Item 1
, Item 2
, Item 3
แต่เมื่อความกว้างหน้าจอน้อยกว่า 600px Item 2
จะแสดงก่อน ตามด้วย Item 3
และ Item 1
จะอยู่ลำดับสุดท้าย
ข้อควรพิจารณาสำหรับ order
การใช้คุณสมบัติ order
อาจทำให้ลำดับในเชิงมองเห็นแตกต่างจากลำดับใน DOM tree ซึ่งอาจส่งผลกระทบต่อเครื่องมือสำหรับการเข้าถึง เช่น เครื่องอ่านข้อความบนหน้าจอ เมื่อมีการเปลี่ยนแปลงลำดับ การนำทางด้วยคีย์บอร์ดและเทคโนโลยีช่วยเหลืออื่นๆ อาจทำงานไม่เป็นไปตามที่คาดหวัง ดังนั้น จำเป็นต้องพิจารณาอย่างรอบคอบถึงผลกระทบต่อประสบการณ์ของผู้ใช้เมื่อใช้ order
สรุป
คุณสมบัติ order
ของ CSS เป็นเครื่องมือที่ทรงพลังที่ช่วยให้คุณควบคุมลำดับการแสดงผลขององค์ประกอบในเลย์เอาต์แบบ Flexbox หรือ Grid ได้อย่างง่ายดาย ด้วยการใช้ค่าบวกหรือลบ คุณสามารถเปลี่ยนลำดับขององค์ประกอบได้อย่างยืดหยุ่น ซึ่งมีประโยชน์อย่างยิ่งในการออกแบบที่ตอบสนองต่อขนาดหน้าจอ อย่างไรก็ตาม ควรให้ความสนใจกับการเข้าถึงและความแตกต่างระหว่างลำดับในเชิงมองเห็นและโครงสร้าง HTML หากพิจารณาเรื่องเหล่านี้อย่างเหมาะสม คุณสมบัติ order
จะมีประโยชน์ในการสร้างเลย์เอาต์ที่มีความยืดหยุ่นและมีความไดนามิกมากขึ้น
คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย