The CSS Podcast - 036: Text & Typography
טקסט הוא אחד מאבני הבניין המרכזיות של האינטרנט.
כשיוצרים אתר, לא בהכרח צריך לעצב את הטקסט. למעשה, ב-HTML יש עיצוב ברירת מחדל סביר למדי.
עם זאת, סביר להניח שרוב התוכן באתר שלכם יהיה טקסט, ולכן כדאי להוסיף לו סגנון כדי לשפר את המראה שלו. שינוי של כמה מאפיינים בסיסיים יכול לשפר משמעותית את חוויית הקריאה של המשתמשים.
במודול הזה נתחיל עם הכלל @font-face
, שמאפשר לייבא גופנים מותאמים אישית לדפי האינטרנט. כך תוכלו לוודא שיש לכם את הטיפוגרפיה המדויקת שאתם צריכים, בלי קשר לגופנים שהמשתמשים התקינו.
לאחר מכן נסביר על מאפייני גופן CSS חשובים, כולל font-family
, font-style
, font-weight
ו-font-size
. ההגדרות הבסיסיות האלה מאפשרות לשנות את הטקסט מבחינת הסגנון והקריאות שלו.
בנוסף, נסביר על מאפיינים ספציפיים לפסקאות כמו text-indent
ו-word-spacing
, ולבסוף נדון בנושאים מתקדמים כמו גופנים משתנים ופסאודו-אלמנטים, שיעזרו לכם לשפר את השליטה בטיפוגרפיה.
במהלך הקורס יוצגו דוגמאות מעשיות וטיפים שיעזרו לכם להבין את הטכניקות האלה של CSS וליישם אותן.
הכלל @font-face
כלל ה-at של CSS, @font-face
, הוא כלי חשוב בעיצוב אתרים. הוא מאפשר לכם לציין ולהשתמש בגופנים מותאמים אישית כדי להציג טקסט. היתרון של @font-face
הוא הרבגוניות שלו: הוא מאפשר לכם להשתמש בגופנים משרת מרוחק או מגופן שמותקן במכשיר של המשתמש.
תחביר
@font-face {
font-family: "Trickster";
src:
local("Trickster"),
url("trickster-COLRv1.otf") format("opentype") tech(color-COLRv1),
url("trickster-outline.otf") format("opentype"),
url("trickster-outline.woff") format("woff")
}
מתארים
ascent-override
- התאמה אישית של מדד העלייה, שמשפיעה על השטח שמעל קו הבסיס.
descent-override
- ההגדרה הזו משנה את מדד הירידה, ומשפיעה על השטח שמתחת לקו הבסיס.
font-display
- קובעת את אופן ההצגה של הגופן בהתאם לסטטוס ההורדה שלו.
font-family
- הגדרת שם לגופן לשימוש במאפיינים שקשורים לגופן.
font-stretch
- קובע את קנה המידה האופקי המקובל, שמוגדר כערך יחיד או כטווח.
font-style
- הגדרת סגנון הגופן, תמיכה בטווחים של זוויות לסגנונות אלכסוניים.
font-weight
- ההגדרה הזו קובעת את המשקל של הגופן או את טווח המשקלים שזמינים.
font-feature-settings
- מאפשר גישה לתכונות של גופני OpenType.
font-variation-settings
- מספק שליטה מדויקת בהגדרות של גופנים משתנים.
line-gap-override
- מבטל את ברירת המחדל של המרווח בין השורות בגופן.
size-adjust
- החלת גורם לקביעת קנה מידה על קווי המתאר והמדדים של הגופן.
src
- מגדיר את מקור הגופן, מקומי או מרוחק. הפעולה הזו נדרשת עבור הכלל
@font-face
. שילוב שלurl()
ו-local()
בתוךsrc
הוא אסטרטגיה נפוצה שמשתמשת בגופן מקומי אם הוא זמין, וחוזרת לקובץ גופן מרוחק כגיבוי. הדפדפנים נותנים עדיפות למשאבים על סמך סדר ההצהרה, ולכן בדרך כללlocal()
צריך להופיע לפניurl()
. unicode-range
- מגביל את התווים שבהם הגופן הזה ישמש.
תיאור
@font-face
מאפשר למעצבים להשתמש בטיפוגרפיה מותאמת אישית, וכך לא להיות מוגבלים לגופנים שמתאימים לשימוש באינטרנט. היכולת של הפונקציה local()
לחפש גופן במכשיר של המשתמש מספקת חוויה חלקה שלא בהכרח תלויה בחיבור לאינטרנט.
סוגי MIME של גופנים
אופן הלימוד | סוג MIME |
---|---|
TrueType | font/ttf |
OpenType | font/otf |
Web Open Font Format | font/woff |
Web Open Font Format 2 | font/woff2 |
ההבדל בין @font-face לבין font-family
ב-CSS, יש בלבול רב בין @font-face
לבין font-family
, אבל לכל אחד מהם יש מטרה שונה.
כמו שציינו, @font-face
הוא כלל שמשמש להגדרת גופנים מותאמים אישית שרוצים להשתמש בהם באפליקציית האינטרנט. הוא מציין לדפדפן מאיפה להוריד את הגופן, איך להציג אותו במהלך הטעינה (באמצעות המאפיין font-display
) ומציין איזו קבוצת משנה של תווים להוריד (באמצעות unicode-range
).
לעומת זאת, font-family
הוא מאפיין CSS שמשמש בכלל CSS כדי להקצות גופן מסוים או רשימה של גופנים לרכיב. הגופנים שמופיעים בקטע
font-family
יכולים להיות גופנים בטוחים לשימוש באינטרנט, גופני מערכת או גופנים מותאמים אישית שהוגדרו באמצעות
@font-face
.
לסיכום, התג @font-face
מכריז על גופן ונותן לו שם, והתג font-family
מחיל את הגופן הזה על רכיבי HTML.
דוגמה לשימוש בשניהם:
<table>
<thead>
<tr>
<th><p><pre>
@font-face {
font-family: "CustomFont";
src: url("customfont.woff2") format("woff2");
}
body {
font-family: "CustomFont", Arial, sans-serif;
}
בדוגמה הזו, @font-face
מגדיר את 'CustomFont' ומציין לדפדפן איפה למצוא אותו. המאפיין font-family
מחיל את הגופן על רכיב ה-body, עם Arial כגופן חלופי אם CustomFont לא זמין.
שינוי הגופן
משתמשים ב-font-family
כדי לשנות את סוג הגופן של הטקסט.
המאפיין font-family
מקבל רשימה של מחרוזות עם ערכים מופרדים באמצעות פסיקים, שמתייחסים למשפחות גופנים ספציפיות או כלליות. משפחות גופנים ספציפיות הן מחרוזות במירכאות, כמו 'Helvetica', 'EB Garamond' או 'Times New Roman'. משפחות גופנים כלליות הן מילות מפתח כמו serif
, sans-serif
ו-monospace
(הנה רשימת האפשרויות המלאה ב-MDN). הדפדפן יציג את הגופן הזמין הראשון מהרשימה שצוינה.
כשמשתמשים בתג font-family
, צריך לציין לפחות משפחת גופנים כללית אחת למקרה שהגופנים המועדפים לא זמינים בדפדפן של המשתמש. באופן כללי, משפחת הגופנים הגנרית שמוגדרת כגיבוי צריכה להיות דומה לגופנים המועדפים: אם משתמשים ב-font-family: "Helvetica"
(משפחת גופנים ללא תגים), הגיבוי צריך להיות sans-serif
כדי שתהיה התאמה.
שימוש בגופנים נטויים
משתמשים ב-font-style
כדי להגדיר אם הטקסט יהיה נטוי או לא. font-style
מקבלת אחת ממילות המפתח הבאות: normal
, italic
ו-oblique
.
הדגשת הטקסט
משתמשים ב-font-weight
כדי להגדיר את מידת ההדגשה של הטקסט. המאפיין הזה מקבל ערכים של מילות מפתח (normal
, bold
), ערכים יחסיים של מילות מפתח (lighter
, bolder
) וערכים מספריים (100
עד 900
).
מילות המפתח normal
ו-bold
שוות לערכים המספריים 400
ו-700
, בהתאמה.
מילות המפתח lighter
ו-bolder
מחושבות ביחס לאלמנט ההורה. במאמר Meaning of Relative Weights (משמעות המשקלים היחסיים) ב-MDN יש תרשים שימושי שמראה איך הערך הזה נקבע.
שינוי גודל הטקסט
משתמשים ב-font-size
כדי לשלוט בגודל של רכיבי הטקסט. במאפיין הזה אפשר להזין ערכי אורך, אחוזים ומספר קטן של ערכי מילות מפתח.
בנוסף לערכי אורך ואחוז, הפונקציה font-size
מקבלת כמה ערכי מילות מפתח מוחלטים (xx-small
, x-small
, small
, medium
, large
, x-large
, xx-large
) וכמה ערכי מילות מפתח יחסיים (smaller
, larger
). הערכים היחסיים הם יחסיים לערך font-size
של רכיב האב.
שינוי הרווח בין השורות
משתמשים ב-line-height
כדי לציין את הגובה של כל שורה ברכיב. במאפיין הזה אפשר להזין מספר, אורך, אחוז או את מילת המפתח normal
. באופן כללי, מומלץ להשתמש במספר במקום באורך או באחוז כדי למנוע בעיות בהורשה.
שינוי הרווח בין התווים
אפשר להשתמש ב-letter-spacing
כדי לשלוט ברווח האופקי בין התווים בטקסט. המאפיין הזה מקבל ערכי אורך כמו em
, px
ו-rem
.
שימו לב שהערך שצוין מגדיל את כמות הרווח הטבעי בין התווים. בסרטון ההדגמה הבא, נסו לבחור אות בודדת כדי לראות את גודל התיבה שלה ואיך היא משתנה עם letter-spacing
.
שינוי הרווח בין המילים
משתמשים ב-word-spacing
כדי להגדיל או להקטין את אורך הרווח בין כל מילה בטקסט. המאפיין הזה מקבל ערכי אורך כמו em
, px
ו-rem
. שימו לב: האורך שאתם מציינים הוא של רווח נוסף מעבר לרווח הרגיל. כלומר, הפונקציה word-spacing: 0
שוות ערך לפונקציה word-spacing: normal
.
font
shorthand
אפשר להשתמש במאפיין המקוצר font
כדי להגדיר כמה מאפיינים שקשורים לגופן בבת אחת. רשימת המאפיינים האפשריים היא font-family
, font-size
, font-stretch
, font-style
, font-variant
, font-weight
ו-line-height
.
במאמר font
ב-MDN מוסבר איך להגדיר את הסדר של המאפיינים האלה.
הוספת קו תחתון, קו מעל וקו חוצה לטקסט
משתמשים ב-text-decoration
כדי להוסיף שורות לטקסט. השימוש הנפוץ ביותר הוא בקו תחתון, אבל אפשר גם להוסיף קווים מעל הטקסט או באמצע שלו.
המאפיין text-decoration
הוא קיצור של מאפיינים ספציפיים יותר שמפורטים בהמשך.
המאפיין text-decoration-line
מקבל את מילות המפתח underline
, overline
ו-line-through
. אפשר גם לציין כמה מילות מפתח בכמה שורות.
המאפיין text-decoration-color
קובע את הצבע של כל הקישוטים מ-text-decoration-line
.
המאפיין text-decoration-style
מקבל את מילות המפתח solid
, double
, dotted
, dashed
ו-wavy
.
המאפיין text-decoration-thickness
מקבל ערכים של אורך ומגדיר את רוחב הקו של כל הקישוטים מ-text-decoration-line
.
המאפיין text-decoration
הוא קיצור של כל המאפיינים הקודמים.
הוספת כניסה לטקסט
משתמשים ב-text-indent
כדי להוסיף כניסה לבלוקים של הטקסט. המאפיין הזה מקבל ערך של אורך (לדוגמה, 10px
, 2em
) או אחוז מהרוחב של הבלוק המכיל.
איך מתמודדים עם תוכן שגולש או מוסתר
משתמשים ב-text-overflow
כדי לציין איך התוכן המוסתר יוצג. יש שתי אפשרויות: clip
(ברירת המחדל), שגורמת לחיתוך הטקסט בנקודה שבה הוא חורג מהגבולות, ו-ellipsis
, שגורמת להצגת שלוש נקודות (…) בנקודה שבה הטקסט חורג מהגבולות.
שליטה ברווחים הלבנים
המאפיין white-space
משמש כדי לציין איך לטפל ברווחים הלבנים ברכיב. פרטים נוספים זמינים במאמר הזה בנושא MDN.white-space
white-space: pre
יכול להיות שימושי לרינדור של אומנות ASCII או של בלוקים של קוד עם הזחה מדויקת.
איך שולטים בגלישת מילים
משתמשים ב-word-break
כדי לשנות את האופן שבו המילים "נשברות" כשהן חורגות מהשורה. כברירת מחדל, הדפדפן לא יפצל מילים. השימוש בערך מילת המפתח break-all
עבור word-break
יורה לדפדפן לפצל מילים לתווים נפרדים אם יש צורך בכך.
שינוי היישור של הטקסט
משתמשים ב-text-align
כדי לציין את היישור האופקי של הטקסט ברכיב של בלוק או תא בטבלה. המאפיין הזה מקבל את ערכי מילות המפתח left
, right
, start
, end
, center
, justify
ו-match-parent
.
הערכים left
ו-right
מיישרים את הטקסט לצד השמאלי והימני של הבלוק, בהתאמה.
משתמשים ב-start
וב-end
כדי לייצג את המיקום של ההתחלה והסוף של שורת טקסט במצב הכתיבה הנוכחי. לכן, start
ממופה ל-left
באנגלית, ול-right
בסקריפט ערבי שנכתב מימין לשמאל (RTL). אלה יישורים לוגיים. מידע נוסף זמין במודול בנושא מאפיינים לוגיים.
משתמשים בcenter
כדי ליישר את הטקסט למרכז הבלוק.
הערך של justify
מארגן את הטקסט ומשנה את המרווחים בין המילים באופן אוטומטי, כך שהטקסט מיושר גם לקצה הימני וגם לקצה השמאלי של הבלוק.
שליטה בגלישת הטקסט
משתמשים ב-text-wrap
כדי לשנות את האופן שבו הטקסט בתוך רכיב מוצג בשורות נפרדות.
מילות המפתח שמתקבלות במאפיין הזה כוללות את wrap
, nowrap
, balance
ו-stable
. ערך ברירת המחדל הוא wrap
, שממזער את הגלישה על ידי גלישת הטקסט לשורות הבאות לאורך רווחים רגילים ומעברי מילים.
אפשר להשתמש במילת המפתח nowrap
כדי להשיג את ההפך המוחלט ולמנוע את פיצול הטקסט בין השורות, מה שעלול לגרום לגלישה.
כדי לקבל את אותה כמות טקסט בכל שורה כשכותבים, למשל, כותרות או כותרות משנה, משתמשים במילת המפתח balance
. כדי לשפר את הביצועים, הדפדפנים יחילו את הערך הזה רק על רכיבים עם שש שורות טקסט או פחות.
מילת המפתח stable
פועלת באופן דומה ל-wrap
, אבל היא מיועדת לשימוש עם טקסט contenteditable. אם מגדירים את text-wrap: stable
, השורות שמעל התוכן שעורכים לא ישתנו במהלך התהליך.
לפעמים מחרוזות ארוכות ללא נקודת שבירה ברורה יכולות לגרום לגלישה של קונטיינרים.
כדי לשלוט באופן שבו הטקסט מסוג זה נשבר, משתמשים בתג overflow-wrap
.
מילות המפתח שאפשר להשתמש בהן במאפיין הזה הן normal
, break-word
ו-anywhere
. הגדרת ברירת המחדל היא normal
, והטקסט לא יועבר לשורה הבאה אלא אם הוא כולל רווחים או נקודות עצירה טבעיות.
הערכים anywhere
ו-break-word
מוסיפים נקודות עצירה בכל מקום בתוך המחרוזת כדי למנוע הצפה. ההבדל בין מילות המפתח הוא באופן שבו הן מגיבות לגודל min-content
מובנה או מוגדר. מילת המפתח anywhere
מאפשרת את כל ההזדמנויות האפשריות להוספת מקף רך. הערך של break-word
לא יגרום לכך שהטקסט יהיה באורך המילה הארוכה ביותר.
שינוי כיוון הטקסט
משתמשים ב-direction
כדי להגדיר את כיוון הטקסט, ltr
(משמאל לימין, ברירת המחדל) או rtl
(מימין לשמאל). בשפות מסוימות כמו ערבית, עברית או פרסית, הכתיבה היא מימין לשמאל, ולכן צריך להשתמש ב-direction: rtl
. בשפה האנגלית ובכל השפות האחרות שנקראות משמאל לימין, משתמשים ב-direction: ltr
.
שינוי זרימת הטקסט
משתמשים ב-writing-mode
כדי לשנות את אופן הזרימה והסידור של הטקסט. ברירת המחדל היא horizontal-tb
, אבל אפשר גם להגדיר את writing-mode
ל-vertical-lr
או ל-vertical-rl
לטקסט שרוצים שיוצג אופקית.
שינוי הכיוון של הטקסט
משתמשים ב-text-orientation
כדי לציין את כיוון התווים בטקסט. הערכים התקינים של המאפיין הזה הם mixed
ו-upright
. המאפיין הזה רלוונטי רק אם writing-mode
מוגדר לערך שונה מ-horizontal-tb
.
הוספת צללית לטקסט
משתמשים ב-text-shadow
כדי להוסיף צל לטקסט. המאפיין הזה מקבל שלושה ערכים של אורך (x-offset
, y-offset
ו-blur-radius
) וערך של צבע.
מידע נוסף זמין בקטע text-shadow
במודול שלנו בנושא צללים.
גופנים משתנים
בדרך כלל, כדי להשתמש בגופנים 'רגילים' צריך לייבא קבצים שונים לגרסאות שונות של הגופן, כמו מודגש, נטוי או דחוס. גופנים משתנים הם גופנים שיכולים להכיל הרבה וריאציות שונות של גופן בקובץ אחד.
פרטים נוספים זמינים במאמר שלנו בנושא גופנים משתנים.
רכיבים פסאודו
::first-letter
ו-::first-line
פסאודו-אלמנטים
הפסאודו-אלמנטים ::first-letter
ו-::first-line
מכוונים לאות הראשונה ולשורה הראשונה של רכיב טקסט, בהתאמה.
::selection
רכיב פסאודו
משתמשים בפסאודו-אלמנט ::selection
כדי לשנות את המראה של טקסט שהמשתמש בחר.
כשמשתמשים בפסאודו-אלמנט הזה, אפשר להשתמש רק במאפייני CSS מסוימים: color
, background-color
, text-decoration
, text-shadow
, stroke-color
, fill-color
, stroke-width
.
font-variant
המאפיין font-variant
הוא קיצור למספר מאפייני CSS שמאפשרים לבחור וריאציות של גופנים כמו small-caps
ו-slashed-zero
. מאפייני ה-CSS שכלולים בקיצור הדרך הזה הם font-variant-alternates
, font-variant-caps
, font-variant-east-asian
, font-variant-ligatures
ו-font-variant-numeric
. כדי לקבל פרטים נוספים על השימוש בכל נכס, אפשר ללחוץ על הקישורים שמופיעים ליד כל נכס.
בדיקת ההבנה
בדיקת הידע בטיפוגרפיה באינטרנט
אילו ממילות המפתח הבאות אפשר להגדיר כfont-family
חלופה כללית?
serif
monospace
italic
italic
תקפה עבור font-style
, ולא עבור font-family
.sci-fi
fantasy
הוא מענה גנרטיבי תקין כגיבוי לfont-family
.sans-serif
helvetica
"Helvetica"
היא לא מילת מפתח כללית, אלא מתייחסת למשפחת גופנים ספציפית.איזו הצהרה משמשת להמרת האות הראשונה של כל מילה לאותיות רישיות? לדוגמה: This is a sentence.
➡ This Is A Sentence.
text-capitalize: true;
text-case: capitalize;
text-transform: capitalize;
font-style: capitals;
font-variant: capitalize;
נכון או לא נכון: משתמשים ב-text-orientation
כדי ליישר את הטקסט לשמאל, לימין או למרכז.
text-orientation
משנה את הסיבוב של האותיות בשורה.text-orientation
משנה את הסיבוב של האותיות בשורה. משתמשים ב-text-align
כדי ליישר את הטקסט לשמאל, לימין או למרכז (ועוד!).איזו מאפיין CSS אפשר להשתמש בו כדי לשנות את הרווח בין שורות הטקסט?
line-spacing
leading
baseline-distance
line-height
משאבים
- במאמר שיטות מומלצות לשימוש בגופנים מוסבר על ייבוא גופנים, על עיבוד גופנים ועל שיטות מומלצות אחרות לשימוש בגופנים באינטרנט.
- MDN Fundamental text and font styling.