3. * Flexboxהינו סוג displayחדש, המצטרף לרשימת ה-displayים
שהינכם מכירים.
לדוגמא: ....block,inline,inline-block
* שיטה חדשה ליצירת layouts
4. ,flexboxלמה זה טוב?
גמישות בגדלים וחישוב קל של יחסי גדלים בין אלמנטים סדר אלמנטים יישור אלמנטים לייאוטים- מרכוז אלמנטים
http://codepen.io/elad2412/pen/Hvmbq
http://codepen.io/elad2412/pen/IExeA
http://codepen.io/elad2412/pen/zJIwo
16. התנהגות ה flexהטבעי
* אני לא יודע אם שמתם לב, אבל באופן טבעי הטורים או העמודות תופסים את כל הרוחב או
הגובה שלהם בתוך ה ,containerזה עוד לפני שנתנו הגדרת flexכלשהיא לאייטמים.
ההגדרה הזאת מאפשרת לנו ליצור ,layoutsבצורה קלה ונוחה.- ההגדרה הזאת ניתנת לשינוי
column
row
17. ישור אלמנטים ציר ראשי
justify-content
-webkit-justify-content: flex-start;
-ms-flex-pack: start; /*start/end/center/distribute/justify */ http://realworldvalidator.com/css/module/Microsoft/-ms-flex-pack
justify-content: flex-start; /*flex-start/flex-end/center/space-around/space-between */
flex-flow: row wrap;
flex-start
flex-end
center
space-around
space-between
center
space-around
space-between
(flex:1 for the items)
flex-flow: column wrap;
flex-start
flex-end
http://codepen.io/elad2412/pen/duFvn
(flex:1 for the items)
18. ישור אלמנטים ציר משני
align-items
-webkit-align-items:center;
-ms-flex-align:center; /*start/end/center/baseline/stretch*/ http://realworldvalidator.com/css/module/Microsoft/-ms-flex-align
align-items:center; /*flex-start/flex-end/center/baseline/stretch*/
flex-flow: row wrap;
flex-start
flex-end
center
baseline
center
baseline
stretch
flex-flow: column wrap;
flex-start
flex-end
http://codepen.io/elad2412/pen/jthvy
stretch
20. ישור אייטמים במצב של מספר שורות
align-content
align-items הגדרת
מאבדת רלונטיות
ברגע שמשתמשים ב
.align-content
-webkit-align-content:flex-start;
-ms-flex-line-pack:start; http://realworldvalidator.com/css/module/Microsoft/-ms-flex-line-pack
align-content:flex-start; /* flex-start | flex-end | center | space-between | space-around | stretch */
flex-flow: row wrap;
flex-start
flex-end
center
space-between
space-around
stretch
space-between
space-around
stretch
flex-flow: column wrap;
flex-start
flex-end
center
http://codepen.io/elad2412/pen/ADeuG
21. התנהגויות של ,flexboxשלמדנו עד עכשיו
* כל ההגדרות על שדיברנו עד עכשיו היו על ה- containerעצמו בלבד.
* עקב הגדרת ה- containerשלנו כ ,flexboxהאייטמים של ה- containerיתיישרו בשורה אחד, שזוהי ברירת
המחדל של האייטמים ב containerשל .flexbox
* הגדרת ציר ראשי )ברירת מחדל הורזונטלי( - .flex-direction: row/column
* במידה ונרצה שהם יתיישרו ביותר מעמודה או טור אחד נשנה את ההגדרה של ה-.flex-wrap
flex-wrap: wrap/nowrap
סדר אייטמים או שורות )(order
* ניתן לשנות את סדר השורות/עמודות ע"י שימוש ה flex-wrap: wrap-reverse
* ניתן לשנות את סדר האייטמים ע"י שימוש flex-direction: row-reverse/column-reverse
סדר זרימת האייטמים )(alignment
* יישור האייטמים לפי ציר ראשי וציר משני
דוגמאות:
ציר ראשי - justify-content: flex-end
ציר משני - align-items:center
* הגדרת - align-contentהתנהגות אייטמים במצב של מספר שורות.
- הגדרת align-itemsמאבדת רלונטיות ברגע שמשתמשים ב .align-content
22. התנהגויות של ,flexboxשלמדנו עד עכשיו )המשך(
התנהגות טבעית של אייטמים ) align-items:stretchברירת מחדל(
* כאשר אנחנו בישור הורזונטלי הברירת מחדל הורטיקלית שלנו היא התרחבות ורטיקאלית.
* כאשר אנחנו בישור ורטיקאלי הברירת מחדל הורזנטלית שלנו היא התרחבות הורזנטאלית.
דוגמא:
* כל ורק הבנים הישירים של ה- containerשעליו הוגדר ה- flexboxיושפעו ממנו. מה שאומר שהבנים של הבנים לא
מושפעים.
* הירכיית flexboxעובדת רק על בנים ישירים. אך זה לא אומר שבתוך הבן עצמו אי-אפשר יהיה ליצור containerאשר
גם הוא יהיה flexboxעם בנים ישירים משלו.
24. הגדרות התנהגות לאייטמים בודדים
flex
flex:<flex-grow> <flex-shrink> <flex-basis>;
Initial value the concatenation of the initial values of its longhand properties:
● flex-grow: 0
● flex-shrink : 1
● flex-basis : auto
(behave like 0 , when you declare flex-grow, flex-basis initial to 0)
25. הגדרות )flexיחסים( לאייטמים
flex-grow
* הערך המספרי של flex-growמשקף את הגודל שלו ביחס לאחים שלו.
במידה וניתן ערך שווה מעל 0 כל האייטמים יהיו שווים בגודלם ויתפסו את כל גודלו של
ה containerבציר הראשי
row
{.box
;1:-webkit-flex
;1:-ms-flex
/*יחס עמודות*/;1:flex
}
;1:flex:1; = flex-grow
column
Live Example
http://codepen.io/elad2412/pen/cfagr
31. הגדרת התכווצות במקרה של חוסר מקום
flex-shrink
* ברב המקרים סביר להניח שלא תצטרכו להשתמש בהגדרה הזאת. אך בכל זאת בו נבהיר מה תפקידה.
בוא נניח שיש לנו containerשבתוכו יש מספר אייטמים שלכולם יש יחס שווה וההגדרה שלנו לנו
לאיימטים היא 1: ,flexכלומר תמתחו בגודל שווה.
בנוסף לא הגדרנו ב- containerמה קורה במצב חריגה, מה שישאיר את הברירת מחדל ב-.nowrap
flex-wrap: nowrap
זה מה שיקרה כאשר יהיו יותר מידי אייטמים
הברירת מחדל של ה ,flex-shrinkהיא ערך 1. מה שאומר תתכווץ ביחס שווה במידה ואין מקום.
אנחנו יכולים להגדיר לכל אייטם האם אנחנו רוצים שהוא יתכווץ במקרה של חריגה או שלא.
על מנת לפתור את בעיית ההתכווצות יתר של האייטמים, יהיה עלינו לתת את הערך 0, אשר ימנע
מהאייטמים להתכווץ במקרה של חריגה. 0:flex-shrink
ככה זה יראה אחרי ההגדרה של 0:flex-shrink
34. שינוי סדר אייטמים
order
* לכל האיטמים קיימת ההגדרה הזאת כברירת מחדל עם הערך 0.
* על מנת לשנות להקפיץ אייטם אחד מהסוף להתחלה, יש לתת לאייטם ערך השונה מ 0.
* במידה ורוצים לשנות מספר אייטמים יש לתת לכולם ערכים מספריים ולמקם בהתאם.
* במידה ורוצים להפוך את סדר הרשימה עדיף להשתמשב ,flex-direction: row-reverse/column-reverse
המשפיע על כל האייטמים, במקום לעבור אייטם אייטם. כמובם שיש לסדר גם את היישור בהתאם.
;1-:-webkit-order
;1-:-ms-flex-order
;1-:order
{3.flex
;1-:order
;border-color:red
}
http://codepen.io/elad2412/pen/kDuao
35. מה למדנו עד עכשיו על אייטמים של flexbox
flex-grow
* ניתן לקבוע יחסי עמודות בצורה מאוד קלה ע"י קביעת ערך מספרי כלשהו. 1:flex-grow
* חישוב יחסי העמודות הינו על ה- contentבלבד ולא כולל .margins/borders/paddings
* בעזרת הערכים היחסיים שלו, ניתן די בקלות ליצור .layouts
flex basis
* קביעת רוחב מינימאלי של אייטם flex-basis: 200px
* - flex-basis:autoיחסי ה flex-growישתנו מאייטמים לריווחי טקסט.
flex-shrink
* ניתן להגדיר מה יקרה במקרה חריגה לאיימטים עם ערך מספרי יחסי כלשהו בין 0 ל 1.
0:flex-shrink
הגדרות אחרות:
* ישור אייטם ספציפי - align-self
* שינוי סדר אייטם ספציפי - order
37. תמיכה בדפדפנים
מה לא נתמך באופן מלא בדפדפנים
- flexwrapההתנהגות הדיפולטית קיימת ) ,(nowrapשאר ההתנהגיות לא נתמכותבדפדנים ישנים של אנדרואיד)מערכת הפעלה( ופיירפוקס.
- flex-flowהתחביר המקוצר של flex-directionו ,flex-wrapגם הוא לא נתמךבאנדרואיד)מערכת הפעלה( ופיירפוקס. אך אפשר להשתמש ב flex-directionבנפרד.
- justify-contentישור אלמנטים בציר הראשי הרב עובד בכל הדפדפנים שתומכים ,flexboxפרט להגדרה של .space-between
- align-itemsישור אלמנטים בציר המישני הרב עובד בכל הדפדפנים שתומכים ,flexboxפרט להגדרה של .baseline
- orderסידור אלמנטים עובד בכולם. בדפדפנים ישנים לא עובד טוב, עם ערכים שליליים)מעלים את האלמנטים(, שזה קצת מעצבן כי הברירת מחדל היא 0,ולהביא אלמנט מסויים
מההתחלה לסוף אומר שאני צריך להגדיר את כל האלמנטים. הפיתרון הוא לאפס לכל
האלמנטים את הברירת מחדל מ 0 ל 1, ואז יהיה ניתן לתת לאלמנט מסויים את הערך 0
במקום 1-.
38. תמיכה בדפדפנים
, על מנת לתת תמיכהflexbox כולל גרסאות ישנות שלprefix שמיצרת את כל הless ספרייה ב.מקסימאלית
https://github.com/ProLoser/Flexbox.less/blob/master/flexbox.less
39. דברים אחרים
* אין margin collapseבהגדרה
* ,min-width & min-heightיקבלו ערך נוסף חדש ,autoעל מנת לתמוך בגודל מינמאלי
לתוכן של אייטם.
לדוגמא - כדי למנוע מצב שבו הטקסט חורג מהגודל של האייטם בו הוא נמצא
40. קישורים מומלצים
flexbox מאמרים טובים בנושא/http://css-tricks.com/using-flexbox
/http://coding.smashingmagazine.com/2013/05/22/centering-elements-with-flexbox
w3c - flexbox
/http://www.w3.org/TR/css3-flexbox
Firefox
https://developer.mozilla.org/en-US/docs/Web/CSS/align-items
Microsoft IE10
http://realworldvalidator.com/css/module/Microsoft/-ms-flex-align
Can I Use
http://caniuse.com/flexbox
A Complete Guide to Flexbox
/http://css-tricks.com/snippets/css/a-guide-to-flexbox
41. By Elad Shechter
Our CSS Facebook Group:
facebook.com/groups/css.masters.israel/
My Articles:
coderwall.com/elad2412
wmp.co.il
Presentation Link
http://goo.gl/GpaAsg