בפרק הקודם של המדריך הבסיסי ל-CSS ב-HTML סידרנו את דף האינטרנט שלנו בתצורת רשת. בפרק זה נלמד לארגן פריטים בתיבת Flexbox
בזמנים עברו, לפני הופעת ה-flexbox היו 4 סוגי layout ב-CSS:
- Block – עבור סימון קטע באתר
- Inline – לטקסט
- Table – לטבלאות
- Positioned – למיקום חריג של אלמנט
ה-Flexbox, אשר שמה נגזר מ-Flexible Box,
מקלה עלינו בעיצוב מבניות של אתר ללא צורך ב-float או positioned.
יצירת התיבה (container)
ראשית ניצור תיבה (container) בדף HTML:
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="my_style.css"> <meta charset="utf-8" /> <title>Hello, World!</title> <h1 class="h1_class" style="text-shadow:0 0 5px #0000FF;">this is an example of our basic HTML Document with Flex Container</h1> </head> <body> <div class="flex-container"> <div>1</div> <div>2</div> <div>3</div> </div> </body> </html>
תיבה זו אשר מכילה 3 פריטים, נראית כרגע אנמית.
בואו נראה מה ה-flexbox יכול לעשות עבורנו.
קובץ ה-CSS
צרו קובץ CSS והזינו את הקוד הבא:
.flex-container { display: flex; background-color: rgb(211, 188, 112); width: 50%; } .flex-container > div { background-color: aliceblue; margin: 10px; padding: 20px; font-size: 30px; }
- על מנת שהתיבה שייצרנו תוגדר כ-container עלינו לתת את הערך-flex לתכונה display (שורה 2).
- על מנת לעצב את הפריטים שייצרנו השתמשנו בסלקטור המיוחד <.
כלומר שכל האלמנטים אשר עונים לתגית-div שבתוך ה-flex-container ייבחרו.
כעת דף האינטרנט שלנו נראה כך:
המאפיין flex-direction
במאפיין flex-direction נוכל להשתמש על מנת לקבוע את כיוון היישור של פריטי התיבה.
נניח ונרצה לאחסן את הפריטים במאונך.
נכתוב כך את קוד ה-CSS שלנו:
.flex-container { display: flex; flex-direction: column; background-color: rgb(211, 188, 112); width: 50%; } .flex-container > div { background-color: aliceblue; width: 100px; margin: 10px; font-size: 30px; text-align: center; line-height: 75px; }
- בשורה 3 הגדרנו את כיוון מיקום הפריטים בתיבה באמצעות המאפיין flex-direction.
- שימו לב שעל מנת שהפריטים לא ימשיכו עד סוף התיבה, הגבלנו להם את הרוחב ל-100px (שורה 10).
- לו היינו נותנים למאפיין flex-direction את הערך – column-reverse, הפריטים היו מסודרים הפוך – מלמטה למעלה.
- לו היינו נותנים למאפיין flex-direction את הערך – row, הפריטים היו מסודרים בצורה מאוזנת משמאל לימין.
- לו היינו נותנים למאפיין flex-direction את הערך – row-reverse, הפריטים היו מסודרים הפוך – בצורה מאוזנת מימין לשמאל.
המאפיין flex-wrap
במאפיין זה נשתמש על מנת "לעטוף" את הפריטים.
כלומר שאם היו לנו 14 פריטים, אז בוודאי שלא היו נכנסים בשורה אחת בתיבה שלנו.
כשהם היו מגיעים לסוף השורה – היו ממשיכים לשורה הבאה.
הוסיפו פריטים לתיבה שלכם ואת קובץ ה-CSS שלכם כתבו כך:
.flex-container { display: flex; flex-wrap: wrap; background-color: rgb(211, 188, 112); width: 50%; } .flex-container > div { background-color: aliceblue; width: 100px; margin: 10px; font-size: 30px; text-align: center; line-height: 75px; }
הדבר היחידי ששינינו זה שבשורה 3 שלפני כן היה בה מאפיין יישור פריטים,
הוחלפה במאפיין flex-wrap אשר מקבל את הערך – wrap.
והתוצאה בהתאם:
- אם נרצה נוכל לתת את הערך wrap-reverse כדי להפוך את הסדר.
- במאפיין –flex-flow נוכל להשתמש על מנת ליישם גם wrap וגם direction בפקודה אחת.
לדוגמא – ;flex-flow: row wrap
המאפיין justify-content
במאפיין זה נוכל להשתמש על מנת ליישר את הפריטים לרוחב יחסית לתיבה.
לדוגמא – למרכז אותם:
justify-content: center;
- נוכל לתת את הערך flex-end על מנת שהפריטים יוצמדו לצד הנגדי (ימין)
- נוכל לתת את הערך space-around על מנת שהפריטים יסודרו בצורה המרווחת ביותר שניתן להגיע אליה בקונטיינר יחסית לגודל הפריטים.
- כמו space-around רק שעובד כך שנוצר רווח גם בין השורות ככל הניתן.
המאפיין align-items
במאפיין align-items נוכל להשתמש על מנת ליישר את הפריטים לגובה יחסית לתיבה.
כלומר שאם היינו רוצים שהפריטים יהיו מיושרים למעלה,
היינו יכולים להוסיף את פקודת ה-CSS הבאה:
justify-content: center;
שימו לב כי בקובץ ה-HTML שינינו את כמות הפריטים ל-6,
ובקובץ ה-CSS הגדרנו גובה לתיבה(;height: 200px) על מנת שנוכל להבין את ההשפעה של align-items על הפריטים.
- בערך center נשתמש על מנת ליישר את הפריטים למרכז גובה התיבה.
- נוכל לתת את הערך flex-end על מנת ליישר את הפריטים לתחתית התיבה.
- אם נרצה נוכל לתת את הערך stretch על מנת למתוח את הפריטים לאורך התיבה:
- או לתת את הערך baseline על מנת לתת לפריטים גודל יחסי לתכולה שלהם.
נסו לשנות את גודל הפונט של הפריטים השונים בקובץ ה-HTML:
<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="my_style.css"> <meta charset="utf-8" /> <title>Hello, World!</title> <h1 class="h1_class" style="text-shadow:0 0 5px #0000FF;">this is an example of our basic HTML Document with Flex Container</h1> </head> <body> <div class="flex-container"> <div><h1>1</h1></div> <div><h5>2</h5></div> <div><h3>3</h3></div> <div><p>4</p></div> <div><h4>5</h4></div> <div><h2>6</h2></div> </div> </body> </html>
כעת תוכלו לקבל תוצאה כזו:
המאפיין align-content
המאפיין align-content נועד ליישר שורות ביחס לתיבה.
כלומר שאם נרצה נוכל לשלוט בריווח שבין השורות.
לדוגמא, אם נרצה נוכל להרחיק אותם:
align-content: space-between;
שימו לב כי הגדלנו את הגובה של התיבה ל-400px על מנת שהשינויים יהיו מורגשים.
- בערך space-around נשתמש כדי ליצור רווח מעל מתחת ובין השורות.
- stretch מותח את הפריטים עד למקסימום שניתן ללא התנגשויות כולל רווח קטן (באופן דיפולטיבי)
- נוכל להשתמש ב-center על מנת למרכז את השורות
- flex-start יצמיד את השורות למעלה.
- flex-end יצמיד את השורות לתחתית התיבה.
מרכוז מושלם באמצעות Flexbox
ב-Flexbox ניתן גם להשתמש על מנת למרכז בצורה מושלמת פריט (בעיה נפוצה ב-HTML).
נוכל לתת את הערך center למאפיינים justify-content ו-align-items:
בפרק הבא של המדריך נלמד על פונקציות מובנות ב-CSS.
לקריאה נוספת על CSS יש ללחוץ כאן