כיצד למתוח תמונה למסך מלא באמצעות CSS ושיטות מוכחות אחרות. רקע שתמיד נמתח כדי למלא את כל העמוד איך למתוח תמונת רקע ב-html

14.07.2021

שלום. היום נבחן כיצד ניתן למתוח את הרקע באמצעות כלי CSS (ללא התערבות של כלים אחרים, כגון javascript ואחרים דומים להם).

לִמְתוֹחַ רקע CSSאמצעים התאפשרו עם הופעתו של CSS3, במיוחד באמצעות המאפיין רקע גודל. אני חייב לומר שהמאפיין הזה עובד הרבה יותר טוב מפתרונות דומים ב-Javascript (שהשתמשו בהם לפני הופעת גודל הרקע), מכיוון שהוא מגיב מהר יותר ובצורה נאותה יותר לשינויים בגודל הדפדפן, מחליק תמונה מתוחה מהר יותר, וכמו הם אהבו לומר בתחילת שנות ה-2000, x, - "יעבוד אפילו עם Javascript מושבת."

פתרון: כיצד למתוח את הרקע באמצעות כלי CSS

למאפיין גודל רקע יכולים להיות ערכים מרובים.
1) זו יכולה להיות אחת מההנחיות: לכסות או להכיל.

רקע-גודל: מכיל; /* קנה קנה מידה של התמונה תוך שמירה על פרופורציות כך שהתמונה כולה תשתלב בתוך הבלוק. */ גודל רקע: כריכה; /* משנה את התמונה תוך שמירה על יחס רוחב-גובה כך שהרוחב או הגובה שלה יהיו שווים לרוחב או לגובה של הבלוק. */

2) זה יכול להיות אחוז (100% או 94% מרוחב המיכל). במקרה זה, אתה יכול להשתמש בערך 1 אחוז או 2. אם יש 2 ערכים, אז גם הגובה והרוחב של התמונה יעברו קנה מידה בו-זמנית, וכל ערך מותאם ביחס לאחוזים המצוינים ב- פרמטרים).

גודל רקע: 100%; /*מקביל להנחיית הכריכה*/ גודל רקע: 100% 50%; /*הרוחב יהיה 100% מרוחב הבלוק, אבל הגובה יהיה רק ​​50%, סביר להניח שהתמונה תהיה מעוותת*/

3) ערך מספרי ישירות (בפיסקלים, סנטימטרים, em וכו'). יכולים להיות גם 2 (או 1) פרמטרים, כמו במקרה הקודם.
4) ערך אוטומטי. מציין שהתמונה לא תימתח, אך ייעשה שימוש בגודל המקורי. במקרה זה, יכולים להיות גם 2 או 1 פרמטרים כלומר, אתה יכול לציין את הדברים הבאים:

גודל רקע: 60% אוטומטי; /*רוחב התמונה יהיה 60%, והגובה יהיה פרופורציונלי לגודל התמונה המקורית*/

היכן יעבוד פתרון מתיחת הרקע של CSS?

אם לשפוט לפי אתר Can I Use, זה יעבוד בסך הכל דפדפנים מודרניים, כולל גרסאות IE לא נמוכות מ-9. לכן, באופן עקרוני, אין סיבה לדאגה. ראה טבלת תאימות:

מצאתי את השיעור הזה על אחד ערוץ יוטיוב. תכונה מאוד שימושית למעצב אתרים לדעתי.

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

זה אמור להיראות כך:

בואו נתחיל. פתחו את התמונה שלנו ב-PhotoShop ובחרו את האובייקט שאנחנו צריכים:


לאחר מכן, עבור לכרטיסייה בחירה >> שמור בחירה


והגדר איזה שם שרירותי לבחירה הזו:


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


והקפד לציין את האובייקט המוגן:


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

ברכות. במאמר זה, אני רוצה לשתף שלוש דרכים למקם תמונה כרקע של עמוד שלם באמצעות HTML + CSS בלבד (ללא JS).

אז הדרישות שלנו לתמונת הרקע הן כדלקמן:

  • מכסה 100% מרוחב וגובה העמוד
  • הרקע מוגדל במידת הצורך (הרקע נמתח או דחוס בהתאם לגודל המסך)
  • יחס הגובה-רוחב של התמונה נשמר
  • התמונה מרוכזת בעמוד
  • הרקע אינו גורם לגלילה
  • הפתרון תואם כמה שיותר בין דפדפנים
  • לא נעשה שימוש בטכנולוגיות אחרות מלבד CSS

שיטה 1

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

הגדר את הרקע להיות קבוע וממורכז, ולאחר מכן התאם את גודלו באמצעות רקע-גודל: cover .

HTML (תמונת רקע: url(images/background.jpg); background-repeat: no-repeat; רקע-מיקום: מרכז מרכז; רקע-מצורף: קבוע; -webkit-background-size: cover; -moz-background- גודל: cover; -o-background-size: cover רקע: cover )

שיטה זו פועלת ב

Chrome (כל גרסה) Opera 10+ Firefox 3.6+ Safari 3+ IE 9+

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

שיטה 2

שיטה זו כוללת שימוש באלמנט img, שגודלו ישתנה בהתאם לגודל חלון הדפדפן. כדי למתוח תמונה כך שתמלא את כל המסך, עליה להגדיר את הגובה והרוחב המינימלי שלה ל-100%. וכדי שהתמונה לא תדחס לגודל קטן מהמקור, הגדר את רוחב המינימום בערך השווה לרוחב התמונה.

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

img.background ( גובה מינימלי: 100%; רוחב מינימלי: 640 פיקסלים; רוחב: 100%; גובה: אוטומטי; מיקום: קבוע; למעלה: 0; שמאלה: 0; /* תלוי בגודל התמונה */ מסך מדיה ו (מקסימום רוחב: 640 פיקסלים)( img.bg ( משמאל: 50%; שוליים-שמאליים: -320 פיקסלים; ) ) )

שיטה זו פועלת ב:

  • כל גרסה של דפדפנים טובים (Chrome, Opera, Firefox, Safari)
  • IE 9+

שיטה 3

דרך נוספת היא כדלקמן: תקן את התמונה לפינה השמאלית העליונה של העמוד ומתחו אותו באמצעות מאפייני רוחב מינימלי וגובה מינימלי של 100%, תוך שמירה על יחס הגובה-רוחב.

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

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

div.background ( מיקום: קבוע; עליון: -50%; שמאל: -50%; רוחב: 200%; גובה: 200%; ) img (מיקום: מוחלט; עליון: 0; שמאל: 0; ימין: 0; למטה : 0; שוליים: רוחב מינימלי: 50%;

שיטה זו פועלת ב דפדפנים טוביםו-IE 8+.

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

מְשִׁימָה

למתוח את תמונת הרקע לכל רוחב חלון הדפדפן באמצעות CSS3.

פִּתָרוֹן

כדי לשנות את קנה המידה של הרקע, השתמש במאפיין רקע גודל הגדר את הערך שלו ל-100%, ואז הרקע יתפוס את כל רוחב חלון הדפדפן. עבור גרסאות ישנות יותר של דפדפנים, עליך להשתמש במאפיינים ספציפיים עם קידומות, כפי שמוצג בדוגמה 1.

דוגמה 1: רקע מתמתח

HTML5 CSS 2.1 IE Cr Op Sa Fx

רקע מתמתח

תוֹצָאָה הדוגמה הזומוצג באיור. 1.

אורז. 1. מבט על הרקע עם גודל חלון מופחת

ככל שגודל חלון הדפדפן יגדל, גם הרקע יתחיל להתרחב, מה שיוביל להידרדרות במראה התמונה (איור 2).

אורז. 2. מבט על הרקע עם גודל חלון מוגדל

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

טכניקה באמצעות CSS בלבד. חלק 1.

שימוש באלמנט מוטבע , שניתן לשנות את גודלו בכל דפדפן. אנחנו מגדירים את המאפיין min-height כדי למלא את חלון הדפדפן בצורה אנכית, והגדרנו את המאפיין width ל-100% כדי למלא אותו אופקית. אנחנו גם מגדירים את המאפיין min-width להיות שווה לרוחב התמונה כך שהיא לעולם לא תצטמצם.

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

הנה קוד ה-CSS:

Img.bg ( /* הגדר את הכללים למילוי הרקע */ min-height: 100%; min-width: 1024px; /* הגדר את מקדם המידתיות */ width: 100%; גובה: אוטומטי; /* הגדר את המיקום */ מיקום: קבוע; למעלה: 0; משמאל: מסך מדיה (מקסימום רוחב: 1024 פיקסלים) ( /* מוגדר עבור כל תמונה ספציפית */ img.bg ( משמאל: 50%; 512px; / * 50% */ ) )

עובד ב:

    כל גרסה של דפדפן רגיל: Safari / Chrome / Opera / Firefox.

    IE 6: לא עובד - אבל אתה יכול להשתמש בחלק מהטריקים למיקום.

    IE 7/8: עובד רוב הזמן, לא מרכז תמונות קטנות, אבל ממלא את המסך בצורה נכונה.

    IE 9: עובד.

טכניקה באמצעות CSS בלבד. חלק 2.

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

#bg ( מיקום: קבוע; למעלה: 0; שמאלה: 0; /* שמור על יחס הגובה-רוחב */ רוחב דק:100%; גובה מינימום:100%; )

עם זאת, זה לא ממרכז את התמונה. אז בואו נעטוף את התמונה באלמנט

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

#bg ( מיקום: קבוע; למעלה:-50%; שמאלה:-50%; רוחב:200%; גובה:200%; ) #bg img (מיקום: מוחלט; top:0; left:0; right:0; תחתית: 0; שוליים: רוחב מינימלי: 50%;

עובד ב:

    ספארי / כרום / פיירפוקס (לא נבדק בכל הגרסאות, אבל עובד מצוין בגרסאות האחרונות).

    IE 8+.

    Opera (כל גרסה) ו-IE מסרבים לעבוד בשיטה זו (מיקום התמונה אינו נכון).

שימוש ב-jQuery

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

#bg ( מיקום: קבוע; למעלה: 0; משמאל: 0; ) .bgwidth ( רוחב: 100%; ) .bgheight ( גובה: 100%; )

$(function() ( var theWindow = $(window), $bg = $("#bg"), aspectRatio = $bg.width() / $bg.height(); הפונקציה resizeBg() ( if ((theWindow) .width() / theWindow.height())< aspectRatio) { $bg .removeClass() .addClass("bgheight"); } else { $bg .removeClass() .addClass("bgwidth"); } } theWindow.resize(function() { resizeBg(); }).trigger("resize"); });

עובד ב:

    IE7+ (עם stubs, כנראה יעבוד ב-IE6)

    בכל שאר הדפדפנים.

סיכום

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