מאפייני CSS בנושא מיקום – float, position, ועוד

סיכום של נושאים חשובים לעניין מיקום ב-CSS

  • חשוב להכיר טוב את מודל התיבה
  • המאפיין float = ציפה, קובע לאן האלמנט יצוף בתוך המיכל (קונטיינר) שלו.
    • כלומר, float:left – אז האלמנט יצוף שמאלה בתוך המיכל שלו
    • מה שקורה לשאר האלמנטים במיכל – הוא שהם "מאפשרים לאלמנט" לצוף – כלומר מסתדרים סביבו.
    • למשל – אם נשים טקסט, יחד עם תמונה, בתוך אותו div
      והתמונה תהיה עם float
      אז הטקסט יסתדר לצידה מעצמו.
  • סידור של רשימה תבליטים (li) לרוחב
    • ברגע שמחילים על רשימה את המאפיין display:inline-block, אז התבליטים (=נקודות) מסתדרות לרוחב ולא לגובה.
    • אם רוצים לקבוע את הגודל של כל אלמנט ברשימה, אפשר עם box-sizing: 40% לדוגמא.
  • סידור אלמנטים בתור "טבלה"
    • כדאי להכיר שקיימת גם אפשרות שנקראת display:table, ואז כל אחד מהאלמנטים בתוך ה"טבלה", צריך להיות עם display:table-cell.
      מה שזה גורם הוא – שהאלמנטים מוצגים כמו ב-tr/td/ וכו'
  • המאפיין position 
    • כאשר מגדירים משהו בתור position:relative, זו הגדרת ברירת המחדל שלו, מה שאומר שאם נוסיף לו למשל left:20px אז הוא יזוז 20 פיקסלים מהמקום שבו הוא היה אמור להיות.
    • לעומת זאת אם נגדיר position:absolute, זה יגרום למיקום אבסולטי ביחס למיכל ( קונטיינר) שלו.
  • המאפיין overflow – מאפשר לקבוע מה קורה לאלמנטים בתוך המיכל, שחורגים מגודל המיכל.
    למשל אם יש לי div פנימי שמוכל בתוך div חיצוני.
    והרוחב של הפנימי חורג מהרוחב של החיצוני.
    אז אם נאמר ב-css של ה-div החיצוני, את ההגדרה הבאה :
overflow: hidden;

אז כל התוכן של ה-div הפנימי שחורג מהחיצוני, יוסתר.

  • מאפיין margin – יכול גם להיות שלילי.
  • אנימציות פשוטות – אפשרי לעשות באמצעות
transition: all 0.5s;

 

מודל התיבה ב- CSS (סיכום)

  • ב-CSS יש בגדול 2 סוגי אלמנטים : inline / block
    • block – תופס כברירת מחדל את כל רוחב השורה
    • inline – תופס רק את הקטע המסויים שבתוך השורה, ולא פותח שורה חדשה.
      • לדוגמא p הוא block
  • כל אלמנט בלוק מכיל:
    • תוכן  , שאת הגודל שלו קובעים עם height+width וברירת המחדל – רוחב מלא, גובה מלא
    • ריפוד padding – זה גבול פנימי בתוך האלמנט שבתוכו אין כלום ( כדי להבדיל את האלמנט, מאלמנטים אחרים בתוך המיכל).
    • גבול border  – מצויר מסביב לאלמנט – כלומר מגדיל אותו
    • שוליים  margin  –  זה קובע את הרווח בין האלמנט הזה, לאלמנטים אחרים.
      • כלומר שוליים של 0 גורמות לאלמנטים להיות צמודים אחד לשני.
      • בנוסף – לאלמנטים יש ברירות מחדל, והן לא תמיד אפס.
  • כלומר בברירת המחדל – אלמנט לא תופס רק את הגודל של התוכן שלו, אלא יותר מזה, כי יש גם תוספות לריפוד, לגבול, ולשוליים שלו.
  • כדי להקל על עצמנו, אפשר להגדיר את המאפיין
box-sizing: border-box;

זה גורם לגודל של הריפוד + הגבול – להיחשב בתוך האלמנט. (השוליים עדין נשארים מחוץ לאלמנט).

  • כל אלמנט , יש לו הגדרה ברירת מחדל לגבי צורת התצוגה שלו, כלומר האם הוא נחשב block או inline
    • למשל בנוגע לאלמנט פיסקה p, ברירת המחדל היא שהוא block
    • אם רוצים לשנות זאת, עושים את זה באמצעות המאפיין display
display:inline;
  • הסבר הערכים השונים :
    • display: inline – הדפדפן מתעלם מהרוחב מהגובה של האלמנט, ומסדר אותם כאילו הם טקסט בתוך שורה .
    • display:inline-block – הדפדפן מתייחס לאלמנט כאילו הוא בלוק , אבל בתוך שורה, כלומר הוא כן מתייחס לגובה ולרוחב, אבל בתוך שורה, ואם ישאר מקום לעוד אלמנטים – אז גם הם יכנסו בתוך השורה.
      צריך לזכור – שבמצב כזה, הדפדפן מתייחס גם לירידת שורה בתוך קוד ה-html. זאת אומרת שירידת שורה =שווה= רווח בתצוגה על המסך.
    • display:block – כלומר תתיחס כמו בלוק, שתופס שורה שלמה
  • בנוגע להגדרות רוחב\גובה :
    • בפיקסלים – ברור לנו.
    • באחוזים – הכוונה אחוז מתוך המיכל שלו

 

 

סלקטורים ב-CSS ( סיכום )

לפעמים אני חוזר על חומרים בסיסיים לעצמי. החלטתי לחזור קצת על CSS Selectors, כי ביום-יום אני פחות מתעסק עם זה (כל החיתוכים ל-html נשלחים לחו"ל).

  • ב-CSS יש מספר אפשרויות לבחור את האלמנטים בדף.
  • האפשרויות האלו נקראות Selectors.
  • והן משמשות אותנו גם ב-JS כדי לבחור אלמנטים בדף.

סיכום מקוצר של Css Selectors

  • id ——– #bubu
  • class ———.myClass
  • Descendant ——- p a li
  • state —— input:foucs
  • excat hirarcy – li:nth-child(2n

קדימות ב-CSS

לפי הסדר הבא : inline style > id > classes > elements

סוגי Css Selectors

  • לפי id של האלמנט – מתחיל בסימן סולמית

המחשה :

#myId {
bla...
bla...
}
  • לפי class  – מתחיל בסימן נקודה

המחשה :

.myClass {
bla...
bla...

  • לפי היררכיה יורדת – מזוהה באמצעות רווח,
    כלומר – כל סלקטור שנמצאת אחרי סלקטור אחר עם רווח מפריד – המשמעות היא לחפש בתוך האלמנט של הסלקטור הראשון, את האלמנטים של הסלקטור השני וכן הלאה.

המחשה  –  רק תגיות a עם הקלאס bubu  שנמצאות בתוך פיסקה (p) – רק הן יבחרו.

p a .bubu {
bla
bla...

  • לפי מצב האלמנט (hover… ) – מסומן בסימן נקודתיים :

המחשה :

input:focus { 
dsfsd
sdf

  • לפי רמת היררכיה מדוייקת בעץ – משתמשים במילים קבועות כמו first-child , או לחלופין בפקודת ה-CSS nth-child עם מספר הרמה בהיררכיה בתוך סוגרים

המחשה :

.myClass:nth-child(2n) {
bla..
bla..
}

li:first-child {
bla..
bla...
}

 

כללי קדימויות ב-CSS

  • הקדימות ב-CSS היא לפי הדירוג הבא :
    • תגית style בתוך ה-HTML
    • אחריה CSS שעוסקים ב- #id
    • אחריה CSS עבור קלאסים
    • ואחריה CSS עבור אלמנטים רגילים.

כמה מסקנות מהעסקת פרילנסרים במזרח הרחוק בפיתוח תוכנה / אתרים (Odesk & Elance)

האם הפרילנסרים במזרח יחליפו אותנו ? לא בטוח...
האם הפרילנסרים במזרח יחליפו אותנו ? לא בטוח…
Photo by aq-photography.com

כבר כמה שנים, שאני נעזר בפרילנסרים מהמזרח הרחוק

לביצוע כל מיני משימות פיתוח, בעיקר דברים פשוטים.

אני אפרט כאן את המסקנות האישיות שלי

בתקווה שיועילו לאנשים אחרים.

  1. בדברים פשוטים (בעיני, כמפתח) כמו חיתוך PSD ל- HTML/CSS

ועבודות גרפיקה ווידאו, בסופו של דבר – יצאתי מרוצה.

אומנם בחלק מהמקרים, הייתי צריך לתת לבנאדם הרבה מאוד הנחיות

והערות בלי סוף, עד שהגענו לתוצאה סבירה

אבל, המחיר השתלם למרות זאת.

אני אתן דוגמאות :

חיתוך 12 דפים ארוכים יחסית, ל-html/css רספונסיבי, מבוסס bootstrap 3 בעברית

עלה לי בהודו 218$, ובארץ דבר כזה היה עולה לפחות 3000 ש"ח להערכתי.

החיסכון (1$=4ש"ח) הוא כ : 2,128 ש"ח

עלות חיסכון : היו פה יותר מ-10 סבבים של תיקונים,

כולם בכתיבה מייגעת  באנגלית.

 

דוגמא נוספת : חיתוך דף בודד – 28$ (בנגלדש, Elance)

דוגמא נוספת : חיתוך דף בודד , רספונסיבי – 60$ (הודו)

גרפיקה + חיתוך , 3 דפים שונים – 48$ (הודו, 3 סקיצות כמקובל).

 

  1. בדברים בהם היה צורך למצוא מתכנת , ולא רק עיצוב או חיתוך – יצאתי ב-"שן ועין"

או ברווח נמוך.

דוגמא : חיפשתי מתכנת VBA בזול, שילמתי 15$ לשעה לבחור הודי,  שזה היה מחיר יקר משאר המציעים ב-Elance

קיבלתי עבודה מאוד מאוד גרועה, שהייתי צריך לשכתב את כל הקוד בעצמי , אל תוך הלילה.

ובנוסף שילמתי לו 550$.

במקרה זה, היה לי ויכוח איתו. אני טענתי שהוא מראש לא ידע לעשות את העבודה

ורק אמר שהוא מסוגל, ובפועל חייב אותי על זמן לימוד.

הוא טען שהוא מוכן לפתור את זה עד הסוף… עניתי לו שזה לא רלוונטי

כי הקוד כתוב מתחת לכל רמה סבירה.

פתחנו dispute ב-elance , הוא זכה חלקית, והייתי צריך לשלם על חלק משעות העבודה הנותרות (חלק שולמו לפני כן).

 

מקרה אחר – למדתי את הלקח, שילמתי 25$ לבחור רוסי, שעשה עבודה יפה מאוד.

לא היו לי הערות כלל, למעט העניין שחוייבתי גם על הזמן שבו הוא התקין את ה-VM לצורך ניסוי התוכנה על סביבה בעברית.

במקרה זה חסכתי זמן, אך לא כסף, כי בישראל יכולתי למצוא מישהו במחיר זה

אבל לא במהירות הזו (הכל בוצע מעכשיו לעכשיו, תוך פחות משבוע רוב העבודה הסתיימה והוגשה ללקוח).

 

  1. מקרים שאינם קשורים לפיתוח –

היו לי כמה מקרים נוספים, שבהם ניסיתי

חלקם רק לקבלת עצה מקצועית "באופן מיידי"

שלא מצאתי לה מענה בגוגל.

וחלקם – לפרויקטים של אדמיניסטרציה / עבודה שחורה.

במקרים של העצות – שילמתי מחיר סביר (כ-30$ לשעה, בדרך כלל לא יותר משעה-שעתיים והעניין נפתר)

באמת היה ידע בצד השני, והייתה מוכנות לעזור,

ובמקרים מסויימים גם היתה הוגנות (קרו לי כמה מקרים

שבהם האנשים ששכרתי לא ידעו לפתור את הבעיה

ולמרות שלפי הכללים, היו אמורים לחייב אותי על הזמן שהשקיעו – לא חויבתי בפועל).

במקרים אחרים – שלחתי פרויקטים מאוד גדולים של אדמיניסטרציה לחו"ל.

העברית – מהווה בעיה, שלא תמיד קל להתגבר עליה.

כלומר לפעמים הייתי צריך לכתוב כל כך הרבה הנחיות באנגלית

שזמן הצאט / הכתיבה – היה סוג של הפסד (כי לישראלי, הייתי פשוט מסיים ב-5 דקות הסבר טלפוני).

בנוסף , היה מקרה שבו פירסמתי פרויקט גדול לפי שעות

ובסופו של דבר הפרויקט הסתיים הרבה יותר מהר מהצפוי.

והבנאדם בצד השני (הודו) , פתח dispute (תביעה נגדי) ב-elance

בטענה שעלי לשלם לו לפי הצפי המקורי, כי הוא "התכונן לזה".

כמובן שבמקרה זה הוא הפסיד, אבל התביעה הייתה גדולה מאוד, והיו לי כמה ימים מתוחים

כי לא ידעתי מה הם יחליטו בסופו של דבר.

 

מסקנות :

  1. דברים פשוטים – אפשר לשלוח בכיף.

  2. יש לקחת בחשבון שזמן ההתנהלות מולם כפול ומכופל לפחות פי 6 אם לא יותר לעומת מישהו בעברית.

  3. בדברים מורכבים – היתרון שאני מצאתי, הוא מהירות הביצוע

אבל אין חיסכון מבחינת עלות – המחיר  דומה מאוד לישראלי.

  1. חשוב להשתמש בכל האמצעים שמעמידים לרשותכם האתרים, כדי לבטח את עצמכם.

כי טעויות קורות, ואף אחד לא רוצה לשלם על טעות.

אז אם הפרויקט לפי שעות – תדרשו עבודה עם time tracker שמתעד את צילומי המסך שלהם.

ואם הפרויקט בתמחור גלובלי, תקבעו אבני דרך  ברורות, כמה שיותר,

ואל תתחילו את הפרויקט לפני שהצד השני חותם על החוזה (דרך האתר כמובן).

  1. בפרויקטים גדולים, יש לקחת בחשבון עלויות מימון

כי התשלום מבוצע בחלקו מראש (ל-"כספת" של האתר, עד לסיום אבני הדרך הרלוונטיות)

  1. ומסקנה אחרונה – מעודדת – לפחות כרגע, אין מצב לדעתי

שההודים יחליפו אותנו. 🙂

 

בהצלחה!

מצרף סרטון שנתקלתי בו, ועזר לי בזמנו.