Menu

CSS line-height: ערכים בלי יחידה, px, em ודוגמאות

line-height קובע את הגובה של כל שורת טקסט, ולכן את המרווח בין השורות. למדו למה מספר בלי יחידה הוא ברירת המחדל הנכונה, איך ערכי px, em ו-% עוברים בירושה בצורה שונה, ומהם ערכים טובים לטקסט רץ ולכותרות.

בדף הזה יש עורכים שאפשר להריץ - לערוך, להריץ ולראות את הפלט מיד.

מה line-height עושה

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

שלוש הפסקאות משתמשות בגופן של 16px. גובה השורות הוא 16px, 24px ו-32px.

ערכים: בלי יחידה, אורך, אחוז, normal

ערךדוגמהגובה שורה לטקסט של 16pxעובר בירושה לילדים בתור
מספר1.524pxהמספר (1.5), מחושב מחדש בכל אלמנט
אורך24px, 1.5em, 1.5rem24pxהאורך המחושב (24px)
אחוז150%24pxהאורך המחושב (24px)
normalnormalמהגופן, לרוב בערך 1.2normal

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

למה ערך בלי יחידה הוא ברירת המחדל הנכונה

גובה שורה של 1.5em או 150% מומר לפיקסלים על ההורה, והילדים יורשים את הפיקסלים האלה. ילד עם גופן גדול יותר מקבל אז שורות נמוכות מהאותיות שלו. 1.5 בלי יחידה עובר בירושה כמספר עצמו ומוכפל בגודל הגופן של כל ילד.

שתי הכותרות נשברות לשתי שורות. הראשונה יורשת שורות של 21px לאותיות של 32px, ולכן השורות שלה חופפות. השנייה מקבלת שורות של 32 × 1.5 = 48px. הגדירו line-height פעם אחת על body כמספר, ורוב הדפים לא יצטרכו אותו שוב.

נסו ערכים בעצמכם

נסו 1, 2, 30px, 200% ו-normal. Chrome מדווח על normal כמילה עצמה ולא כערך בפיקסלים, כי הגודל שלו מגיע מהגופן.

ערכים טובים לטקסט קריא

  • טקסט רץ: 1.4 עד 1.6. שורות ארוכות צריכות גובה שורה גדול יותר, כדי שהעין תמצא את תחילת השורה הבאה.
  • כותרות: 1.1 עד 1.3. טקסט גדול עם מרווח של 1.5 נראה כמו שורות נפרדות ולא ככותרת אחת.
  • כפתורים ותוויות של שורה אחת: 1 עד 1.25, עם ריפוד בשביל הגובה.

לנגישות, קריטריון ההצלחה 1.4.12 של WCAG דורש שהדף ימשיך לעבוד כשקורא מגדיר גובה שורה של פי 1.5 מגודל הגופן, ולכן הימנעו מגבהים קבועים בקופסאות טקסט שיחתכו אותו.

מרכוז אנכי של שורת טקסט אחת

כשקופסה מכילה בדיוק שורה אחת, line-height ששווה לגובה הקופסה מציב את הטקסט באמצע האנכי שלה, כי המקום העודף מתחלק שווה מעל ומתחת:

זה נשבר ברגע שהטקסט נשבר לשתי שורות, כי אז כל שורה בגובה 40px. לכל דבר שיכול להישבר, מרכזו עם flexbox במקום, כמו שמוצג בדף על מרכוז div.

הקיצור font

הקיצור font קובע גודל וגובה שורה יחד, עם לוכסן:

body {
  font: 16px/1.5 system-ui, sans-serif; /* size 16px, line-height 1.5 */
}

הקיצור מאפס כל מאפיין גופן שהוא לא מזכיר (כולל את line-height ל-normal כשמשמיטים את החלק שאחרי הלוכסן), ולכן כתבו אותו לפני כללי font-* בודדים.

טעויות נפוצות

  • שימוש ב-em או ב-% על מיכל. הילדים יורשים אורך קבוע. השתמשו במספר בלי יחידה.
  • height קבוע על קופסת טקסט. כשהטקסט נשבר או שהקורא מגדיל את המרווחים, הוא גולש. תנו לתוכן לקבוע את הגובה.
  • טקסט רץ צפוף מדי. line-height: 1 הופך פסקאות לקשות לקריאה. התחילו מ-1.5.
  • לצפות ש-line-height יוסיף מרווח בין פסקאות. זה תפקיד ה-margin של הפסקאות.
  • להסתמך על normal. הוא משתנה מגופן לגופן, ולכן הפריסה זזה כשהגופן משתנה.

שאלות נפוצות

מה line-height עושה ב-CSS?

הוא קובע את הגובה של כל קופסת שורה של טקסט. המקום העודף מעבר לגובה של הגופן עצמו מתחלק שווה מעל האותיות ומתחתן, כך ש-line-height גדול יותר פירושו יותר מרווח בין השורות.

האם ל-line-height צריכה להיות יחידה?

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

מה line-height טוב לטקסט רץ?

בין 1.4 ל-1.6 לפסקאות, ובערך 1.1 עד 1.3 לכותרות גדולות. ההנחיה של WCAG ברמת AAA דורשת לפחות 1.5 בפסקאות.

מה זה line-height: normal?

ברירת המחדל. הדפדפן משתמש בערך מתוך המדדים של הגופן עצמו, בדרך כלל בערך 1.2 אבל שונה בכל גופן, ולכן אי אפשר לצפות אותו בין גופנים.

איך משנים את המרווח בין השורות ב-HTML?

ל-HTML אין מאפיין של מרווח שורות. השתמשו במאפיין ה-CSS, למשל <p style="line-height: 2;"> לרווח כפול.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל