Visability:Hidden vs. Display:None

בניית אתרים, כללי הוסף תגובה

תכונת CSS נחמדה שעל דקויותיה עליתי רק במקום העבודה שלי.
כרגיל אתם יודעים שיש את

CSS:
  1. display:none/block

שימוש בסלקטור CSS זה הוא נפוץ מאוד.
משתמשים בו לתפריטי אינטראקטיבים, לתפריטי עץ, פתיחת וסגירת איברים בממשק והצגה והחבאת אלמנטים במסמך.

CSS:
  1. visibility:visible/hidden

ופתאום מצאתי סלקטור CSS נוסף שבמבט ראשון הוא זהה לתכונת הDisplay, אך כאשר קוראים עליו יותר, רואים שיש לו סוויצ' קטן שמשנה משמעותו לחלוטין.

ההבדל הגדול כלכך בין שני תכונות אלו הוא שDisplay:None מעלים (להעלים...) את סקופ התייחסות מבנה העמוד לאלמנט ומעלים אותו מהשלד. Visability:Hidden לא.
אלמנט אשר מקבל Visability:Hidden פשוט שומר על גודלו בעמוד ופרופורציותיו, אבל פשוט מקבל כאילו Opacity:0.

זוהי יכולת ענקית לנו, מפתחי אתרים.

אני השתמשתי בתכונה זו באתר שבניתי, כאשר היה כפתור שבחלק מהעמודים רציתי שהוא לא יוצג, כי למשתמש אין הרשאות לראות כפתור זה, אבל הכפתורים תחת כפתור זה היו תלויים בגודל שלו כדי להתמקם במיקום שלהם.
אם הייתי נותן לו Display:None, הכפתורים מתחתיו היו עולים מעלה ותופסים את המקום שלו שהתפנה. אך כאשר הגדרתי לו Visability:Hidden, כל מבנה העמוד לא השתנה, הכפתורים ישבו כל אחד במקומו הוא, רק מאפייני התצוגה שלהם, השתנו.

9 תגובות ל“Visability:Hidden vs. Display:None”

  1. יובל רז אמר:

    שלומי,
    אני מכיר את התכונה הזו כבר לא מעט זמן, ויש לה את המקום שלה באתרים :)
    כמו כן, אני משתמש בה לשם העלמת אובייקטים ללא שבירת הסדר בדף, תוך שמירת המיקומים של שאר האלמנטים.
    השיקולים לשימוש בתכונת ה-display אל מול תכונת ה-visibility בד"כ נובעים אצלי משיקול עיצובי ופונקציונאלי גרידא.

    המשך שבוע נפלא,

    יובל

  2. אסף שלומי אמר:

    התלבטתי אם לפרסם את הפוסט הזה.
    עברה לה המחשבה בראשי: "בטח רבים טובים אחרים קלטו תכונה זאת ורק אני קלטתי אותה באיחור". אז למרות הכל, החלטתי לפרסם אותה, כי נראה לי שאם אני לא קלטתי אז בטח עוד רבים וטובים לא.
    ממשקי CSS ברשת, מבצעים שימוש רק בתכונת display. ויזאביליטי נדירה מאוד, עקב העובדה שהשימוש בה הוא בעיקר למבנה אתר ולאו דווקא תפריטים.

    שבוע מצוין גם לך איש
    שלומי

  3. ailaG אמר:

    אגב, ל display יש עוד תכונות, השימושית ביניהן היא inline (שהופכת את האלמנט לאלמנט שורה, כמו span למשל)
    ועוד אחת היא table-cell (אני משתמשת בה במצבי חירום כשצריך להצר שוליים של דיב לרוחב התוכן שלו ושום דבר לא עובד. זה לא שימוש נכון למיטב ידיעתי)

    יש עוד משחקים וסוגי display אבל את זה גוגל כבר יסביר טוב יותר.

  4. אסף שלומי אמר:

    היי ailaG, שמח לראותך כאן.
    "השימושית ביניהן היא inline" - במקרה יש פה פוסט על אלמנטים בלוקיים ואינלייניים :)
    table-cell נתמך ע"י כולם? צריך לשים לב לתמיכה מי של מי לגבי כל מאפיין וסלקטור. אני רגיל מאוד לעבוד רק עם אלמנטים בלוקיים ואינלייניים אבל אשמח ללמוד על עוד כמה התנהגויות אם הן נתמכות ע"י כל הדפדפנים.

  5. אריק אמר:

    טוב שפרסמת, כי אני לא הכרתי :-)
    תודה, אריק

  6. אסף שלומי אמר:

    זו היתה כל מטרתי :)
    We Aim to Please

  7. danidesign אמר:

    אחלה פוסט הבאת לי רעיונות חדשים תודה:)

  8. Macpire אמר:

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

    אחלה פוסט (:

  9. אסף שלומי אמר:

    תודה רבה לשניכם :)

הגב למאמר זה

#טאגי קוד נתמכים: [html][/html] , [css][/css] , [js][/js] , [code][/code]

הירשם לקבלת תגובות, ללא השארת תגובה בפועל

WP Theme & Icons by N.Design Studio
רסס מאמרים רסס תגובות התחבר למערכת