איך מוסיפים תמונת רקע
background-image מצייר תמונה מאחורי התוכן, ה-padding והגבול של האלמנט. כברירת מחדל היא מתחילה בפינה העליונה השמאלית של תיבת ה-padding, שומרת על הגודל הטבעי שלה וחוזרת על עצמה כדי למלא את התיבה:
בפרויקט אמיתי ה-url() מצביע על קובץ: url("images/hero.jpg"). הנתיב יחסי לגיליון הסגנונות שמכיל אותו (או לעמוד, במקרה של אלמנט <style>). הדוגמאות בעמוד הזה משתמשות בתמונות SVG קטנות שנכתבו ישירות בקוד ככתובות data:, כדי שירוצו בכל מקום.
שני דברים שכדאי לדעת מההתחלה:
- רקע לא נותן לאלמנט גודל.
divריק עם תמונת רקע הוא בגובה 0px. תנו לו תוכן, padding,heightאוaspect-ratio. - תמונת רקע היא קישוט. קוראי מסך מדלגים עליה ואין לה טקסט חלופי. תמונה שנושאת משמעות צריכה להיות באלמנט
<img>.
background-size: cover, contain ואורכים
background-size משנה את גודל התמונה. שתי מילות המפתח שומרות על הפרופורציות שלה:
התמונה רחבה פי שניים מגובהה, וכל תיבה היא ריבוע.
| ערך | תוצאה |
|---|---|
auto (ברירת מחדל) | הגודל המקורי של התמונה |
cover | מוגדלת עד שהתיבה מלאה לגמרי; העודף נחתך |
contain | מוגדלת עד שכל התמונה נכנסת; נשארים פסים אפורים בשני צדדים |
200px | ברוחב 200px, הגובה לפי הפרופורציה |
50% auto | חצי מרוחב התיבה, הגובה לפי הפרופורציה |
100% 100% | בדיוק בגודל התיבה; מעוותת את התמונה אם הפרופורציות שונות |
cover הוא הבחירה הרגילה לבאנרים ראשיים ולכרטיסים. contain מתאים ללוגואים ולאיורים שאסור לחתוך אף פעם.
background-position ו-background-repeat
background-position ממקם את התמונה בתוך התיבה, עם מילות מפתח (top, center, bottom, left, right), אחוזים או אורכים. background-repeat שולט בפריסת האריחים. נסו כמה ערכים:
נסו את המיקומים top right, bottom 10px right 20px ו-25% 75%, ואת ערכי החזרה repeat-x, repeat-y, space (אריחים עם רווחים כך שאף אחד לא נחתך) ו-round (אריחים שגודלם משתנה כך שייכנס מספר שלם מהם).
שכבות: כמה רקעים וטקסט מעל תמונה
background-image מקבל רשימה מופרדת בפסיקים. השכבה הראשונה מצוירת למעלה. השימוש הנפוץ הוא מעבר צבע חצי שקוף מעל תמונה, כדי שטקסט לבן יישאר קריא:
aspect-ratio נותן לתיבה הריקה גובה, ו-background-size: cover חל על שתי השכבות. למתכונים נוספים של מעברי צבע, ראו CSS gradients.
הקיצור background
background קובע את כל מאפייני הרקע בשורה אחת. הגודל חייב לבוא מיד אחרי המיקום, מופרד בלוכסן, והצבע נכתב בשכבה האחרונה:
.hero {
background: url("hero.jpg") center / cover no-repeat, #1f2937;
}
/* the same as */
.hero {
background-image: url("hero.jpg");
background-position: center;
background-size: cover;
background-repeat: no-repeat;
background-color: #1f2937;
}
צבע הגיבוי מוצג בזמן שהתמונה נטענת, וגם אם היא נכשלת. כל מאפיין שלא כתבתם בקיצור מתאפס לברירת המחדל שלו, אז כתבו קודם את הקיצור ואחריו את המאפיינים הבודדים.
מאפייני רקע נוספים
| מאפיין | מה הוא עושה |
|---|---|
background-attachment: fixed | התמונה נשארת במקומה בזמן שהעמוד נגלל (לא נתמך ב-Safari של iOS) |
background-origin | אם המיקום מתחיל מקצה הגבול, ה-padding או התוכן |
background-clip | איפה הרקע נצבע, כולל text כדי למלא אותיות |
background-blend-mode | ממזג שכבות זו בזו, כמו multiply |
טעויות נפוצות
- נתיב שגוי.
url()בגיליון סגנונות יחסי לקובץ ה-CSS, לא לעמוד ה-HTML. - אלמנט ריק. אין לו גובה, אז לתמונה אין איפה להופיע.
- שכחה של
no-repeatעםcontainאו עם תמונה קטנה: היא נפרסת כאריחים. - מתיחה עם
100% 100%כשהתכוונתם ל-cover. - תמונות חשובות כרקעים. השתמשו ב-
<img>עם טקסט חלופי לתוכן; רקעים בלתי נראים לקוראי מסך. - חסרים מירכאות סביב כתובת
data:שמכילה רווחים או מירכאות. כתבו תמידurl("...").
שאלות נפוצות
איך מוסיפים תמונת רקע ב-CSS?
משתמשים ב-background-image: url("photo.jpg"); על האלמנט. הנתיב יחסי לקובץ ה-CSS (או לעמוד, במקרה של תכונת style או אלמנט <style>). תנו לאלמנט גודל, כי רקע אף פעם לא גורם לאלמנט ריק לגדול.
איך גורמים לתמונת רקע לכסות את כל האלמנט?
משתמשים ב-background-size: cover; יחד עם background-position: center;. התמונה מוגדלת או מוקטנת עד שהיא ממלאת את התיבה לגמרי, תוך שמירה על הפרופורציות, והעודף נחתך.
מה ההבדל בין cover ל-contain?
cover ממלא את כל התיבה וחותך את מה שלא נכנס. contain מציג את כל התמונה ומשאיר שטח ריק בשני צדדים כשהפרופורציות שונות.
איך מונעים מתמונת רקע לחזור על עצמה?
מוסיפים background-repeat: no-repeat;. כברירת מחדל תמונת רקע נפרסת כאריחים בשני הכיוונים כדי למלא את האלמנט.
למה תמונת הרקע שלי לא מופיעה?
הסיבות הנפוצות הן נתיב שגוי ב-url() (הוא יחסי לקובץ ה-CSS), אלמנט בלי גובה כי אין בו תוכן, או קיצור background מאוחר יותר שאיפס את התמונה.