الفرق بين المراجعتين لصفحة: «React/accessibility»
Kinan-mawed (نقاش | مساهمات) لا ملخص تعديل |
Kinan-mawed (نقاش | مساهمات) لا ملخص تعديل |
||
سطر 19: | سطر 19: | ||
يحتوي مستند دليل سهولة الوصول - تطبيقات الإنترنت سهلة الوصول (Web Accessibility Initiative - Accessible Rich Internet Applications ) على تقنيات لبناء أدوات ذكية في JavaScript سهلة الوصول بشكلٍ كامل. | يحتوي مستند دليل سهولة الوصول - تطبيقات الإنترنت سهلة الوصول (Web Accessibility Initiative - Accessible Rich Internet Applications ) على تقنيات لبناء أدوات ذكية في JavaScript سهلة الوصول بشكلٍ كامل. | ||
انتبه إلى أنّ خاصيّات <code>aria-*</code> في HTML ليست كلّها مدعومة بشكلٍ كامل في JSX. وفي حين أنّ معظم خاصيّات DOM تُكتَب في React بشكل camelCase، ينبغي كتابة خاصيّات <code>aria-*</code> بحالة hyphen-cased (والتي تُعرَف أيضًا بحالة kebab-case، أو lisp-case، إلخ..) كما هي حالتها في HTML: | انتبه إلى أنّ خاصيّات <code>aria-*</code> في HTML ليست كلّها مدعومة بشكلٍ كامل في JSX. وفي حين أنّ معظم خاصيّات DOM تُكتَب في React بشكل camelCase، ينبغي كتابة خاصيّات <code>aria-*</code> بحالة hyphen-cased (والتي تُعرَف أيضًا بحالة kebab-case، أو lisp-case، إلخ..) كما هي حالتها في HTML:<syntaxhighlight lang="javascript"> | ||
<input | |||
type="text" | |||
aria-label={labelText} | |||
aria-required="true" | |||
onChange={onchangeHandler} | |||
value={inputValue} | |||
name="name" | |||
/> | |||
</syntaxhighlight> | |||
== HTML الخاصة بدلالات الألفاظ (Semantic HTML) == | |||
وهي تهتم بتقديم المعنى الدلالي لكل عنصر من عناصر HTML بدلًا من الاهتمام فقط بما يُمثِّله هذا العنصر. وهي أساس سهولة الوصول في تطبيقات الويب. حيث يُعطينا استخدام عناصر HTML المتنوعة لتعزيز المعنى الدلالي للمعلومات في مواقعنا سهولة للوصول بشكلٍ مجاني. | |||
* مرجع عناصر HTML. | |||
أحيانًا نخرق دلالات HTML عندما نُضيف عناصر <code><nowiki><div></nowiki></code> إلى JSX لجعل شيفرة React تعمل، خاصّة عند التعامل مع القوائم (<code><nowiki><ol></nowiki></code>، و <code><nowiki><ul></nowiki></code>، و <code><nowiki><dl></nowiki></code>) والجدول <code><nowiki><table></nowiki></code>. في هذه الحالات يجب أن نستخدم الأجزاء (Fragments) في React لتجميع عناصر متعددة معًا. | |||
على سبيل المثال:<syntaxhighlight lang="javascript"> | |||
import React, { Fragment } from 'react'; | |||
function ListItem({ item }) { | |||
return ( | |||
<Fragment> | |||
<dt>{item.term}</dt> | |||
<dd>{item.description}</dd> | |||
</Fragment> | |||
); | |||
} | |||
function Glossary(props) { | |||
return ( | |||
<dl> | |||
{props.items.map(item => ( | |||
// يجب أن تمتلك الأجزاء أيضًا خاصية مفتاح عند تعيين المجموعات | |||
<Fragment key={item.id}> | |||
<dt>{item.term}</dt> | |||
<dd>{item.description}</dd> | |||
</Fragment> | |||
))} | |||
</dl> | |||
); | |||
} | |||
</syntaxhighlight>عندما لا تحتاج أي خاصيّات ضمن الوسم <code>Fragment</code> تستطيع أيضًا استخدام الصياغة المختصرة إن كانت أدواتك تدعمها:<syntaxhighlight lang="javascript"> | |||
function ListItem({ item }) { | |||
return ( | |||
<> | |||
<dt>{item.term}</dt> | |||
<dd>{item.description}</dd> | |||
</> | |||
); | |||
} | |||
</syntaxhighlight>للمزيد من المعلومات انظر إلى توثيق الأجزاء في React. | |||
== الحقول (Forms) سهلة الوصول == | |||
=== التسمية (Labeling) === | |||
يجب تسمية كل حقل في HTML، مثل <code><input></code> و <code><textarea></code> بطريقة سهلة الوصول. يجب علينا تزويد تسميات وصفية تكون ظاهرة أيضًا للقارئين. | |||
تُرينا المصادر التالية كيفية فعل ذلك: | |||
* شرح كيفيّة تسمية العناصر المُقدَّم من قبل W3C. | |||
* شرح كيفيّة تسمية العناصر المُقدَّم من قبل WebAIM. | |||
* شرح الأسماء سهلة الوصول المُقدَّم من قبل مجموعة Paciello. | |||
على الرغم من أنّه يُمكِن استخدام ممارسات HTML المعيارية هذه بشكلٍ مباشر في React، لاحظ أنّ الخاصيّة <code>for</code> تُكتَب بالشكل <code>htmlFor</code> في JSX: |
مراجعة 09:33، 28 أغسطس 2018
الفائدة من سهولة الوصول
سهولة الوصول للويب (Web accessibility) والتي يشار إليها أيضًا بالرمز a11y
، هي تصميم وإنشاء مواقع يُمكِن استخدامها من قبل أي شخص. يكون دعم سهولة الوصول ضروريًّا للسماح للتقنيات المساعدة بالتعامل مع صفحات الويب.
تدعم React بشكلٍ كامل بناء مواقع سهلة الوصول، وذلك عن طريق استخدام تقنيات HTML المعياريّة عادةً.
المعايير والتوجيهات
WCAG
تزوّدنا توجيهات سهولة الوصول لمحتوى الويب (Web Content Accessibility Guidelines) بتوجيهات لإنشاء مواقع سهلة الوصول.
تعطينا القوائم التالية فكرة عامة حول ذلك:
- قائمة التوجيهات المُقدَّمة من Wuhcag.
- قائمة التوجيهات المُقدَّمة من WebAIM.
- قائمة التوجيهات من مشروع A11Y.
WAI-ARIA
يحتوي مستند دليل سهولة الوصول - تطبيقات الإنترنت سهلة الوصول (Web Accessibility Initiative - Accessible Rich Internet Applications ) على تقنيات لبناء أدوات ذكية في JavaScript سهلة الوصول بشكلٍ كامل.
انتبه إلى أنّ خاصيّات aria-*
في HTML ليست كلّها مدعومة بشكلٍ كامل في JSX. وفي حين أنّ معظم خاصيّات DOM تُكتَب في React بشكل camelCase، ينبغي كتابة خاصيّات aria-*
بحالة hyphen-cased (والتي تُعرَف أيضًا بحالة kebab-case، أو lisp-case، إلخ..) كما هي حالتها في HTML:
<input
type="text"
aria-label={labelText}
aria-required="true"
onChange={onchangeHandler}
value={inputValue}
name="name"
/>
HTML الخاصة بدلالات الألفاظ (Semantic HTML)
وهي تهتم بتقديم المعنى الدلالي لكل عنصر من عناصر HTML بدلًا من الاهتمام فقط بما يُمثِّله هذا العنصر. وهي أساس سهولة الوصول في تطبيقات الويب. حيث يُعطينا استخدام عناصر HTML المتنوعة لتعزيز المعنى الدلالي للمعلومات في مواقعنا سهولة للوصول بشكلٍ مجاني.
- مرجع عناصر HTML.
أحيانًا نخرق دلالات HTML عندما نُضيف عناصر <div>
إلى JSX لجعل شيفرة React تعمل، خاصّة عند التعامل مع القوائم (<ol>
، و <ul>
، و <dl>
) والجدول <table>
. في هذه الحالات يجب أن نستخدم الأجزاء (Fragments) في React لتجميع عناصر متعددة معًا.
على سبيل المثال:
import React, { Fragment } from 'react';
function ListItem({ item }) {
return (
<Fragment>
<dt>{item.term}</dt>
<dd>{item.description}</dd>
</Fragment>
);
}
function Glossary(props) {
return (
<dl>
{props.items.map(item => (
// يجب أن تمتلك الأجزاء أيضًا خاصية مفتاح عند تعيين المجموعات
<Fragment key={item.id}>
<dt>{item.term}</dt>
<dd>{item.description}</dd>
</Fragment>
))}
</dl>
);
}
عندما لا تحتاج أي خاصيّات ضمن الوسم Fragment
تستطيع أيضًا استخدام الصياغة المختصرة إن كانت أدواتك تدعمها:
function ListItem({ item }) {
return (
<>
<dt>{item.term}</dt>
<dd>{item.description}</dd>
</>
);
}
للمزيد من المعلومات انظر إلى توثيق الأجزاء في React.
الحقول (Forms) سهلة الوصول
التسمية (Labeling)
يجب تسمية كل حقل في HTML، مثل <input>
و <textarea>
بطريقة سهلة الوصول. يجب علينا تزويد تسميات وصفية تكون ظاهرة أيضًا للقارئين.
تُرينا المصادر التالية كيفية فعل ذلك:
- شرح كيفيّة تسمية العناصر المُقدَّم من قبل W3C.
- شرح كيفيّة تسمية العناصر المُقدَّم من قبل WebAIM.
- شرح الأسماء سهلة الوصول المُقدَّم من قبل مجموعة Paciello.
على الرغم من أنّه يُمكِن استخدام ممارسات HTML المعيارية هذه بشكلٍ مباشر في React، لاحظ أنّ الخاصيّة for
تُكتَب بالشكل htmlFor
في JSX: