שיטות עבודה מומלצות
ארגון קוד CSS
סדר הגיוני
.element {
/* 1. מיקום */
position: relative;
top: 0;
z-index: 1;
/* 2. תצוגה */
display: flex;
/* 3. מידות */
width: 100%;
height: auto;
/* 4. Box Model */
margin: 10px;
padding: 20px;
border: 1px solid #ccc;
/* 5. רקע */
background: white;
/* 6. טיפוגרפיה */
font-size: 16px;
color: #333;
/* 7. אנימציות */
transition: all 0.3s ease;
}
קבצים נפרדים
styles/
├── base/
│ ├── reset.css
│ └── typography.css
├── components/
│ ├── buttons.css
│ ├── cards.css
│ └── forms.css
├── layout/
│ ├── header.css
│ ├── footer.css
│ └── grid.css
└── main.css
מתודולוגיית BEM
Block Element Modifier - שמות מחלקות ברורים:
/* Block */
.card { }
/* Element (עם __) */
.card__header { }
.card__body { }
.card__footer { }
/* Modifier (עם --) */
.card--featured { }
.card--small { }
.card__button--primary { }
<div class="card card--featured">
<div class="card__header">כותרת</div>
<div class="card__body">תוכן</div>
<button class="card__button card__button--primary">לחץ</button>
</div>
CSS Variables
:root {
/* צבעים */
--color-primary: #3498db;
--color-secondary: #2ecc71;
--color-text: #333;
--color-bg: #fff;
/* גדלים */
--spacing-sm: 8px;
--spacing-md: 16px;
--spacing-lg: 32px;
/* גופנים */
--font-family: 'Heebo', sans-serif;
--font-size-base: 16px;
/* צללים */
--shadow-sm: 0 2px 4px rgba(0,0,0,0.1);
--shadow-md: 0 4px 8px rgba(0,0,0,0.15);
}
.button {
background: var(--color-primary);
padding: var(--spacing-sm) var(--spacing-md);
box-shadow: var(--shadow-sm);
}
ביצועים
תכונות לאנימציה
/* מהיר (GPU) */
transform: translateX(100px);
opacity: 0.5;
/* איטי (הימנעו) */
left: 100px;
width: 200px;
הימנעו מ-!important
/* לא מומלץ */
.text { color: red !important; }
/* מומלץ - סלקטור ספציפי יותר */
.section .text { color: red; }
נגישות
/* פוקוס ברור */
:focus {
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
/* כיבוד העדפות משתמש */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
/* קונטרסט מספיק */
.text {
color: #333; /* לא אפור בהיר מדי על לבן */
}
Reset בסיסי
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
font-size: 16px;
}
body {
font-family: var(--font-family);
line-height: 1.6;
color: var(--color-text);
}
img {
max-width: 100%;
height: auto;
display: block;
}
a {
text-decoration: none;
color: inherit;
}
button {
cursor: pointer;
border: none;
background: none;
font: inherit;
}
ul, ol {
list-style: none;
}
כללי זהב
| כלל | הסבר |
|---|---|
| Mobile First | התחילו ממובייל והרחיבו |
| DRY | Don't Repeat Yourself |
| Specificity נמוכה | השתמשו במחלקות, לא ID |
| שמות משמעותיים | .nav-link לא .blue-text |
| הערות | תעדו קוד מורכב |
| Variables | לצבעים וגדלים חוזרים |
🎉 סיום הקורס! חזרו ל-README
לחזרה ותרגול חי: הנושא הזה מופיע גם
במדריך האינטראקטיבי ל-CSS, עם עורך קוד שמראה את התוצאה מיד.
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
למה להימנע מ-
!important?הצגת התשובה
תשובה ג. עדיף לסדר את הסלקטורים נכון מאשר לכפות.
-
למה כדאי להשתמש במשתני CSS (
--main-color)?הצגת התשובה
תשובה ג. Custom Properties מאפשרים עיצוב עקבי וערכות נושא.