CSS חיצוני בשורה אחת
CSS חיצוני הוא קובץ .css נפרד. מקשרים אליו מתוך ה-<head> של כל עמוד שצריך אותו:
<head>
<link rel="stylesheet" href="styles.css">
</head>
הקובץ עצמו מכיל כללי CSS רגילים, בלי תגיות HTML סביבם:
/* styles.css */
body {
font-family: system-ui, sans-serif;
color: #111827;
}
.card {
border: 2px solid #2563eb;
border-radius: 8px;
padding: 12px 16px;
}
לתצוגה המקדימה שלמטה אין קובץ שני לטעון, ולכן היא שמה את אותו CSS באלמנט <style>. זה CSS פנימי, והוא מוצג בדיוק כמו שהקובץ המקושר היה מוצג:
CSS פנימי: האלמנט style
CSS פנימי (שנקרא גם CSS מוטמע) הוא אלמנט <style> בתוך העמוד. שימו אותו ב-<head> כדי שהסגנונות יהיו ידועים לפני שה-body מוצג. הוא חל על העמוד כולו, והכללים שלו משתמשים בסלקטורים, מה שתכונות style מסוג inline לא יכולות לעשות.
העבירו את העכבר מעל תגית: :hover עובד כאן כי זה כלל אמיתי. הדרך השלישית, התכונה style, מוסברת בעמוד ה-inline CSS.
CSS פנימי מול חיצוני
חיצוני (<link>) | פנימי (<style>) | |
|---|---|---|
| איפה | קובץ .css | בתוך עמוד ה-HTML |
| טווח | כל עמוד שמקשר אליו | עמוד אחד |
| מטמון | מורד פעם אחת ומשמש שוב בכל העמודים | נשלח מחדש עם כל עמוד |
| שינוי המראה של אתר | משנים קובץ אחד | משנים כל עמוד |
| בקשה נוספת | כן, אחת לכל קובץ | לא |
| מתאים ל | אתרים אמיתיים | הדגמות, עמודים בודדים, אימייל HTML, CSS קריטי |
הספציפיות זהה בשניהם: כלל באלמנט <style> ואותו כלל בקובץ מקושר שוקלים בדיוק אותו דבר. כשיש תיקו, זה שמופיע מאוחר יותר במסמך מנצח.
סדר: גיליון הסגנונות המאוחר מנצח
גיליונות סגנונות נקראים לפי סדר המסמך, <link> ו-<style> כאחד. משני כללים עם אותה ספציפיות, המאוחר מנצח. שני בלוקי ה-<style> שלמטה מייצגים קובץ מקושר ואחריו דריסה ברמת העמוד:
הכפתור שומר את ה-padding והטקסט הלבן מהכלל הראשון, ולוקח מהשני רק את הרקע. לכן גיליון הסגנונות של האתר עצמו בא אחרי זה של ה-framework: עשו <link> לספרייה קודם, ואחריה לשלכם.
נתיבי קבצים ב-href
ה-href של <link> הוא כתובת URL, שמחושבת ביחס למיקום של קובץ ה-HTML.
| href | טוען |
|---|---|
styles.css | קובץ באותה תיקייה כמו העמוד |
css/styles.css | תיקיית css ליד העמוד |
../styles.css | תיקייה אחת למעלה |
/styles.css | משורש האתר |
https://example.com/a.css | כתובת מלאה בשרת אחר |
באתר שהעמודים שלו נמצאים בעומקים שונים, הצורה היחסית לשורש (/css/styles.css) שומרת על נתיב אחד שעובד בכל עמוד.
גיליונות סגנונות להדפסה ולמדיה אחרת
תכונת media מגבילה גיליון סגנונות לתנאים מתאימים. גם <link> וגם <style> מקבלים אותה:
<link rel="stylesheet" href="print.css" media="print">
<link rel="stylesheet" href="wide.css" media="(min-width: 900px)">
התצוגה המקדימה היא מסך, ולכן הבאנר מופיע. בעמוד אמיתי הבאנר נעלם מההדפסה, וב-DevTools אפשר לראות את אותו הדבר על ידי הדמיה של סוג המדיה print (בחלונית Rendering).
טעויות נפוצות
- נתיב שגוי. שגיאת הקלדה ב-
hrefלא טוענת כלום, והעמוד מוצג בלי עיצוב. פתחו את DevTools, לשונית Network, וחפשו 404 על קובץ ה-.css. - שכחה של
rel="stylesheet". בלעדיו,<link href="styles.css">לא טוען גיליון סגנונות. - HTML בתוך קובץ ה-
.css. קובץ.cssמכיל רק כללים. תגיות<style>בתוכו הן לא CSS תקין, והן שוברות את הכלל שלידן. - גיליון הסגנונות שלכם לפני זה של ה-framework. בספציפיות שווה הקובץ המאוחר מנצח, אז קשרו את ה-CSS שלכם אחרון.
- רואים גרסה ישנה. דפדפנים שומרים גיליונות סגנונות במטמון. עשו רענון מלא, או הוסיפו גרסה לכתובת (
styles.css?v=2) כשאתם מעלים שינוי.
שאלות נפוצות
מה זה CSS חיצוני?
CSS חיצוני הוא גיליון סגנונות ששמור בקובץ .css משלו ונטען עם <link rel="stylesheet" href="styles.css"> בתוך ה-<head> של העמוד. כל עמוד שמקשר לקובץ מקבל את אותם סגנונות, והדפדפן שומר את הקובץ במטמון בין עמודים.
מה זה CSS פנימי?
CSS פנימי, שנקרא גם CSS מוטמע, הוא CSS שנכתב בתוך אלמנט <style> במסמך ה-HTML עצמו, בדרך כלל ב-<head>. הוא חל רק על העמוד הזה.
איך מקשרים קובץ CSS ל-HTML?
מוסיפים <link rel="stylesheet" href="styles.css"> בתוך <head>. ה-href הוא נתיב יחסי לקובץ ה-HTML, כך ש-css/styles.css מצביע לתיקיית css שלידו, ו-/styles.css מתחיל משורש האתר.
מה עדיף, CSS פנימי או חיצוני?
CSS חיצוני לכל דבר עם יותר מעמוד אחד: קובץ אחד לעריכה, והדפדפנים מורידים אותו פעם אחת ומשתמשים בו שוב. CSS פנימי מתאים לעמוד יחיד, להדגמה, או לבלוק קטן של סגנונות קריטיים שרוצים בתגובה הראשונה.
למה ה-CSS החיצוני שלי לא עובד?
הסיבות הרגילות הן נתיב href שגוי (בדקו בלשונית Network אם יש 404), rel="stylesheet" חסר, תגיות <style> שנכתבו בתוך קובץ ה-.css, או כלל מאוחר יותר שדורס את שלכם. רענון מלא שולל עותק ישן מהמטמון.