תכונות CSS הקשורות לשקיפות
מאמר זה מסביר את תכונות ה-CSS הקשורות לשקיפות.
ניתן ללמוד על השימוש והתחביר של תכונות opacity
, z-index
ו-clip-path
.
YouTube Video
HTML לתצוגה מקדימה
css-opacity.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-opacity.css">
9</head>
10<body>
11 <!-- Header -->
12 <header>
13 <h1>CSS Properties Related to Transparency</h1>
14 </header>
15
16 <!-- Main content -->
17 <main>
18 <header>
19 <h2>CSS Properties Related to Transparency</h2>
20 </header>
21 <article>
22 <h3>opacity</h3>
23 <section>
24 <header><h4>opacity: 1</h4></header>
25 <section class="sample-view">
26 <div class="opaque-box">Opaque</div>
27 </section>
28 <header><h4>opacity: 0.5</h4></header>
29 <section class="sample-view">
30 <div class="semi-transparent-box">Semi-transparent</div>
31 </section>
32 <header><h4>opacity: 0</h4></header>
33 <section class="sample-view">
34 <div class="transparent-box">Transparent</div>
35 </section>
36 <header><h4>transition: opacity 2s ease-in-out</h4></header>
37 <section class="sample-view">
38 <div class="opacity-transition-box">Opacity with Transition (Fade out on hover)</div>
39 </section>
40 <header><h4>Parent & Child Element</h4></header>
41 <section class="sample-view">
42 <div class="opacity-parent">
43 Parent Element & <span class="opacity-child">Child Element</span>
44 </div>
45 </section>
46 </section>
47 </article>
48 <article>
49 <h3>z-index</h3>
50 <section>
51 <div class="z-index-box1">1</div>
52 <div class="z-index-box2">
53 <div class="z-index-box2-1">2-1</div>
54 2
55 </div>
56 <div class="z-index-box3">3</div>
57 </section>
58 </article>
59 <article>
60 <h3>clip-path</h3>
61 <section>
62 <h4>Clip-path Property Examples</h4>
63 <header><h4>clip-path: circle(50% at 50% 50%)</h4></header>
64 <section class="sample-view">
65 <div class="clip-path-circle">Circle</div>
66 </section>
67 <header><h4>clip-path: ellipse(50% 30% at 50% 50%)</h4></header>
68 <section class="sample-view">
69 <div class="clip-path-ellipse">Ellipse</div>
70 </section>
71 <header><h4>clip-path: polygon(50% 0%, 100% 100%, 0% 100%)</h4></header>
72 <section class="sample-view">
73 <div class="clip-path-polygon">Polygon</div>
74 </section>
75 <header><h4>clip-path: inset(10% 20% 30% 40%)</h4></header>
76 <section class="sample-view">
77 <div class="clip-path-inset">Inset</div>
78 </section>
79 <header><h4>clip-path: url(#myClip)</h4></header>
80 <section class="sample-view">
81 <div class="clip-path-url">Url</div>
82 </section>
83 </section>
84 <svg width="0" height="0">
85 <clipPath id="myClip">
86 <circle cx="50" cy="50" r="40" />
87 </clipPath>
88 </svg>
89 </article>
90 </main>
91</body>
92</html>
אפקטים של סינון
תכונת opacity
1.opaque-box {
2 background-color: skyblue;
3 opacity: 1; /* completely opaque */
4 border: 1px solid black;
5}
6
7.semi-transparent-box {
8 background-color: skyblue;
9 opacity: 0.5; /* semi-transparent */
10 border: 1px solid black;
11}
12
13.transparent-box {
14 background-color: skyblue;
15 opacity: 0; /* completely transparent */
16 border: 1px solid black;
17}
18
19.opacity-transition-box {
20 background-color: orange;
21 transition: opacity 2s ease-in-out;
22 border: 1px solid black;
23}
24
25.opacity-transition-box:hover {
26 opacity: 0; /* Fade out on hover */
27}
28
29.opacity-parent {
30 background-color: blue;
31 opacity: 0.5;
32}
33
34.opacity-child {
35 background-color: red;
36}
תכונת opacity
משמשת לקביעת השקיפות של אלמנט. תכונה זו קובעת את רמת השקיפות של האלמנט כולו, כאשר ערכים קרובים ל-0
הם יותר שקופים וערכים קרובים ל-1
הם פחות שקופים. ניתן לשלב את תכונת opacity
עם אנימציות כדי ליצור אפקטים של הבהרה והכהיה.
תכונת opacity
משפיעה לא רק על האלמנט עליו היא הוגדרה אלא גם על האלמנטים הצאצאים שלו. משמעות הדבר היא שאם אלמנט אב מוגדר להיות חצי-שקוף, האלמנטים הצאצאים שלו יירשו את השקיפות הזו.
בדוגמה זו, ההגדרות מוגדרות כך:.
-
כאשר הערך של תכונת
opacity
הוא1
, הפריט אטום לחלוטין, כמו כל אלמנט רגיל. -
כאשר הערך של תכונת
opacity
הוא0.5
, הפריט הופך לחצי שקוף. -
כאשר הערך של תכונת
opacity
הוא0
, הפריט הופך לשקוף לגמרי ואינו נראה בכלל. -
תכונת
transition
מוגדרת כ־opacity
, לכן כאשר סמן העכבר עובר מעל האלמנט, הוא נעלם בהדרגה והופך שקוף לחלוטין לאחר שתי שניות. -
אם לאלמנט האב יש תכונת
opacity
בערך של0.5
, גם אלמנטים הבן יהפכו לחצי שקופים.
תכונת z-index
1.z-index-box1 {
2 position: relative;
3 width: 100px;
4 height: 100px;
5 background-color: red;
6 top: 10px;
7 left: 10px;
8 z-index: 1; /* Displayed in the foreground */
9}
10
11.z-index-box2 {
12 position: relative;
13 width: 100px;
14 height: 100px;
15 background-color: blue;
16 top: -100px;
17 left: 90px;
18 z-index: 0; /* Displayed in the background */
19}
20
21.z-index-box3 {
22 position: relative;
23 width: 100px;
24 height: 100px;
25 background-color: green;
26 top: -160px;
27 left: 80px;
28 z-index: 2; /* Displayed in the frontmost layer */
29}
30
31.z-index-box2-1 {
32 position: relative;
33 width: 50px;
34 height: 50px;
35 background-color: skyblue;
36 top: 0px;
37 left: 0px;
38 z-index: 4;
39}
תכונת z-index
משמשת ב-CSS לשליטה על סדר הערימה של האלמנטים. תכונה זו קובעת האם אלמנט מסוים יופיע לפני או מאחורי אלמנטים אחרים.
- בקופסה האדומה, הערך של
z-index
הוא1
, ולכן האלמנט מופיע לפני כל שאר האלמנטים. - בקופסה הכחולה, הערך של
z-index
הוא0
, ולכן האלמנט מופיע מאחורי הקופסה האדומה. - בקופסה הירוקה, הערך של
z-index
הוא2
, והיא מופיעה במיקום הקדמי ביותר. - בקופסה התכלת, מוקצה ערך
z-index
הגבוה ביותר -4
, אך מכיוון שלאלמנט האב יש ערך של0
, היא אינה מופיעה במיקום הקדמי ביותר.
מנגנון בסיסי
מאפיין z-index
מקבל ערך מספרי, כאשר אלמנטים עם מספרים גבוהים יותר מוצגים לפני אלה עם מספרים קטנים יותר. כברירת מחדל, אלמנטים ללא z-index
מוגדר נערמים לפי הסדר בו הם מופיעים ב-HTML.
עם זאת, כדי שמאפיין z-index
יפעל, יש להגדיר את מאפיין position
של האלמנט ל-relative
, absolute
, fixed
, או sticky
. אם המאפיין position
הוא static
, אז ל-z-index
אין השפעה.
ערכים
-
אם הוגדר מספר שלם חיובי ל-
z-index
, האלמנט יוצג יותר קדימה. ככל שהמספר גדול יותר, כך האלמנט יוצג יותר לפני אלמנטים אחרים.- אם
z-index
מוגדר כ-0
, הוא שומר על סדר הערימה המוגדר כברירת מחדל. - אם
z-index
מוגדר ל-1
, האלמנט יוצג שכבה אחת לפני אלמנטים אחרים.
- אם
-
אם הוגדר מספר שלם שלילי ל-
z-index
, האלמנט יוצג יותר אחורה. ככל שהמספר קטן יותר, כך האלמנט יוצג יותר מאחורי אלמנטים אחרים.- אם
z-index
מוגדר ל--1
, האלמנט יוצג שכבה אחת מאחורי אלמנטים אחרים.
- אם
הערות
- הערך של
z-index
תלוי בערךz-index
של אלמנט האב. כאשר לאלמנט האב ישz-index
מוגדר, סדר הערימה היחסי בתוך אותו אלמנט אב מיושם. זה נקרא 'הקשר ערימה' או 'stacking context'. לכן, גם אם אלמנט ילד יש לוz-index
גבוה, אם הערך שלz-index
של אלמנט האב נמוך, הוא לא יופיע לפני אלמנטים אחרים.
מאפיין clip-path
מאפיין ה-CSS clip-path
משמש לחתוך אלמנטים לצורות מסוימות. בדרך כלל, אלמנטים מוצגים כתיבות מלבניות, אבל עם clip-path
, אפשר להציג אלמנטים בצורות מורכבות כמו עיגולים או מצולעים. זהו כלי מאוד שימושי ליצירת עיצובים חזותיים או אפקטים אינטראקטיביים.
מאפיין clip-path
מגביל את שטח התצוגה של האלמנט ומסתיר את החלקים שמחוץ לצורה המוגדרת. בהמשך, נסביר כיצד להגדיר צורות נפוצות לשימוש.
צורות חיתוך עיקריות
circle()
1.clip-path-circle {
2 width: 100px;
3 height: 100px;
4 background-color: green;
5 clip-path: circle(50% at 50% 50%);
6}
circle()
חותך אלמנט לצורה מעגלית. באפשרותך לשלוט בצורה על ידי ציון המרכז והרדיוס של המעגל.
- ה-
50%
הראשון הוא רדיוס המעגל (כאחוז מרוחב או גובה האלמנט). - ה-
at 50% 50%
לאחר מכן הוא מיקום המרכז של המעגל (כאחוז מרוחב וגובה האלמנט).
כאן, מוגדר מעגל עם רדיוס שהוא חצי ממידות האלמנט, שממוקם במרכז האלמנט.
ellipse()
1.clip-path-ellipse {
2 width: 100px;
3 height: 100px;
4 background-color: green;
5 clip-path: ellipse(50% 30% at 50% 50%);
6}
ellipse()
גוזר אלמנט לצורה אליפטית. יש לציין את הרדיוסים של הרוחב והגובה, כמו גם את מיקום המרכז.
- ה-
50% 30%
הראשונים הם הרדיוסים של הרוחב והגובה. - ה-
at 50% 50%
לאחר מכן הוא מיקום המרכז של האליפסה.
בדוגמה זו, מוגדרת אליפסה שממוקמת במרכז האלמנט, עם רוחב של 50% וגובה של 30%.
polygon()
1.clip-path-polygon {
2 width: 100px;
3 height: 100px;
4 background-color: green;
5 clip-path: polygon(50% 0%, 100% 100%, 0% 100%);
6}
polygon()
יוצר מצולע על ידי חיבור קבוצת קודקודים שנקבעה. כל קודקוד מוגדר עם קואורדינטות יחסיות בתוך האלמנט.
- בדוגמה זו, נקבעו שלושה קודקודים (מרכז עליון, ימין תחתון, שמאל תחתון) והצורה נגזרת למשולש.
polygon()
הוא מאוד גמיש ויכול ליצור כל צורה.
inset()
1.clip-path-inset {
2 width: 100px;
3 height: 100px;
4 background-color: green;
5 clip-path: inset(10% 20% 30% 40%);
6}
inset()
גוזר פנימה מהקצוות החיצוניים של אלמנט. יש להגדיר מלבן על ידי ציון המרחק מכל אחד מארבעת הצדדים.
- ה-
10%
הוא המרחק מהקצה העליון. - ה-
20%
הוא המרחק מהקצה הימני. - ה-
30%
הוא המרחק מהקצה התחתון. - ה-
40%
הוא המרחק מהקצה השמאלי.
מפרט זה יוצר מלבן שמצטמצם בתוך האלמנט.
clip-path
באמצעות SVG
1/*
2<svg width="0" height="0">
3 <clipPath id="myClip">
4 <circle cx="50" cy="50" r="40" />
5 </clipPath>
6</svg>
7*/
8.clip-path-url {
9 width: 100px;
10 height: 100px;
11 background-color: green;
12 clip-path: url(#myClip);
13}
ה-clip-path
של CSS יכול לשמש לא רק לצורות פרימיטיביות אלא גם לגזירת צורות מורכבות באמצעות אלמנט <clipPath>
של SVG.
- בדוגמה זו, מסלול חיתוך עגול שהוגדר ב־SVG עם מזהה
myClip
, מוחל על אלמנט HTML.
תוכלו לעקוב אחר המאמר שלמעלה באמצעות Visual Studio Code בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.