คุณสมบัติ CSS ที่เกี่ยวข้องกับการตกแต่งในโครงร่างกล่อง (Box Model)
บทความนี้อธิบายคุณสมบัติ CSS ที่เกี่ยวข้องกับการตกแต่งในโครงร่างกล่อง
คุณสามารถเรียนรู้วิธีการเขียนคุณสมบัติเช่นขอบเขต (Border) และเงา (Shadow)
YouTube Video
HTML สำหรับการแสดงตัวอย่าง
css-decoration.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-decoration.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>Box Decoration Related CSS Properties Example</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>Box Decoration</h2>
20 </header>
21 <article>
22 <h3>border</h3>
23 <section>
24 <header><h4>border: 3px solid #333</h4></header>
25 <section class="sample-view">
26 <div class="border-solid">Solid Border</div>
27 </section>
28 <header><h4>border: 3px dashed #666</h4></header>
29 <section class="sample-view">
30 <div class="border-dashed">Dashed Border</div>
31 </section>
32 <header><h4>border: 5px double #999</h4></header>
33 <section class="sample-view">
34 <div class="border-double">Double Border</div>
35 </section>
36 <header><h4>border: 2px solid #000; border-radius: 15px;</h4></header>
37 <section class="sample-view">
38 <div class="border-rounded">Rounded Border</div>
39 </section>
40 </section>
41 </article>
42
43 <article>
44 <h3>border-radius</h3>
45 <section>
46 <header><h4>border-radius: 20px</h4></header>
47 <section class="sample-view">
48 <div class="border-radius-all-rounded">All corners rounded</div>
49 </section>
50 <header><h4>border-top-left-radius: 20px</h4></header>
51 <section class="sample-view">
52 <div class="border-radius-top-left-rounded">Top-left rounded</div>
53 </section>
54 <header><h4>border-radius: 50px / 25px</h4></header>
55 <section class="sample-view">
56 <div class="border-radius-ellipse-corners">Ellipse corners</div>
57 </section>
58 </section>
59 </article>
60
61 <article>
62 <h3>outline</h3>
63 <section>
64 <h4>Outline Examples</h4>
65 <header><h4>outline: 2px solid red</h4></header>
66 <section class="sample-view">
67 <div class="outline-solid">Solid Red Outline</div>
68 </section>
69 <header><h4>outline: 3px dashed blue</h4></header>
70 <section class="sample-view">
71 <div class="outline-dashed">Dashed Blue Outline</div>
72 </section>
73 <header><h4>outline: 4px double green</h4></header>
74 <section class="sample-view">
75 <div class="outline-double">Double Green Outline</div>
76 </section>
77 <header><h4>outline: 2px solid purple; outline-offset: 10px;</h4></header>
78 <section class="sample-view">
79 <div class="outline-offset">Outline with Offset</div>
80 </section>
81 </section>
82 </article>
83
84 <article>
85 <h3>box-shadow</h3>
86 <section>
87 <h4>Box Shadow Examples</h4>
88 <header><h4>box-shadow: 10px 10px 5px rgba(0, 0, 0, 0.5)</h4></header>
89 <section class="sample-view">
90 <div class="box-shadow-basic-shadow">Basic Shadow</div>
91 </section>
92 <header><h4>box-shadow: inset 5px 5px 10px rgba(0, 0, 0, 0.3)</h4></header>
93 <section class="sample-view">
94 <div class="box-shadow-inset-shadow">Inset Shadow</div>
95 </section>
96 <header><h4>box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5), -5px -5px 10px rgba(255, 0, 0, 0.5);</h4></header>
97 <section class="sample-view">
98 <div class="box-shadow-multiple-shadow">Multiple Shadows</div>
99 </section>
100 </section>
101 </article>
102 </main>
103</body>
104</html>
การตกแต่ง
คุณสมบัติ border
1.border-solid, .border-dashed, .border-double, .border-rounded {
2 background-color: lightsteelblue;
3}
4
5.border-solid {
6 border: 3px solid #333;
7}
8
9.border-dashed {
10 border: 3px dashed #666;
11}
12
13.border-double {
14 border: 5px double #999;
15}
16
17.border-rounded {
18 border: 2px solid #000;
19 border-radius: 15px;
20}
คุณสมบัติ border
ใช้ใน CSS เพื่อกำหนดกรอบขององค์ประกอบ border
ประกอบด้วยสามองค์ประกอบ: ความกว้าง (width), รูปแบบ (style), และสี (color) ที่รวมกันเพื่อกำหนดกรอบขององค์ประกอบ
โครงสร้างพื้นฐานของ border
1/* Shorthand syntax */
2border: [border-width] [border-style] [border-color];
3
4/* Example of border property */
5border: 5px solid white;
6
7/* Example of individual properties */
8border-width: 5px;
9border-style: solid;
10border-color: black;
-
ใช้
border-width
เพื่อระบุความหนาของขอบ หน่วยสามารถระบุได้เป็นpx
,em
,%
, เป็นต้น -
ระบุประเภทของขอบด้วย
border-style
คุณสามารถระบุมูลค่าดังต่อไปนี้- ค่ารูปแบบ (Style Values):
none
(ไม่มีขอบ)solid
(เส้นทึบ)dotted
(เส้นจุด)dashed
(เส้นประ)double
(เส้นคู่)groove
(เส้นร่อง)ridge
(เส้นสันขึ้น)inset
(เส้นเงาด้านใน)outset
(เส้นเงาด้านนอก)
- ค่ารูปแบบ (Style Values):
ระบุสีของขอบด้วย border-color
สีสามารถระบุได้โดยใช้ชื่อสี, rgb()
, rgba()
, hex
, เป็นต้น
ตั้งค่ารายบุคคลสำหรับแต่ละด้าน
1.box {
2 border-top: 3px solid red; /* Top border: 3px solid red */
3 border-right: 5px dashed blue; /* Right border: 5px dashed blue */
4 border-bottom: 2px double green; /* Bottom border: 2px double green */
5 border-left: 1px dotted black; /* Left border: 1px dotted black */
6}
คุณสามารถตั้งค่ารูปแบบที่แตกต่างกันสำหรับแต่ละด้านได้ เช่นนี้
ตั้งค่าขนาด ความหนา สไตล์ และสีแบบรายบุคคล
1.box {
2 /* Specify border width for top, right, bottom, and left */
3 border-width: 2px 4px 6px 8px;
4
5 /* Specify border style for top, right, bottom, and left */
6 border-style: solid dotted dashed double;
7
8 /* Specify border color for top, right, bottom, and left */
9 border-color: red green blue yellow;
10}
คุณยังสามารถกำหนดแต่ละลักษณะได้แยกกันโดยใช้ border-width
, border-style
และ border-color
การใช้ร่วมกับ border-radius
1.box-rounded {
2 border: 2px solid #000;
3 border-radius: 10px; /* Round corners by 10px */
4}
การใช้คุณสมบัติ border-radius
คุณสามารถปรับมุมกรอบให้โค้งมนได้
คุณสมบัติ border-radius
1.border-radius-all-rounded, .border-radius-top-left-rounded, .border-radius-ellipse-corners {
2 background-color: lightsteelblue;
3}
4
5/* Round all corners */
6.border-radius-all-rounded {
7 border-radius: 20px;
8}
9
10/* Round only the top-left corner */
11.border-radius-top-left-rounded {
12 border-top-left-radius: 20px;
13}
14
15/* Elliptical corners */
16.border-radius-ellipse-corners {
17 border-radius: 50px / 25px;
18}
คุณสมบัติ border-radius
ใช้สำหรับปรับมุมขององค์ประกอบให้โค้งมน คุณสามารถทำให้มุมทั้งสี่ขององค์ประกอบ HTML โค้งอย่างราบรื่น เปลี่ยนรูปสี่เหลี่ยมผืนผ้าหรือสี่เหลี่ยมจัตุรัสให้กลายเป็นการออกแบบโค้งมน
คำอธิบาย:
border-radius-all-rounded
เป็นคลาสที่ปรับให้มุมทั้งหมดโค้งมนด้วยค่า 20 พิกเซล ทำให้กล่องมีมุมมนอย่างนุ่มนวลborder-radius-top-left-rounded
เป็นคลาสที่ปรับเฉพาะมุมซ้ายบนให้โค้งมนด้วยค่า 20 พิกเซล โดยที่มุมอื่นยังคงเหลี่ยมอยู่border-radius-ellipse-corners
เป็นคลาสที่สร้างมุมรูปวงรี ทำให้กล่องมีมุมโค้งเป็นรูปวงรีในแนวนอน
รูปแบบของคุณสมบัติ border-radius
1border-radius: value;
2border-radius: top-left-and-bottom-right top-right-and-bottom-left;
3border-radius: top-left top-right bottom-right bottom-left;
4border-top-left-radius: value;
5border-top-right-radius: value;
6border-bottom-right-radius: value;
7border-bottom-left-radius: value;
- ค่าของคุณสมบัติ
border-radius
โดยปกติจะระบุเป็นพิกเซลหรือเปอร์เซ็นต์ คุณสามารถกำหนดค่าได้ตั้งแต่ 1 ถึง 4 ค่า- การกำหนดค่าหนึ่งค่า จะทำให้มุมทั้งหมดโค้งมนเท่ากัน
- การกำหนดค่าสองค่า ค่าที่ 1 จะถูกใช้กับมุมซ้ายบนและขวาล่าง และค่าที่ 2 จะถูกใช้กับมุมขวาบนและซ้ายล่าง
- การกำหนดค่าสี่ค่า คุณสามารถตั้งค่ารัศมีที่แตกต่างกันสำหรับแต่ละมุมได้ ค่าจะถูกนำมาใช้ตามเข็มนาฬิกา เริ่มจากมุมซ้ายบน
- คุณสามารถกำหนดค่าแยกเฉพาะได้ เช่น
border-top-left-radius
1border-radius: 50px / 25px;
- คุณสมบัติ
border-radius
ยังสามารถกำหนดรัศมีในแนวตั้งและแนวนอนแยกกันได้ เพื่อให้มุมเป็นรูปวงรี ในกรณีนี้ ให้แยกออกด้วย/
- ตัวอย่างเช่น การระบุค่า
50px / 25px
จะทำให้รัศมีแนวนอนมีค่า 50 พิกเซล และรัศมีแนวตั้งมีค่า 25 พิกเซล
- ตัวอย่างเช่น การระบุค่า
สรุป
border-radius
เป็นคุณสมบัติที่ใช้สำหรับปรับมุมขององค์ประกอบให้โค้งมน- คุณสามารถกำหนดความโค้งมนของมุมในหน่วยพิกเซลหรือเปอร์เซ็นต์ ใช้กับทุกมุมหรือเฉพาะเจาะจงมุม หรือทำให้เป็นรูปทรงวงรี
- มันมีประโยชน์สำหรับการออกแบบที่ยืดหยุ่นและการปรับแต่งส่วนติดต่อผู้ใช้
คุณสมบัติ outline
1.outline-solid, .outline-dashed, .outline-double, .outline-offset {
2 background-color: lightsteelblue;
3}
4
5.outline-solid {
6 outline: 2px solid red;
7}
8
9.outline-dashed {
10 outline: 3px dashed blue;
11}
12
13.outline-double {
14 outline: 4px double green;
15}
16
17.outline-offset {
18 outline: 2px solid purple;
19 outline-offset: 10px;
20}
คุณสมบัติ outline
เป็นคุณสมบัติ CSS ที่ใช้กำหนดเส้นที่วาดรอบๆ องค์ประกอบ
outline
คล้ายกับ border
แต่แตกต่างกันในจุดต่อไปนี้:
outline
ไม่ส่งผลต่อรูปแบบกล่องขององค์ประกอบ ดังนั้นจึงไม่ส่งผลกระทบต่อเลย์เอาต์ขององค์ประกอบ- เนื่องจาก
outline
ถูกวาดอยู่นอกองค์ประกอบ มันจึงปรากฏอยู่นอกborder
border
ถูกวาดอยู่ภายในองค์ประกอบ ดังนั้นมันสามารถส่งผลต่อขนาดและเลย์เอาต์ขององค์ประกอบได้
ในตัวอย่างนี้ คุณสมบัติ outline
ถูกกำหนด ดังนี้:
- คลาส
outline-solid
กำหนดขอบหนา 2px สีแดงแบบทึบ - คลาส
outline-dashed
กำหนดขอบเส้นประสีน้ำเงินขนาด 3px - คลาส
outline-double
กำหนดขอบสองเส้นสีเขียวหนา 4px - คลาส
outline-offset
กำหนดระยะห่าง 10px ระหว่างขอบกับองค์ประกอบ
ไวยกรณ์พื้นฐาน
1element {
2 outline: outline-width outline-style outline-color;
3 outline-offset: 10px;
4}
outline-width
outline-width
ใช้กำหนดความหนาของขอบ- คุณสามารถกำหนดค่าเช่น
thin
,medium
,thick
หรือในหน่วยเช่นpx
,em
outline-style
outline-style
ใช้กำหนดรูปแบบของขอบ- คุณสามารถกำหนดรูปแบบ เช่น
solid
,dotted
,dashed
,double
,groove
,ridge
,inset
,outset
,none
เป็นต้น
outline-color
outline-color
ใช้กำหนดสีของขอบ- คุณสามารถกำหนดสีได้โดยใช้ชื่อ, HEX, RGB เป็นต้น
outline-offset
outline-offset
ใช้กำหนดระยะห่างระหว่างขอบกับองค์ประกอบ- คุณสามารถกำหนดค่าได้ในหน่วยต่างๆ เช่น
px
,em
เป็นต้น
คุณสมบัติ box-shadow
1.box-shadow-basic-shadow, .box-shadow-inset-shadow, .box-shadow-multiple-shadow {
2 background-color: lightsteelblue;
3}
4
5/* Basic shadow */
6.box-shadow-basic-shadow {
7 box-shadow: 10px 10px 5px rgba(0, 0, 0, 0.5);
8}
9
10/* Inner shadow */
11.box-shadow-inset-shadow {
12 box-shadow: inset 5px 5px 10px rgba(0, 0, 0, 0.3);
13}
14
15/* Multiple shadows */
16.box-shadow-multiple-shadow {
17 box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5),
18 -5px -5px 10px rgba(255, 0, 0, 0.5);
19}
คุณสมบัติ box-shadow
ใช้สำหรับเพิ่มเงาให้กับองค์ประกอบต่างๆ ด้วยการใช้คุณสมบัตินี้ คุณสามารถสร้างเงารอบๆ องค์ประกอบเพื่อแสดงความลึกและมิติ
คำอธิบาย:
-
ในคลาส
box-shadow-basic-shadow
จะมีเงาดำเบลอแสดงอยู่ที่มุมล่างขวาขององค์ประกอบ -
ในคลาส
box-shadow-inset-shadow
เงาเบลอจะแสดงอยู่ภายในองค์ประกอบ เมื่อเงาเข้าสู่ด้านใน คุณสามารถสร้างดีไซน์ที่ยุบตัวลงได้ -
ในคลาส
box-shadow-multiple-shadow
จะมีเงาสองสี คือ ดำและแดง ถูกใช้กับองค์ประกอบ เนื่องจากเงาแสดงในตำแหน่งที่ต่างกัน จึงทำให้เกิดเอฟเฟกต์สามมิติ
รูปแบบคุณสมบัติ box-shadow
1box-shadow: [1:horizontal offset] [2:vertical offset] [3:blur radius] [4:spread radius] [5:color];
2box-shadow: inset [1:horizontal offset] [2:vertical offset] [3:blur radius] [4:spread radius] [5:color];
ความหมายของแต่ละค่า
horizontal offset
ตัวแรกคือค่าการเลื่อนในแนวนอนที่ระบุตำแหน่งของเงาจากด้านซ้ายขององค์ประกอบ การระบุค่าบวกจะทำให้เงาอยู่ทางขวา และค่าลบจะทำให้เงาอยู่ทางซ้าย
vertical offset
ตัวที่สองคือค่าการเลื่อนในแนวตั้งที่ระบุตำแหน่งของเงาจากด้านบนขององค์ประกอบ การระบุค่าบวกจะทำให้เงาอยู่ด้านล่าง และค่าลบจะทำให้เงาอยู่ด้านบน
blur radius
ตัวที่สามคือค่าความเบลอที่ระบุระดับความเบลอของเงา ค่ายิ่งใหญ่ เงายิ่งกระจายมากขึ้น ซึ่งส่งผลให้เงาเบลอมากขึ้น การระบุค่าบวกจะทำให้เงาอยู่ด้านล่าง และค่าลบจะทำให้เงาอยู่ด้านบน ค่านี้เป็นค่าทางเลือก และค่าเริ่มต้นคือ 0
ซึ่งหมายความว่าเงาจะไม่มีการเบลอ
spread radius
ตัวที่สี่คือค่ารัศมีการกระจายที่ระบุระดับการกระจายของเงา การระบุค่าบวกจะทำให้เงาใหญ่ขึ้น ในขณะที่ค่าลบจะทำให้เงาหดตัวลง ค่านี้เป็นค่าทางเลือกเช่นเดียวกัน
color
ตัวที่ห้าคือค่าสีซึ่งระบุสีของเงา สามารถตั้งค่าสีได้โดยใช้ชื่อสี RGB HEX HSL หรือโมเดลสีอื่นๆ ที่ CSS รองรับ หากไม่ได้ระบุไว้ จะใช้ค่าสีของข้อความเริ่มต้นขององค์ประกอบ (ค่าของคุณสมบัติ color
)
คุณยังสามารถระบุคำสำคัญ inset
ได้ก่อน การระบุคำสำคัญ inset
จะทำให้เงาถูกวาดไว้ภายในองค์ประกอบแทนที่จะอยู่นอก สามารถตั้งค่าเงาหลายตัวโดยแยกด้วยเครื่องหมายจุลภาค
ตัวอย่างของ box-shadow
ตัวอย่างเงาพื้นฐาน
1div {
2 box-shadow: 10px 10px 5px rgba(0, 0, 0, 0.5);
3}
- การเลื่อนในแนวนอน คือ
10px
, ทำให้เกิดเงา 10 พิกเซลไปทางขวา - การเลื่อนในแนวตั้ง คือ
10px
, ทำให้เกิดเงา 10 พิกเซลลงด้านล่าง - ค่ารัศมีเบลอ คือ
5px
, ทำให้เงาเบลอเป็นระยะ 5 พิกเซล - สี คือ
rgba(0, 0, 0, 0.5)
, ทำให้เกิดสีดำโปร่งแสง
ตัวอย่างเงาภายใน
1div {
2 box-shadow: inset 5px 5px 10px rgba(0, 0, 0, 0.3);
3}
- การใช้
inset
จะวาดเงาไว้ภายในองค์ประกอบ
ตัวอย่างของเงาหลายชั้น
1div {
2 box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5), -5px -5px 10px rgba(255, 0, 0, 0.5);
3}
- คุณสามารถตั้งค่าเงาหลายชั้นโดยแยกด้วยเครื่องหมายจุลภาค ในตัวอย่างนี้ มีการใช้เงาสองชั้น: เงาสีดำและเงาสีแดง
สรุป
box-shadow
เป็นคุณสมบัติที่ใช้เพิ่มเงาให้กับองค์ประกอบเพื่อสร้างความลึก- โดยการรวมค่าเลื่อนในแนวนอนและแนวตั้ง, การเบลอ, รัศมีการกระจาย และสี คุณสามารถสร้างเอฟเฟกต์ได้หลากหลาย
- คุณสามารถวาดเงาภายในด้วย
inset
และยังสามารถตั้งค่าเงาหลายชั้นพร้อมกันได้
คุณสามารถติดตามบทความข้างต้นโดยใช้ Visual Studio Code บนช่อง YouTube ของเรา กรุณาตรวจสอบช่อง YouTube ด้วย