עיצוב רספונסיבי
מהו עיצוב רספונסיבי?
עיצוב רספונסיבי (Responsive Design) הוא גישה שבה האתר מתאים את עצמו לכל גודל מסך - מטלפון נייד ועד מסך ענק.
📱 Mobile → 📱 Tablet → 💻 Laptop → 🖥️ Desktop
Viewport Meta Tag
חובה! הוסיפו לכל דף HTML:
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
| מאפיין | משמעות |
|---|---|
width=device-width |
רוחב הדף = רוחב המכשיר |
initial-scale=1.0 |
זום התחלתי 100% |
יחידות יחסיות
אחוזים (%)
.container {
width: 90%;
max-width: 1200px;
margin: 0 auto;
}
.sidebar {
width: 25%;
}
.main-content {
width: 75%;
}
Viewport Units
.hero {
height: 100vh; /* 100% גובה החלון */
width: 100vw; /* 100% רוחב החלון */
}
.section {
min-height: 50vh;
}
.text {
font-size: 5vw; /* 5% מרוחב החלון */
}
| יחידה | משמעות |
|---|---|
vw |
1% מרוחב ה-viewport |
vh |
1% מגובה ה-viewport |
vmin |
הקטן מבין vw ו-vh |
vmax |
הגדול מבין vw ו-vh |
rem ו-em
html {
font-size: 16px; /* בסיס */
}
h1 {
font-size: 2rem; /* 32px */
}
.card {
padding: 1.5em; /* יחסי לגופן של האלמנט */
}
Media Queries
הכלי העיקרי לרספונסיביות:
תחביר בסיסי
@media (condition) {
/* סגנונות שמופעלים כאשר התנאי מתקיים */
}
לפי רוחב
/* מסכים עד 768px (טלפונים וטאבלטים) */
@media (max-width: 768px) {
.sidebar {
display: none;
}
}
/* מסכים מעל 768px */
@media (min-width: 768px) {
.container {
display: flex;
}
}
/* טווח ספציפי */
@media (min-width: 768px) and (max-width: 1024px) {
/* טאבלטים */
}
Breakpoints נפוצים
/* Mobile First Approach */
/* ברירת מחדל - מובייל */
.container {
padding: 15px;
}
/* טאבלט */
@media (min-width: 768px) {
.container {
padding: 30px;
}
}
/* לפטופ */
@media (min-width: 1024px) {
.container {
padding: 40px;
max-width: 1200px;
}
}
/* דסקטופ גדול */
@media (min-width: 1440px) {
.container {
max-width: 1400px;
}
}
טבלת Breakpoints
| שם | רוחב | מכשירים |
|---|---|---|
| xs | < 576px | טלפונים קטנים |
| sm | ≥ 576px | טלפונים |
| md | ≥ 768px | טאבלטים |
| lg | ≥ 1024px | לפטופים |
| xl | ≥ 1200px | דסקטופ |
| xxl | ≥ 1400px | מסכים גדולים |
Mobile-First vs Desktop-First
Mobile-First (מומלץ) ✅
/* ברירת מחדל: מובייל */
.nav {
flex-direction: column;
}
/* מסכים גדולים יותר */
@media (min-width: 768px) {
.nav {
flex-direction: row;
}
}
Desktop-First
/* ברירת מחדל: דסקטופ */
.nav {
flex-direction: row;
}
/* מסכים קטנים יותר */
@media (max-width: 767px) {
.nav {
flex-direction: column;
}
}
תמונות רספונסיביות
תמונה גמישה
img {
max-width: 100%;
height: auto;
}
object-fit
.cover-image {
width: 100%;
height: 300px;
object-fit: cover; /* חותך בצורה יפה */
object-position: center;
}
srcset ב-HTML
<img
src="image-400.jpg"
srcset="
image-400.jpg 400w,
image-800.jpg 800w,
image-1200.jpg 1200w
"
sizes="
(max-width: 600px) 100vw,
(max-width: 1200px) 50vw,
33vw
"
alt="תמונה רספונסיבית"
>
Flexbox רספונסיבי
.cards {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.card {
flex: 1 1 100%; /* מובייל: רוחב מלא */
}
@media (min-width: 600px) {
.card {
flex: 1 1 calc(50% - 10px); /* 2 בשורה */
}
}
@media (min-width: 900px) {
.card {
flex: 1 1 calc(33.333% - 14px); /* 3 בשורה */
}
}
Grid רספונסיבי
אוטומטי עם auto-fit
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 20px;
}
עם Media Queries
.grid {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
}
@media (min-width: 600px) {
.grid {
grid-template-columns: 1fr 1fr;
}
}
@media (min-width: 900px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
טיפוגרפיה רספונסיבית
clamp()
h1 {
/* min, preferred, max */
font-size: clamp(1.5rem, 4vw, 3rem);
}
p {
font-size: clamp(0.875rem, 2vw, 1.125rem);
}
עם Media Queries
h1 {
font-size: 1.75rem;
}
@media (min-width: 768px) {
h1 {
font-size: 2.5rem;
}
}
@media (min-width: 1024px) {
h1 {
font-size: 3rem;
}
}
דוגמה מלאה: דף רספונסיבי
/* ===== BASE STYLES (Mobile First) ===== */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'Heebo', sans-serif;
line-height: 1.6;
}
.container {
width: 100%;
padding: 0 15px;
margin: 0 auto;
}
/* ===== HEADER ===== */
.header {
padding: 15px 0;
}
.nav {
display: flex;
flex-direction: column;
gap: 15px;
}
.nav-links {
display: none; /* מוסתר במובייל */
}
.menu-toggle {
display: block;
}
/* ===== HERO ===== */
.hero {
padding: 40px 0;
text-align: center;
}
.hero h1 {
font-size: 1.75rem;
margin-bottom: 15px;
}
/* ===== CARDS ===== */
.cards {
display: grid;
gap: 20px;
}
/* ===== TABLET (768px+) ===== */
@media (min-width: 768px) {
.container {
max-width: 720px;
padding: 0 20px;
}
.nav {
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.nav-links {
display: flex;
gap: 20px;
}
.menu-toggle {
display: none;
}
.hero h1 {
font-size: 2.5rem;
}
.cards {
grid-template-columns: repeat(2, 1fr);
}
}
/* ===== DESKTOP (1024px+) ===== */
@media (min-width: 1024px) {
.container {
max-width: 960px;
}
.hero {
padding: 80px 0;
}
.hero h1 {
font-size: 3rem;
}
.cards {
grid-template-columns: repeat(3, 1fr);
}
}
/* ===== LARGE DESKTOP (1200px+) ===== */
@media (min-width: 1200px) {
.container {
max-width: 1140px;
}
}
Media Queries נוספים
לפי כיוון מסך
@media (orientation: portrait) {
/* מסך אנכי */
}
@media (orientation: landscape) {
/* מסך רוחבי */
}
לפי יכולות
/* מסכים עם hover (לא מובייל) */
@media (hover: hover) {
.button:hover {
background: blue;
}
}
/* מסכי רטינה */
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
/* תמונות ברזולוציה גבוהה */
}
הדפסה
@media print {
.no-print {
display: none;
}
body {
font-size: 12pt;
}
}
סיכום
| נושא | כלי |
|---|---|
| Viewport | <meta name="viewport"> |
| יחידות | %, vw, vh, rem, em |
| התאמה | @media queries |
| גישה | Mobile-First |
| תמונות | max-width: 100%, srcset |
| פריסה | Flexbox, Grid עם auto-fit |
| טיפוגרפיה | clamp() |
הבא: אנימציות ומעברים ➡️
לחזרה ותרגול חי: הנושא הזה מופיע גם
במדריך האינטראקטיבי ל-CSS, עם עורך קוד שמראה את התוצאה מיד.
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה עושה media query כמו
@media (max-width: 600px)?הצגת התשובה
תשובה ב. כך מתאימים את הפריסה למסכים קטנים.
-
בלי איזו שורה העיצוב הרספונסיבי לא יעבוד בטלפון?
הצגת התשובה
תשובה ג. בלי viewport הטלפון מציג את הדף כאילו הוא מסך רחב ומקטין הכול.
-
מה הגישה Mobile First?
הצגת התשובה
תשובה ג. הבסיס פשוט ומתאים לטלפון, והמסכים הגדולים מקבלים תוספות.