كان موقعنا تحفة فنية… لكن للمبصرين فقط: كيف أنقذتنا معايير الوصولية (a11y) من جحيم استبعاد المستخدمين؟

يا جماعة الخير، بالصلاة على النبي… أذكر مرة، قبل كم سنة، كنت أنا وفريقي شغالين على مشروع، منصة تعليمية إلكترونية. صرفنا عليها شهور طويلة، سهرنا الليالي، وطلعنا بتصميم، والله يا جماعة، كان تحفة فنية. ألوان متناسقة، حركات (animations) سلسة، وتجربة بصرية تخطف الأنفاس. يوم الإطلاق، كانت الاحتفالات في المكتب “ع الحارك”، والكل مبسوط بالإنجاز.

بعد أسبوع، وصلني إيميل غيّر نظرتي لكل شيء. الإيميل كان من شب اسمه “أحمد”، طالب جامعي كفيف، كان متحمس جدًا يستخدم منصتنا. كتب في الإيميل: “يا عمي أبو عمر، يعطيكم العافية شغلكم بجنن من الصور اللي وصفولي إياها أصحابي، بس أنا مش شايف إشي! قارئ الشاشة تبعي (Screen Reader) ضايع، بحكيلي ‘زر’، ‘صورة’، ‘رابط’ بدون أي معنى. كأني ماشي في مدينة غريبة بعيون معصوبة”.

كلماته كانت زي الكف على وجهي. إحنا، بكل غرورنا بـ “التحفة الفنية”، بنينا جدارًا عاليًا أمام أحمد وكل اللي مثله. موقعنا الجميل كان جحيمًا لأي شخص لا يرى. هذه الحادثة كانت نقطة تحول، مش بس للمشروع، بل لفلسفتي كلها في البرمجة والتطوير. من يومها، صارت “الوصولية” أو الـ “Accessibility” (a11y) جزء لا يتجزأ من أي سطر كود بكتبه.

ما هي “الوصولية” (Accessibility)؟ ولماذا هي ليست رفاهية؟

ببساطة، الوصولية (والتي نختصرها أحيانًا بـ a11y لأن هناك 11 حرفًا بين الـ ‘a’ والـ ‘y’ في كلمة Accessibility) هي ممارسة تصميم وتطوير المواقع والتطبيقات بحيث يمكن للجميع استخدامها، بغض النظر عن قدراتهم الجسدية، الحسية، أو الإدراكية.

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

“الوصولية ليست ميزة إضافية (feature)، بل هي حق أساسي للمستخدم.” – أبو عمر

جحيم الاستبعاد: كيف يبدو موقعك “غير المتاح”؟

عشان تحس بمشكلة أحمد، خلينا نشوف كيف “بتشوف” التقنيات المساعدة (Assistive Technologies) موقعك المصمم بشكل سيء:

  • للمستخدم الكفيف (قارئ الشاشة): إذا كانت صورك بدون نص بديل (alt text)، قارئ الشاشة سيقول “صورة” أو “graphic-12345.jpg”. إذا كان الزر عبارة عن أيقونة بدون تسمية، سيقول “زر”. تجربة محبطة ومستحيلة.
  • للمستخدم الذي لديه إعاقة حركية: إذا كان موقعك لا يمكن التنقل فيه باستخدام لوحة المفاتيح فقط (بدون ماوس)، فهذا المستخدم محبوس. لا يستطيع الوصول للقوائم أو ملء النماذج.
  • للمستخدم الذي يعاني من ضعف البصر: إذا كان تباين الألوان ضعيفًا (مثلاً نص رمادي فاتح على خلفية بيضاء)، فالنص يكون غير قابل للقراءة.
  • للمستخدم الأصم أو ضعيف السمع: إذا كان محتواك يعتمد على الفيديو أو الصوت بدون توفير نصوص أو ترجمات (captions)، فقد ضاع المحتوى تمامًا بالنسبة له.

المعايير المنقذة: مبادئ WCAG الأربعة

الحمد لله، لسنا ضائعين في هذا المجال. هناك معايير عالمية واضحة اسمها “إرشادات الوصول إلى محتوى الويب” أو (Web Content Accessibility Guidelines – WCAG). هذه الإرشادات قائمة على أربعة مبادئ أساسية، سهلة التذكر (POUR):

  1. Perceivable (قابل للإدراك): يجب أن يكون المحتوى متاحًا للحواس. هذا يعني توفير بدائل نصية للصور، وترجمات للفيديو.
  2. Operable (قابل للتشغيل): يجب أن تكون واجهة المستخدم قابلة للتحكم. هذا يعني أن كل شيء يعمل بالماوس يجب أن يعمل بلوحة المفاتيح.
  3. Understandable (مفهوم): يجب أن يكون المحتوى والمعلومات واضحة وسهلة الفهم. لغة بسيطة، وتصميم متوقع (predictable).
  4. Robust (متين): يجب أن يكون الكود نظيفًا وقويًا بما يكفي ليتم تفسيره بشكل موثوق من قبل مختلف المتصفحات والتقنيات المساعدة.

خطوات عملية لإنقاذ موقعك: نصائح من خبصة أبو عمر

الكلام النظري حلو، بس كيف نطبق؟ إليك خلاصة خبرتي في خطوات عملية مع أمثلة كود.

1. استخدم HTML الدلالي (Semantic HTML) كأنه قانون

هذه أهم نصيحة على الإطلاق. الـ HTML فيه عناصر مصممة لتعطي معنى للتركيب، مش بس شكل. قارئ الشاشة يفهمها.

مثال سيء (لا تفعله!):

<!-- هذا ليس زرًا حقيقيًا! -->
<div class="button" onclick="submitForm()">إرسال</div>

مثال ممتاز (افعله دائمًا):

<!-- هذا زر حقيقي، مفهوم للكل -->
<button type="submit">إرسال</button>

استخدم <nav> للشريط العلوي، <main> للمحتوى الرئيسي، <footer> للتذييل، <article> للمقالات. هذا يعطي خريطة واضحة لموقعك للمستخدمين والتقنيات المساعدة.

2. النص البديل للصور (Alt Text) ليس خيارًا

كل صورة تنقل معلومة يجب أن تحتوي على وصف في السمة alt. الوصف يجب أن يكون موجزًا ومفيدًا.

مثال سيء:

<img src="chart.png" alt="صورة">

مثال ممتاز:

<img src="chart.png" alt="رسم بياني يوضح زيادة أرباح الربع الرابع بنسبة 20%">

إذا كانت الصورة للزينة فقط (decorative)، اترك الـ alt فارغًا (alt="") حتى يتجاهلها قارئ الشاشة.

3. لا تقتل التحديد (Outline) في CSS

كم مرة رأيت هذا الكود اللعين في ملفات الـ CSS؟

/* الجريمة الكبرى في عالم الوصولية */
*:focus {
  outline: none;
}

هذا الكود يجعل التنقل باستخدام لوحة المفاتيح مستحيلًا، لأن المستخدم لا يرى أين هو مؤشر الـ “focus”. إذا كنت لا تحب الشكل الافتراضي، قم بتصميمه بنفسك.

الحل الأفضل:

/* بديل جميل ومفيد */
*:focus-visible {
  outline: 2px solid #007bff;
  outline-offset: 2px;
  border-radius: 4px;
}

4. تباين الألوان هو صديقك

التصميم الجميل لا يعني استخدام ألوان باهتة. تأكد من أن تباين الألوان بين النص والخلفية كافٍ. هناك أدوات كثيرة أونلاين لفحص هذا، مثل “WebAIM Contrast Checker”. القاعدة العامة هي أن تكون النسبة 4.5:1 للنص العادي على الأقل.

5. استخدم ARIA عند الضرورة فقط

ARIA (Accessible Rich Internet Applications) هي مجموعة من السمات التي يمكنك إضافتها لعناصر HTML لجعلها أكثر قابلية للوصول، خاصة للمكونات المعقدة (مثل القوائم المنسدلة المخصصة).

القاعدة الأولى لـ ARIA هي: “لا تستخدم ARIA”. بمعنى، إذا كان هناك عنصر HTML أصلي يقوم بالوظيفة، استخدمه. إذا لم يكن موجودًا، حينها فقط استخدم ARIA بحذر.

مثال: زر أيقونة بدون نص

<!-- قارئ الشاشة لا يعرف ما هذا -->
<button><i class="fa fa-times"></i></button>

<!-- الحل باستخدام aria-label -->
<button aria-label="إغلاق النافذة"><i class="fa fa-times" aria-hidden="true"></i></button>

لاحظ أننا أضفنا aria-hidden="true" على الأيقونة نفسها لأنها للزينة، والوصف المهم موجود في aria-label على الزر.

الخلاصة: من تحفة بصرية إلى تحفة إنسانية

العودة لقصة أحمد… بعد إيميله، شكلنا فريق عمل مصغر، وقضينا أسبوعين “نصلح خبصتنا”. أضفنا HTML دلالي، كتبنا نصوصًا بديلة لكل الصور، ضبطنا الألوان، وتأكدنا أن كل شيء يعمل بالكيبورد. ثم أرسلنا لأحمد نسخة تجريبية.

رده هذه المرة كان أغلى من كل المديح الذي حصلنا عليه للتصميم البصري. قال: “الآن، أشعر أن هذا المكان بُني لي أيضًا. شكرًا لكم”.

يا أصدقائي المبرمجين والمصممين، الوصولية ليست مجرد قائمة مهام تقنية. هي تغيير في العقلية. هي أن تفكر في “الجميع” عندما تبني، وليس فقط في المستخدم “المثالي” الذي يشبهك. بناء تجارب شاملة لا يقلل من جمال التصميم، بل يزيده عمقًا وإنسانية. لا تبنوا جدرانًا، بل ابنوا جسورًا. 💻❤️

أبو عمر

سجل دخولك لعمل نقاش تفاعلي

كافة المحادثات خاصة ولا يتم عرضها على الموقع نهائياً

آراء من النقاشات

لا توجد آراء منشورة بعد. كن أول من يشارك رأيه!

آخر المدونات

برمجة وقواعد بيانات

تحديثات قاعدة البيانات بدون توقف: كيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من جحيم التوقفات المجدولة؟

هل سئمت من إيقاف الخدمة مع كل تحديث لهيكلة قاعدة البيانات؟ أشارككم قصة حقيقية وكيف أنقذنا نمط التوسيع والتعاقد (Expand/Contract) من ليالي النشر الطويلة والمُجهدة،...

4 يونيو، 2026 قراءة المزيد
الشبكات والـ APIs

كانت إعادة المحاولة كارثة: كيف أنقذتنا مفاتيح عدم تكرار العمليات (Idempotency Keys) من جحيم الفواتير المزدوجة؟

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

4 يونيو، 2026 قراءة المزيد
الحوسبة السحابية

من التوقف التام إلى النجاة: كيف أنقذتنا استراتيجية “الضوء المرشد” (Pilot Light) يوم انقطعت السحابة؟

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

4 يونيو، 2026 قراءة المزيد
التوظيف وبناء الهوية التقنية

كانت مهمتي البرمجية للاختبار مجرد كود: كيف أنقذني توثيق القرارات من جحيم الصمت بعد المقابلة؟

أشارككم قصة حقيقية من بداياتي، وكيف تعلمت بالطريقة الصعبة أن المهمة البرمجية ليست مجرد كتابة كود، بل هي فرصة لإظهار طريقة تفكيرك. اكتشف كيف يمكن...

4 يونيو، 2026 قراءة المزيد
التكنلوجيا المالية Fintech

من الانتظار لأيام إلى الدفع في ثوانٍ: كيف أنقذتنا شبكات الدفع الفوري من جحيم التحويلات البنكية؟

أسرد لكم من واقع تجربتي كـ "أبو عمر"، كيف عانينا من بطء وتكلفة التحويلات البنكية الدولية، وكيف جاءت شبكات الدفع الفوري ومعيار ISO 20022 لتكون...

4 يونيو، 2026 قراءة المزيد
البنية التحتية وإدارة السيرفرات

كان كل خادم لدينا ‘ندفة ثلج’ فريدة: كيف أنقذنا ‘الكود كبنية تحتية’ (IaC) من جحيم الانجراف اليدوي؟

في هذه المقالة، أشارككم قصة حقيقية من قلب المعركة التقنية مع "خوادم ندفات الثلج" الفوضوية. سنغوص في مفهوم "الكود كبنية تحتية" (IaC) وكيف أن أدوات...

4 يونيو، 2026 قراءة المزيد
اختبارات الاداء والجودة

كانت تغطية الاختبارات 100% لكن الأخطاء تتسرب: كيف أنقذنا “الاختبار الطفري” من جحيم الثقة الزائفة؟

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

4 يونيو، 2026 قراءة المزيد
البودكاست