أداة فحص تجاوب المواقع
أعلن هنا
مختارات من فريق RTT

نصائح للمطورين حول التصميم المتجاوب والأداء

نصائح عملية جاهزة للنسخ واللصق في HTML و CSS و JavaScript والأداء وسهولة الوصول. سواء كنت تستخدم محاكي إطار العرض المجاني للمطورين، أو تحاول فحص نقاط تحول CSS أونلاين، أو تكتشف كيف يبدو موقعك على التابلت — هذه النصائح تتماشى تماماً مع سير عملك باستخدام أداة اختبار التجاوب. كل نصيحة تأتي مع مثال برمجي حقيقي يمكنك استخدامه فوراً.

+30 نصيحة
6 فئات
تم التحديث: أبريل 2026
تركيز على الجوال
تصفية:
الفئة 01

أفضل ممارسات HTML

5 نصائح

HTML المتين هو أساس كل موقع رائع. هذه النصائح تساعدك في كتابة ترميز دلالي وقوي ومستقبلي تحبه المتصفحات وقارئات الشاشة.

HTML · الصور
استخدم دائماً width و height على <img> لمنع تحول التخطيط
HTMLأداء

وضع سمات width و height صريحة على الصور يتيح للمتصفح حجز المساحة الصحيحة قبل تحميل الصورة، مما يقضي على تغيير التخطيط التراكمي (CLS) — أحد مؤشرات أداء الويب الأساسية من Google.

HTML
<!-- ❌ سيء: المتصفح لا يعرف الحجم حتى تحميل الصورة -->
<img src="hero.jpg" alt="صورة رئيسية">

<!-- ✅ جيد: المساحة محجوزة فوراً -->
<img src="hero.jpg"
     alt="صورة رئيسية"
     width="1200"
     height="630"
     loading="lazy">
ادمجها مع aspect-ratio: auto في CSS وسيحسب المتصفح النسبة الصحيحة تلقائياً، حتى عندما يغير CSS حجم الصورة.
HTML · الدلالات
استخدم <h1> واحداً لكل صفحة وحافظ على تسلسل هرمي منطقي للعناوين
HTMLA11y

يساعد هيكل المستند المبني بعناوين متداخلة بشكل صحيح كلاً من محركات البحث على فهم التسلسل الهرمي للمحتوى الخاص بك ومستخدمي قارئات الشاشة على التنقل بكفاءة في الصفحة.

HTML
<h1>عنوان الصفحة (واحد لكل صفحة)</h1>
  <h2>القسم الرئيسي</h2>
    <h3>القسم الفرعي</h3>
    <h3>قسم فرعي آخر</h3>
  <h2>قسم رئيسي آخر</h2>
HTML · الروابط
أضف rel="noopener noreferrer" للروابط الخارجية
HTML

عند فتح الروابط في علامة تبويب جديدة باستخدام target="_blank"، يمكن للصفحة المفتوحة الوصول إلى صفحتك عبر window.opener. إضافة rel="noopener noreferrer" تمنع هذه الثغرة الأمنية وتوقف أيضاً إرسال معلومات المُحيل.

HTML
<!-- ❌ غير آمن -->
<a href="https://example.com" target="_blank">زيارة</a>

<!-- ✅ آمن -->
<a href="https://example.com"
   target="_blank"
   rel="noopener noreferrer">زيارة</a>
HTML · النماذج
استخدم سمات autocomplete لتحسين تجربة النماذج على الجوال
HTMLجوال

تخبر سمة autocomplete المتصفحات ومديري كلمات المرور بكيفية ملء حقول النموذج مسبقاً. هذا يحسن بشكل كبير معدلات إكمال النماذج على الجوال.

HTML
<input type="text"    autocomplete="given-name">
<input type="email"   autocomplete="email">
<input type="tel"     autocomplete="tel">
<input type="password" autocomplete="current-password">
<input type="text"    autocomplete="postal-code">
HTML · الوصفية
أضف وسوم Open Graph لمشاركة أفضل على وسائل التواصل
HTML

تتحكم وسوم Open Graph الوصفية في كيفية ظهور صفحتك عند مشاركتها على منصات التواصل الاجتماعي مثل فيسبوك ولينكد إن وتويتر/إكس. بدونها، تختار المنصات المحتوى عشوائياً.

HTML — <head>
<meta property="og:title"       content="عنوان الصفحة">
<meta property="og:description"  content="وصف قصير">
<meta property="og:image"       content="https://yourdomain.com/og.jpg">
<meta property="og:url"         content="https://yourdomain.com/page">
<meta property="og:type"        content="website">
<!-- تويتر/إكس -->
<meta name="twitter:card"      content="summary_large_image">
الفئة 02

نصائح وحيل CSS

6 نصائح

CSS الحديث قوي بشكل لا يصدق. تغطي هذه النصائح التخطيط والخصائص المخصصة والأنماط التي توفر عليك الوقت وتحافظ على نظافة أوراق الأنماط.

CSS · التخطيط
وسّط أي شيء بشكل مثالي باستخدام CSS Grid في سطرين
CSS

توقف عن معاناة حيل التموضع. خاصية place-items المختصرة في CSS Grid توسّط المحتوى أفقياً وعمودياً في سطرين — بدون calc ولا تحويلات.

CSS
.center-everything {
  display: grid;
  place-items: center;
}

/* يعمل لتوسيط الصفحة بالكامل أيضاً */
body {
  display: grid;
  place-items: center;
  min-height: 100vh;
}
CSS · خصائص مخصصة
استخدم خصائص CSS المخصصة لنظام تصميم قابل للصيانة
CSS

تتيح لك خصائص CSS المخصصة (المتغيرات) تعريف رموز التصميم الخاصة بك مرة واحدة وإعادة استخدامها في كل مكان. كما أنها تتحدّث في الوقت الفعلي، مما يجعل الوضع الليلي والتخصيص أمراً بسيطاً.

CSS
:root {
  --color-primary: #6366f1;
  --color-bg: #ffffff;
  --radius-md: 12px;
  --spacing-md: 16px;
}

@media (prefers-color-scheme: dark) {
  :root {
    --color-bg: #0d1117;
  }
}

.btn {
  background: var(--color-primary);
  border-radius: var(--radius-md);
  padding: var(--spacing-md);
}
CSS · الطباعة
استخدم ()clamp لطباعة متجاوبة ومتدرجة
CSSمتجاوب

تسمح clamp(min, preferred, max) لأحجام الخطوط بالتدرج بسلاسة مع عرض إطار العرض — بدون الحاجة لوسائط استعلام. القيمة الوسطى عادة ما تكون بوحدة vw.

CSS
/* clamp(الحد الأدنى, المفضل, الحد الأقصى) */
h1 {
  font-size: clamp(1.8rem, 5vw, 3.5rem);
}

p {
  font-size: clamp(0.9rem, 2vw, 1.1rem);
  line-height: 1.7;
  max-width: 65ch; /* عرض القراءة الأمثل */
}
CSS · التمرير
التمرير السلس و scroll-margin لروابط الارتساء
CSSUX

قم بتمكين التمرير السلس عالمياً واستخدم scroll-margin-top على أهداف الارتساء لضمان عدم تداخل الترويسات الثابتة مع المحتوى الذي يتم التمرير إليه.

CSS
@media (prefers-reduced-motion: no-preference) {
  html {
    scroll-behavior: smooth;
  }
}

/* تعويض للترويسة الثابتة (مثلاً بارتفاع 70px) */
[id] {
  scroll-margin-top: 90px;
}
قم دائماً بتغليف scroll-behavior: smooth في وسائط استعلام prefers-reduced-motion: no-preference — بعض المستخدمين يعانون من دوار الحركة بسبب التمرير المتحرك.
CSS · التخطيط
استخدم CSS Grid auto-fill لتخطيطات بطاقات ذاتية الإصلاح
CSSمتجاوب

ينشئ نمط auto-fill + minmax() شبكة تضبط عدد الأعمدة تلقائياً بناءً على المساحة المتاحة — بدون الحاجة لوسائط استعلام.

CSS
.card-grid {
  display: grid;
  grid-template-columns: repeat(
    auto-fill,
    minmax(280px, 1fr)
  );
  gap: 24px;
}
/* عمود واحد على الجوال → 2 → 3 → 4 تلقائياً */
CSS · الرؤية
استخدم :focus-visible بدلاً من إزالة outline
CSSA11y

لا تقم أبداً بـ outline: none عالمياً — إنه يكسر التنقل بلوحة المفاتيح. استخدم :focus-visible لإظهار حلقات التركيز فقط لمستخدمي لوحة المفاتيح، مما يحافظ على التصميم نظيفاً لمستخدمي الفأرة.

CSS
/* ❌ لا تفعل هذا أبداً */
* { outline: none; }

/* ✅ أخفِ للفأرة، أظهر للوحة المفاتيح */
:focus:not(:focus-visible) {
  outline: none;
}
:focus-visible {
  outline: 2px solid #6366f1;
  outline-offset: 3px;
  border-radius: 4px;
}
الفئة 03

نصائح JavaScript

5 نصائح

اكتب JavaScript أنظف وأفضل أداءً باستخدام هذه الأنماط الحديثة وواجهات برمجة التطبيقات الخاصة بالمتصفح.

JS · واجهة برمجة
استخدم IntersectionObserver للتحميل الكسول وتأثيرات التمرير
JSأداء

بدلاً من الاستماع إلى حدث scroll (الذي ينطلق مئات المرات في الثانية)، استخدم واجهة IntersectionObserver للتفاعل فقط عندما تدخل العناصر إلى إطار العرض أو تغادره.

JavaScript
const observer = new IntersectionObserver(
  (entries) => {
    entries.forEach(entry => {
      if (entry.isIntersecting) {
        entry.target.classList.add('visible');
        observer.unobserve(entry.target); // توقف عن المراقبة
      }
    });
  },
  { rootMargin: '0px 0px -50px 0px' }
);

document.querySelectorAll('.animate-on-scroll')
  .forEach(el => observer.observe(el));
JS · الأداء
قم بتأخير تنفيذ أحداث resize و input لتجنب ضربات الأداء
JSأداء

أحداث مثل resize و input تنطلق بسرعة كبيرة. التأخير يؤجل التنفيذ حتى يتوقف المستخدم عن التفاعل، مما يمنع العمل غير الضروري.

JavaScript
function debounce(fn, delay = 300) {
  let timer;
  return (...args) => {
    clearTimeout(timer);
    timer = setTimeout(() => fn(...args), delay);
  };
}

// الاستخدام
window.addEventListener('resize',
  debounce(() => {
    recalculateLayout();
  }, 200)
);
JS · واجهة برمجة
استخدم واجهة Clipboard API لأزرار النسخ إلى الحافظة
JSUX

واجهة navigator.clipboard الحديثة قائمة على الوعود وهي أنظف بكثير من حيلة document.execCommand('copy') القديمة.

JavaScript
async function copyToClipboard(text) {
  try {
    await navigator.clipboard.writeText(text);
    showToast('تم النسخ!');
  } catch (err) {
    console.error('فشل النسخ:', err);
  }
}

// الاستخدام
document.querySelector('.copy-btn')
  .addEventListener('click', () =>
    copyToClipboard('النص المراد نسخه')
  );
JS · التخزين
استخدم localStorage بأمان مع دالة مساعدة تتعامل مع الأخطاء
JS

يمكن أن يرمي localStorage استثناءً في وضع التصفح الخاص أو عند امتلاء التخزين. قم دائماً بتغليفه في دالة مساعدة try/catch.

JavaScript
const storage = {
  get(key, fallback = null) {
    try {
      const item = localStorage.getItem(key);
      return item ? JSON.parse(item) : fallback;
    } catch { return fallback; }
  },
  set(key, value) {
    try {
      localStorage.setItem(key, JSON.stringify(value));
      return true;
    } catch { return false; }
  }
};

storage.set('theme', 'dark');
const theme = storage.get('theme', 'light');
JS · وسائط
اكتشف تفضيل الحركة المخفضة للمستخدم في JavaScript
JSA11y

بالنسبة للتحريكات المدفوعة بـ JavaScript (مثل canvas، GSAP)، تحقق من إعداد prefers-reduced-motion للمستخدم وقم بتبسيط التحريكات أو تعطيلها وفقاً لذلك.

JavaScript
const prefersReduced = window
  .matchMedia('(prefers-reduced-motion: reduce)')
  .matches;

if (!prefersReduced) {
  startAnimations();
} else {
  showStaticFallback();
}
الفئة 04

نصائح الأداء

5 نصائح

المواقع السريعة تحتل مراتب أعلى، وتحول أفضل، وتحافظ على سعادة المستخدمين. تغطي هذه النصائح أكبر المكاسب لأداء الويب.

الأداء · الخطوط
استخدم font-display: swap و preconnect لخطوط Google
أداء

بدون font-display: swap، تخفي المتصفحات النص حتى يتم تحميل الخط المخصص (FOIT). معها، يُعرض خط النظام فوراً ثم يُستبدل — مما يحسن بشكل كبير من أكبر رسم محتوى (LCP).

HTML — <head>
<!-- الخطوة 1: preconnect -->
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>

<!-- الخطوة 2: أضف &display=swap إلى الرابط -->
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&family=Cairo:wght@700;900&display=swap"
      rel="stylesheet">
الأداء · الصور
قدم تنسيقات صور حديثة مع خيار احتياطي باستخدام <picture>
أداءHTML

صور WebP و AVIF أصغر بكثير من JPEG و PNG بنفس الجودة. استخدم عنصر <picture> لتقديم التنسيقات الحديثة مع خيار احتياطي JPEG للمتصفحات القديمة.

HTML
<picture>
  <source srcset="hero.avif" type="image/avif">
  <source srcset="hero.webp" type="image/webp">
  <img src="hero.jpg"
       alt="صورة رئيسية"
       width="1200" height="630"
       loading="lazy">
</picture>
الأداء · البرامج النصية
حمل البرامج النصية غير الحرجة باستخدام defer أو async
أداءHTML

وسوم <script> العادية تحظر تحليل HTML. defer يشغل البرنامج النصي بعد اكتمال التحليل (بالترتيب). async يشغل البرامج النصية بمجرد تنزيلها (الترتيب غير مضمون).

HTML
<!-- يحظر العرض ❌ -->
<script src="app.js"></script>

<!-- يعمل بالترتيب، بعد DOM ✅ (استخدم لمعظم البرامج النصية) -->
<script src="app.js" defer></script>

<!-- يعمل فوراً عندما يكون جاهزاً ✅ (التحليلات، الإعلانات) -->
<script src="analytics.js" async></script>
الأداء · CSS
استخدم will-change باعتدال للتحريكات المسرعة بواسطة GPU
أداءCSS

التزم بتحريك transform و opacity — فهي تعمل على خيط منظم GPU دون إثارة التخطيط أو الرسم. أضف will-change فقط إذا قمت بتحليل الأداء ورأيت فائدة حقيقية.

CSS
/* ❌ يثير التخطيط (مكلف) */
.bad { transition: width 0.3s, top 0.3s; }

/* ✅ مركب على GPU (رخيص) */
.good { transition: transform 0.3s, opacity 0.3s; }

/* استخدم باعتدال، فقط قبل التحريكات المعقدة */
.modal-enter { will-change: transform; }
.modal-entered { will-change: auto; } /* أعد التعيين بعد */
الأداء · الموارد
قم بالتحميل المسبق للأصول الحرجة أعلى الجزء المرئي
أداءHTML

استخدم <link rel="preload"> لإخبار المتصفح بجلب الموارد الحرجة مبكراً — قبل أن يكتشفها في CSS أو JS. مثالي للصور الرئيسية والخطوط الحرجة والبرامج النصية الأساسية.

HTML — <head>
<!-- تحميل مسبق للصورة الرئيسية (عنصر LCP) -->
<link rel="preload" as="image"
      href="hero.webp" fetchpriority="high">

<!-- تحميل مسبق للخط الحرج -->
<link rel="preload" as="font"
      href="font.woff2" type="font/woff2"
      crossorigin>
الفئة 05

نصائح سهولة الوصول

5 نصائح

سهولة الوصول ليست قائمة مراجعة — إنها تصميم جيد. هذه النصائح تساعد في جعل مواقعك قابلة للاستخدام من قبل الجميع، بما في ذلك مستخدمي قارئات الشاشة والمتنقلين بلوحة المفاتيح.

A11y · ARIA
استخدم aria-label للأزرار التي تحتوي على أيقونات فقط
A11yHTML

الأزرار التي تحتوي على أيقونة فقط ليس لها نص مرئي لتعلنه قارئات الشاشة. أضف aria-label لتوفير تسمية وصفية.

HTML
<!-- ❌ قارئ الشاشة يقول "زر" -->
<button><i class="fa-solid fa-times"></i></button>

<!-- ✅ قارئ الشاشة يقول "إغلاق الحوار" -->
<button aria-label="إغلاق الحوار">
  <i class="fa-solid fa-times" aria-hidden="true"></i>
</button>
A11y · اللغة
قم دائماً بتعريف سمة lang على <html>
A11yHTML

تخبر سمة lang قارئات الشاشة باللغة التي يجب استخدامها، وتمكن الوصل الصحيح في CSS، وتساعد أدوات الترجمة في تحديد لغة المحتوى. بالنسبة للغات RTL، أضف أيضاً dir="rtl".

HTML
<!-- الإنجليزية -->
<html lang="en">

<!-- العربية (RTL) -->
<html lang="ar" dir="rtl">

<!-- الفرنسية -->
<html lang="fr">
A11y · اللون
تأكد من نسبة تباين لا تقل عن 4.5:1 للنص
A11yCSS

يتطلب WCAG 2.1 AA نسبة تباين لا تقل عن 4.5:1 للنص العادي و 3:1 للنص الكبير (18px+ غامق أو 24px+ عادي). استخدم فاحص تباين قبل النشر.

أدوات مجانية رائعة: WebAIM Contrast Checker على webaim.org/resources/contrastchecker/ أو ثبت تطبيق Colour Contrast Analyser لسطح المكتب. تعرض أدوات مطوري Chrome أيضاً نسب التباين في منتقي الألوان.
CSS — أمثلة
/* ❌ #6b7280 على #fff = 4.48:1 (يفشل AA للنص الصغير) */
.muted { color: #6b7280; background: #fff; }

/* ✅ #4b5563 على #fff = 7.0:1 (يجتاز AA و AAA) */
.muted { color: #4b5563; background: #fff; }
A11y · قارئات الشاشة
استخدم .sr-only لنص مخفي بصرياً ولكن قابل للوصول
A11yCSS

تحتاج أحياناً إلى نص يمكن لقارئات الشاشة فقط سماعه — مثل رابط تخطي إلى المحتوى أو تسمية لعنصر مرئي. فئة .sr-only المساعدة تخفيه بصرياً مع إبقائه قابلاً للوصول.

CSS + HTML
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

<!-- مثال رابط التخطي -->
<a href="#main" class="sr-only">تخطي إلى المحتوى</a>
A11y · لوحة المفاتيح
احصر التركيز داخل الحوارات المشروطة
A11yJS

عندما يكون الحوار المشروط مفتوحاً، يجب حصر تركيز لوحة المفاتيح داخله. وإلا فإن Tab سيركز العناصر خلف الطبقة الفوقية — مما يجعل الحوار غير قابل للاستخدام لمستخدمي لوحة المفاتيح.

JavaScript
function trapFocus(modal) {
  const focusable = modal.querySelectorAll(
    'a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])'
  );
  const first = focusable[0];
  const last = focusable[focusable.length - 1];

  modal.addEventListener('keydown', e => {
    if (e.key !== 'Tab') return;
    if (e.shiftKey ? document.activeElement === first
                   : document.activeElement === last) {
      e.preventDefault();
      (e.shiftKey ? last : first).focus();
    }
  });
  first.focus();
}
الفئة 06

نصائح التجاوب والجوال

4 نصائح

حركة المرور على الجوال هي المهيمنة. تضمن هذه النصائح أن تعمل تصميماتك بشكل جميل عبر كل حجم شاشة — من هاتف 320px إلى شاشة 4K.

متجاوب · الوصفية
استخدم وسمة viewport الوصفية الصحيحة
جوالHTML

بدون وسمة viewport الوصفية، تعرض متصفحات الجوال بعرض سطح مكتب ~980px ثم تبتعد. اسمح بتكبير المستخدم — تعطيله هو حاجز رئيسي لسهولة الوصول ويكسر تكبير المتصفح.

HTML — <head>
<!-- ❌ يعطل تكبير المستخدم (انتهاك لسهولة الوصول) -->
<meta name="viewport"
      content="width=device-width, initial-scale=1, user-scalable=no">

<!-- ✅ صحيح: يسمح بالتكبير حتى 5× -->
<meta name="viewport"
      content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=5">
متجاوب · اللمس
اجعل أهداف اللمس 44×44px على الأقل على الجوال
جوالCSSA11y

توصي إرشادات Apple HIG و WCAG 2.5.5 بحد أدنى 44×44 بكسل CSS لأهداف اللمس. الأهداف الصغيرة تحبط المستخدمين وتؤدي إلى نقرات خاطئة. يمكنك توسيع المنطقة القابلة للنقر دون تغيير الحجم المرئي باستخدام padding أو العناصر الزائفة.

CSS
/* توسيع منطقة اللمس دون تغيير مرئي */
.icon-btn {
  position: relative;
  width: 24px; height: 24px;
}
.icon-btn::before {
  content: '';
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  min-width: 44px; min-height: 44px;
}
متجاوب · RTL
استخدم خصائص CSS المنطقية لدعم لغات RTL
RTLCSS

خصائص CSS المنطقية مثل margin-inline-start بدلاً من margin-left تنعكس تلقائياً بناءً على وضع كتابة المستند — مما يجعل دعم RTL بلا مجهود تقريباً.

CSS
/* فيزيائي (لا ينعكس لـ RTL) */
.icon { margin-right: 8px; }

/* منطقي (ينعكس تلقائياً في RTL) */
.icon { margin-inline-end: 8px; }

/* المزيد من أمثلة الخصائص المنطقية */
.card {
  padding-inline: 16px;      /* يمين + يسار */
  padding-block: 12px;       /* أعلى + أسفل */
  border-start-start-radius: 12px; /* أعلى اليسار في LTR */
}
متجاوب · الوحدات
استخدم dvh بدلاً من vh لتخطيطات ملء الشاشة على الجوال
جوالCSS

100vh على متصفحات الجوال تشمل واجهة متصفح Chrome، مما يسبب تجاوزاً عند ظهور الشريط. وحدة dvh (ارتفاع إطار العرض الديناميكي) الجديدة تتكيف عند ظهور أو إخفاء واجهة المتصفح.

CSS
/* ❌ يتجاوز على الجوال عند ظهور واجهة المتصفح */
.hero { height: 100vh; }

/* ✅ مع خيار احتياطي للمتصفحات القديمة */
.hero {
  height: 100vh;          /* احتياطي */
  height: 100dvh;         /* ارتفاع إطار العرض الديناميكي */
}
مدعومة في جميع المتصفحات الحديثة منذ 2023. متاحة أيضاً: svh (إطار عرض صغير، يستبعد دائماً واجهة المتصفح) و lvh (إطار عرض كبير، يشمل دائماً مساحة واجهة المتصفح).

المزيد من أداة فحص تجاوب المواقع

فاحص التجاوب من نحن اتصل بنا سياسة الخصوصية
🖥️

ضع هذه النصائح قيد التنفيذ

اختبر كيف تبدو تغييراتك المتجاوبة عبر الجوال والتابلت وسطح المكتب — فوراً، مجاناً، بدون تسجيل.

اختبر موقعك الآن