Workstation Logo
المنتجات
مختبرات الذكاء الاصطناعيوكلاء OpenAIوكلاء ClaudeGrok BotWorkstation CRM (WSL CRM)التسويقجميع المنتجات
حلول الذكاء الاصطناعي
محطات عمل الذكاء الاصطناعيAI SME Packagesذكاء اصطناعي خاصمجموعات GPUذكاء اصطناعي طرفيمختبر الذكاء الاصطناعي للمؤسساتالذكاء الاصطناعي حسب الصناعة
الخدمات
Platform ModernisationDigital EngineeringData Foundations & AIAutonomous Operationsاستشارات الذكاء الاصطناعيأتمتة DevOpsالأمن السيبرانيتطوير البرمجياتبناء الوكلاءإعداد MLOps
من نحن
الشركاءقصص العملاء
المقالات
الوثائق
WSL ProxyRing PromoterWSL VaultJobshoutSysOps 24/7
المدونة
اتصل بناLogin
Workstation

محطات عمل الذكاء الاصطناعي وبرمجيات الوكلاء المتعددة والبنية التحتية لوحدات GPU وحلول الوكلاء الأذكياء للشركات الحديثة.

اتصل بنا

حلول الذكاء الاصطناعي

محطات عمل الذكاء الاصطناعيAI SME Packagesذكاء اصطناعي خاصمجموعات GPUذكاء اصطناعي طرفيمختبر الذكاء الاصطناعي للمؤسساتالذكاء الاصطناعي حسب الصناعة

المنتجات

جميع المنتجاتWSL CRM و ERPالتسويقوكلاء OpenAIWSL ProxyRing PromoterWSL VaultJobshoutSysOps 24/7

الشركة

من نحنلماذا Workstationالشركاءقصص العملاءالأسعاراتصل

الموارد

المقالاتالتوثيقالمدونةبحثخريطة الموقع
مكتب المملكة المتحدة
77-79 Marlowes, Hemel Hempstead HP1 1LFالاتجاهات - اسلك المخرج 20 من الطريق M25 في لندن الخارجيةرقم الشركة: 11641870الاثنين - الجمعة: 9:00 ص - 6:00 م بتوقيت GMT
+44 7515 356 146
مكتب بلجيكا
Workstation SRL, Rue Vanderkindere 34, 1180 Uccle, BrusselsBE 0751.518.683الاثنين - الجمعة: 9:00 ص - 6:00 م بتوقيت CET
+32 492 45 67 46
مكتب الهند
#159 Sector 9, Pocket 1, DDA Flats, 110077 Dwarka, New Delhi
+91 98881 98841

© 2026 Workstation AI. جميع الحقوق محفوظة.

الخصوصيةملفات تعريف الارتباطشروط الخدمةخريطة الموقع الإلكتروني

Loading blog...

Home / Blog
TechAIOpsapi

بناء واجهات ويب مذهلة باستخدام React وCSS الحديثة

React وCSS الحديثة

Balinder Walia19 مايو 20259 min read

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

تخطيط CSS الحديث: الشبكة والمربع المرن

React بنية المكوناتApp Shellرأس- التنقل، الشعار، البحث، قائمة المستخدمالشريط الجانبيروابط التنقلالمرشحاتالفئاتالإجراءات السريعةالمحتوى الرئيسيبطاقةبطاقةمكون النموذجإرسالالبطاقةالدولة & تدفق البياناتالدعائم ↓تتدفق البيانات إلى أسفلمن الأصل إلى مكوناتالفرعيةرفع الحالة ↑الأحداث والأحداث. عمليات الاسترجاعاتتتدفق من الطفلإلى الأصلالسياقمشترك عبر الشجرة

CSS Grid وFlexbox هما ركيزتان للتخطيط الحديث. يعد فهم متى يتم استخدام كل منها أمرًا ضروريًا لبناء واجهات سريعة الاستجابة. شبكة

CSS للتخطيطات ثنائية الأبعاد تتفوق شبكة

في التخطيطات على مستوى الصفحة وأي تصميم يتطلب التحكم في كل من الصفوف والأعمدة في وقت واحد:

.dashboard {
  display: grid;
  grid-template-columns: 250px 1fr 300px;
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "sidebar header  aside"
    "sidebar main    aside"
    "sidebar footer  aside";
  gap: 1rem;
  min-height: 100vh;
}

.header  { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main    { grid-area: main; }
.aside   { grid-area: aside; }
.footer  { grid-area: footer; }

Flexbox للتدفق أحادي البعد

Flexbox مثالي للتخطيطات على مستوى المكونات - التنقل الأشرطة وصفوف البطاقات وتخطيطات النماذج وأي محتوى يتدفق في اتجاه واحد:

.nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 2rem;
}

.nav-links {
  display: flex;
  gap: 1.5rem;
  list-style: none;
}

استعلامات الحاوية

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

.card-container {
  container-type: inline-size;
  container-name: card;
}

@container card (min-width: 400px) {
  .card {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 1rem;
  }
}

@container card (max-width: 399px) {
  .card {
    display: flex;
    flex-direction: column;
  }
}

CSS الخصائص المخصصة ورموز التصميم

خصائص CSS المخصصة (المتغيرات) هي أساس نظام تصميم قابل للصيانة. حدد رموز التصميم الخاصة بك كخصائص مخصصة على عنصر:rootوقم بالرجوع إليها عبر أنماطك:

:root {
  /* Colors */
  --color-primary: #3b82f6;
  --color-primary-dark: #1d4ed8;
  --color-surface: #ffffff;
  --color-surface-elevated: #f8fafc;
  --color-text: #0f172a;
  --color-text-muted: #64748b;

  /* Spacing */
  --space-xs: 0.25rem;
  --space-sm: 0.5rem;
  --space-md: 1rem;
  --space-lg: 1.5rem;
  --space-xl: 2rem;

  /* Typography */
  --font-sans: 'Inter', system-ui, sans-serif;
  --font-mono: 'JetBrains Mono', monospace;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;

  /* Shadows */
  --shadow-sm: 0 1px 2px rgb(0 0 0 / 0.05);
  --shadow-md: 0 4px 6px rgb(0 0 0 / 0.07);
  --shadow-lg: 0 10px 15px rgb(0 0 0 / 0.1);

  /* Borders */
  --radius-sm: 0.375rem;
  --radius-md: 0.5rem;
  --radius-lg: 0.75rem;
  --radius-full: 9999px;
}

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

في React

يقدم React عدة أساليب للتصميم. ولكل منها مقايضات في تجربة المطور والأداء وقابلية الصيانة. وحدات

CSS تعمل وحدات

CSS على نطاق الأنماط للمكونات الفردية عن طريق إنشاء أسماء فئات فريدة في وقت الإنشاء. إنها توفر أفضل توازن بين البساطة والأمان:

/* Button.module.css */
.button {
  padding: var(--space-sm) var(--space-md);
  border-radius: var(--radius-md);
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
}

.primary {
  background: var(--color-primary);
  color: white;
}

.primary:hover {
  background: var(--color-primary-dark);
  box-shadow: var(--shadow-md);
}
import styles from './Button.module.css';

function Button({ variant = 'primary', children, ...props }) {
  return (
    <button
      className={`${styles.button} ${styles[variant]}`}
      {...props}
    >
      {children}
    </button>
  );
}

Tailwind CSS

توفر Tailwind CSS فئات أدوات مساعدة تتيح لك تصميم المكونات مباشرة في JSX. إنه يلغي تبديل السياق بين ملفات CSS وJavaScript ويفرض نظام تصميم متسق من خلال تكوينه:

function Card({ title, description, image }) {
  return (
    <div className="rounded-lg shadow-md overflow-hidden
                    bg-white hover:shadow-lg transition-shadow">
      <img src={image} alt={title}
           className="w-full h-48 object-cover" />
      <div className="p-4">
        <h3 className="text-lg font-semibold text-gray-900">
          {title}
        </h3>
        <p className="mt-2 text-gray-600 text-sm">
          {description}
        </p>
      </div>
    </div>
  );
}

CSS-in-JS (المكونات المصممة، العاطفة)

تتيح لك مكتبات

CSS-in-JS كتابة CSS مباشرة في JavaScript الخاص بك، مع الوصول الكامل إلى الدعائم والحالة. على الرغم من قوتها، إلا أنها تضيف أعباء إضافية على وقت التشغيل وتفقد شعبيتها بشكل متزايد بالنسبة للتطبيقات التي يعرضها الخادم:

import styled from 'styled-components';

const Badge = styled.span`
  display: inline-flex;
  align-items: center;
  padding: 0.25rem 0.75rem;
  border-radius: 9999px;
  font-size: 0.75rem;
  font-weight: 600;
  background: ${props => props.variant === 'success'
    ? '#dcfce7' : '#dbeafe'};
  color: ${props => props.variant === 'success'
    ? '#166534' : '#1e40af'};
`;

بالنسبة للمشروعات الجديدة، يوصى بوحدات CSS أو Tailwind CSS عبر CSS-in-JS بسبب الأداء الأفضل والتوافق مع عرض الخادم.

بناء نظام تصميم باستخدام القصص المصورة

حزمة تكنولوجيا واجهة المستخدم الحديثةنظام التصميمالرموز والطباعة ولوحات الألوان ومقاييس التباعد وإرشادات العلامة التجاريةمكتبة المكوناتالأزرار والبطاقات والأشكال والنماذج والجداول - موثقة في Storybookمحرك السماتCSS خصائص مخصصة، الوضع الداكن/الفاتح، سمات ديناميكيةتخطيط سريع الاستجابةالشبكة، Flexbox، استعلامات الحاوية، الطباعة السائلة مع المشبك()طبقة إمكانية الوصولأدوار ARIA، التنقل عبر لوحة المفاتيح، إدارة التركيز، نسب التباين54321تعتمد كل طبقة على الطبقة أدناه - إمكانية الوصول هي الأساستجريد أعلى →

Storybook يوفر بيئة معزولة لتطوير وتوثيق مكونات واجهة المستخدم. إنه بمثابة أداة تطوير ودليل لأسلوب الحياة: يتيح

// Button.stories.jsx
import { Button } from './Button';

export default {
  title: 'Components/Button',
  component: Button,
  argTypes: {
    variant: {
      options: ['primary', 'secondary', 'ghost'],
      control: { type: 'select' },
    },
    size: {
      options: ['sm', 'md', 'lg'],
      control: { type: 'select' },
    },
  },
};

export const Primary = {
  args: { variant: 'primary', children: 'Click me' },
};

export const Secondary = {
  args: { variant: 'secondary', children: 'Click me' },
};

Storybook للمصممين والمطورين التعاون في المكونات بشكل منفصل، مما يضمن أن كل مكون يعمل بشكل صحيح قبل دمجه في التطبيق.

التفاعلات الدقيقة والرسوم المتحركة

الرسوم المتحركة المدروسة ترشد المستخدمين وتقدم تعليقات وتخلق إحساسًا بالصقل. Framer Motion هي مكتبة الرسوم المتحركة الرائدة لـ React.

الرسوم المتحركة الأساسية مع Framer Motion

import { motion } from 'framer-motion';

function FadeInCard({ children }) {
  return (
    <motion.div
      initial={{ opacity: 0, y: 20 }}
      animate={{ opacity: 1, y: 0 }}
      transition={{ duration: 0.4, ease: 'easeOut' }}
    >
      {children}
    </motion.div>
  );
}

الرسوم المتحركة بقائمة متداخلة

import { motion } from 'framer-motion';

const container = {
  hidden: { opacity: 0 },
  show: {
    opacity: 1,
    transition: { staggerChildren: 0.1 },
  },
};

const item = {
  hidden: { opacity: 0, x: -20 },
  show: { opacity: 1, x: 0 },
};

function AnimatedList({ items }) {
  return (
    <motion.ul variants={container}
      initial="hidden" animate="show">
      {items.map(i => (
        <motion.li key={i.id} variants={item}>
          {i.label}
        </motion.li>
      ))}
    </motion.ul>
  );
}

CSS التفاعلات الدقيقة فقط

لا تحتاج كل الرسوم المتحركة إلى مكتبة. تتعامل انتقالات وتحويلات CSS مع العديد من التفاعلات الشائعة بكفاءة:

.interactive-card {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.interactive-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}

.button-press:active {
  transform: scale(0.97);
}

أنماط المكونات التي يمكن الوصول إليها

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

إدارة التركيز

عند فتح الوسائط، انقل التركيز إلى الوسائط. عند إغلاقها، أعد التركيز إلى عنصر التشغيل. استخدم سمةinertلمنع التفاعل مع محتوى الخلفية:

function Modal({ isOpen, onClose, children }) {
  const closeRef = useRef();
  const previousFocus = useRef();

  useEffect(() => {
    if (isOpen) {
      previousFocus.current = document.activeElement;
      closeRef.current?.focus();
    } else {
      previousFocus.current?.focus();
    }
  }, [isOpen]);

  if (!isOpen) return null;

  return (
    <div role="dialog" aria-modal="true">
      <button ref={closeRef} onClick={onClose}
        aria-label="Close dialog">X</button>
      {children}
    </div>
  );
}

التنقل عبر لوحة المفاتيح

يجب أن تكون جميع العناصر التفاعلية قابلة للوصول من خلال لوحة المفاتيح. يجب أن تتبع المكونات المخصصة مثل القوائم المنسدلة وعلامات التبويب والدوائر أنماط تصميم WAI-ARIA لتفاعل لوحة المفاتيح.

تباين الألوان والتصميم المرئي

تأكد من أن النص يتوافق مع نسب التباين WCAG 2.1: 4.5:1 للنص العادي، 3:1 للنص الكبير. لا تعتمد على اللون وحده لنقل المعلومات، بل استخدم الرموز أو التسميات النصية أو الأنماط كمؤشرات تكميلية.

استراتيجيات التصميم سريعة الاستجابة

التصميم الحديث سريع الاستجابة يتجاوز نقاط التوقف. استخدم أسلوب تصميم مرن يتكيف بسلاسة مع جميع أحجام الشاشات.

الطباعة السائلة

استخدمclamp()لإنشاء طباعة تتدرج بسلاسة بين الحد الأدنى والحد الأقصى للحجم:

h1 {
  font-size: clamp(1.75rem, 4vw, 3rem);
  line-height: 1.2;
}

p {
  font-size: clamp(0.9rem, 1.5vw, 1.125rem);
  line-height: 1.6;
}

التباعد المستجيب

قم بتطبيق نفس مبدأ المرونة على التباعد والتخطيط:

.section {
  padding: clamp(2rem, 5vw, 4rem) clamp(1rem, 3vw, 2rem);
}

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: clamp(1rem, 2vw, 2rem);
}

تنفيذ الوضع الداكن

يتطلب الوضع الداكن أكثر من مجرد عكس الألوان. صمم لوحة ألوان منفصلة تحافظ على التباين المناسب والتسلسل الهرمي المرئي:

:root {
  --bg-primary: #ffffff;
  --bg-secondary: #f1f5f9;
  --text-primary: #0f172a;
  --text-secondary: #475569;
  --border-color: #e2e8f0;
}

[data-theme='dark'] {
  --bg-primary: #0f172a;
  --bg-secondary: #1e293b;
  --text-primary: #f1f5f9;
  --text-secondary: #94a3b8;
  --border-color: #334155;
}

في React، قم بإدارة السمة باستخدام موفر السياق واستمر في تفضيل المستخدم للتخزين المحلي:

function ThemeProvider({ children }) {
  const [theme, setTheme] = useState(() => {
    if (typeof window === 'undefined') return 'light';
    return localStorage.getItem('theme') ||
      (window.matchMedia('(prefers-color-scheme: dark)').matches
        ? 'dark' : 'light');
  });

  useEffect(() => {
    document.documentElement.setAttribute('data-theme', theme);
    localStorage.setItem('theme', theme);
  }, [theme]);

  return (
    <ThemeContext.Provider value={{ theme, setTheme }}>
      {children}
    </ThemeContext.Provider>
  );
}

تحسين الأداء

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

CSS

تخبر خاصيةcontainالمتصفح بأن محتويات العنصر مستقلة عن بقية الصفحة، مما يتيح تحسينات العرض:

.card {
  contain: layout style paint;
}

.sidebar {
  contain: layout size style;
}

خاصية تغيير الإرادة

استخدمwill-changeلـ تلميح للمتصفح حول الرسوم المتحركة القادمة. قم بتطبيقه باعتدال - يمكن أن يؤدي الإفراط في الاستخدام إلى زيادة استهلاك الذاكرة:

.animated-element {
  will-change: transform, opacity;
}

/* Remove after animation completes */
.animated-element.done {
  will-change: auto;
}

رؤية المحتوى

بالنسبة للصفحات الطويلة التي تحتوي على العديد من الأقسام، يسمحcontent-visibility: autoللمتصفح بتخطي عرض المحتوى خارج الشاشة بالكامل:

.blog-post-section {
  content-visibility: auto;
  contain-intrinsic-size: 0 500px;
}

الاستنتاج

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