# ساخت صفحات وب قابل دسترس

> اسکچنوت توسط [تومومی ایمورا](https://twitter.com/girlie_mac)
```mermaid
journey
title ماجراجویی یادگیری دسترسی شما
section بنیاد
درک کاربران: 5: You
ابزارهای تست: 4: You
اصول POUR: 5: You
section مهارت ساختن
HTML معنایی: 4: You
طراحی بصری: 5: You
تکنیکهای ARIA: 4: You
section تسلط بر تمرین
ناوبری با صفحهکلید: 5: You
دسترسی فرم: 4: You
تست در دنیای واقعی: 5: You
```
## آزمون پیش از درس
[آزمون پیش از درس](https://ff-quizzes.netlify.app/web/)
> قدرت وب در جهانشمول بودن آن است. دسترسی همه افراد صرفنظر از معلولیت یک جنبه اساسی است.
>
> - سر تیموتی برنرز-لی، مدیر W3C و مخترع وب جهانی
یک چیزی که ممکن است شما را شگفتزده کند: وقتی وبسایتهای قابل دسترس میسازید، فقط به افراد معلول کمک نمیکنید—در واقع وب را برای همه بهتر میکنید!
تا به حال به همان شیبهای کنار پیادهروها فکر کردهاید؟ آنها در اصل برای ویلچر طراحی شده بودند، اما اکنون به کسانی که کالسکه بچه دارند، کارگران تحویل با گاری، مسافران با چمدانهای چرخدار و دوچرخهسواران هم کمک میکنند. طراحی وب قابل دسترس دقیقاً همینگونه کار میکند—راهحلهایی که به یک گروه کمک میکنند معمولاً به نفع همه است. جالب نیست؟
در این درس، بررسی خواهیم کرد چگونه وبسایتهایی بسازیم که واقعاً برای همه کار کنند، صرفنظر از روش مرور وبشان. تکنیکهای عملی که در استانداردهای وب تعبیه شدهاند را خواهید شناخت، ابزارهای تست را تمرین میکنید و خواهید دید که چگونه دسترسیپذیری سایتهای شما را برای همه کاربران کاربردیتر میکند.
تا پایان این درس، اعتماد به نفس لازم برای ادغام دسترسیپذیری به صورت طبیعی در روند توسعه خود را خواهید داشت. آمادهاید ببینید چگونه انتخابهای طراحی دقیق میتوانند وب را به روی میلیاردها کاربر باز کنند؟ بزن بریم!
```mermaid
mindmap
root((دسترسی وب))
Users
Screen readers[خواننده صفحهنمایش]
Keyboard navigation[ناوبری صفحهکلید]
Voice control[کنترل صوتی]
Magnification[بزرگنمایی]
Technologies
HTML semantics[معنای HTML]
ARIA attributes[ویژگیهای ARIA]
CSS focus indicators[نشانههای تمرکز CSS]
Keyboard events[رویدادهای صفحهکلید]
Benefits
Wider audience[مخاطب گستردهتر]
Better SEO[سئو بهتر]
Legal compliance[رعایت قوانین]
Universal design[طراحی جهانی]
Testing
Automated tools[ابزارهای خودکار]
Manual testing[آزمایش دستی]
User feedback[بازخورد کاربران]
Real assistive tech[فناوری کمکی واقعی]
```
> میتوانید این درس را در [Microsoft Learn](https://docs.microsoft.com/learn/modules/web-development-101/accessibility/?WT.mc_id=academic-77807-sagibbon) نیز دنبال کنید!
## درک فناوریهای کمکی
قبل از شروع کدنویسی، بیایید لحظهای وقت بگذاریم تا بفهمیم چگونه افراد با تواناییهای متفاوت واقعاً وب را تجربه میکنند. این فقط نظریه نیست—درک این الگوهای ناوبری دنیای واقعی شما را به توسعهدهندهای بسیار بهتر تبدیل میکند!
فناوریهای کمکی ابزارهای فوقالعادهای هستند که به افراد معلول کمک میکنند به روشهایی که ممکن است برای شما شگفتانگیز باشد با وبسایتها تعامل داشته باشند. وقتی نحوه عملکرد این فناوریها را یاد بگیرید، خلق تجارب وب قابل دسترس خیلی شهودیتر خواهد بود. مثل این است که یاد بگیرید کد خود را از دید دیگران ببینید.
### صفحهخوانها
[صفحهخوانها](https://en.wikipedia.org/wiki/Screen_reader) قطعات بسیار پیشرفته فناوری هستند که متن دیجیتال را به صوت یا خروجی بریل تبدیل میکنند. اگرچه عمدتاً توسط افراد دارای نقص بینایی استفاده میشوند، اما برای کاربران دارای مشکلات یادگیری مثل دیسلکسیا هم بسیار مفیدند.
من دوست دارم صفحهخوان را مانند راوی هوشمندی تصور کنم که کتابی برای شما میخواند. محتوا را به ترتیب منطقی بلند میخواند، عناصر تعاملی مثل «دکمه» یا «لینک» را اعلام میکند و میانبرهای صفحهکلید برای پرش در صفحه فراهم میآورد. اما موضوع این است—صفحهخوانها فقط زمانی میتوانند جادوی خود را انجام دهند که ما وبسایتها را با ساختار صحیح و محتوای معنادار بسازیم. اینجاست که شما به عنوان توسعهدهنده وارد میشوید!
**صفحهخوانهای محبوب در پلتفرمها:**
- **ویندوز**: [NVDA](https://www.nvaccess.org/about-nvda/) (رایگان و محبوبترین)، [JAWS](https://webaim.org/articles/jaws/)، [Narrator](https://support.microsoft.com/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1/?WT.mc_id=academic-77807-sagibbon) (سازگار)
- **macOS/iOS**: [VoiceOver](https://support.apple.com/guide/voiceover/welcome/10) (سازگار و بسیار توانمند)
- **اندروید**: [TalkBack](https://support.google.com/accessibility/android/answer/6283677) (سازگار)
- **لینوکس**: [Orca](https://wiki.gnome.org/Projects/Orca) (رایگان و متنباز)
**چگونگی ناوبری صفحهخوانها در محتوای وب:**
صفحهخوانها روشهای ناوبری متعددی ارائه میکنند که مرور را برای کاربران باتجربه کارآمد میکند:
- **خواندن ترتیبی**: محتوا را از بالا به پایین میخواند، مانند دنبال کردن یک کتاب
- **ناوبری بخشها (لندمارک)**: پرش بین بخشهای صفحه (هدر، ناو، اصلی، فوتر)
- **ناوبری تیترها**: پرش بین تیترها برای فهم ساختار صفحه
- **فهرست لینکها**: تولید فهرستی از همه لینکها برای دسترسی سریع
- **کنترلهای فرم**: پرش مستقیم بین فیلدهای ورودی و دکمهها
> 💡 **یک نکته که ذهن من را منفجر کرد**: ۶۸٪ کاربران صفحهخوان عمدتاً با تیترها ناوبری میکنند ([پژوهش WebAIM](https://webaim.org/projects/screenreadersurvey9/#finding)). این یعنی ساختار تیترهای شما مثل نقشه راه برای کاربران است—وقتی درست باشد، عملاً به مردم کمک میکنید سریعتر راه خود را در محتوای شما بیابند!
### ساخت روند کاری تست خود
خبر خوب اینکه—تست مؤثر دسترسیپذیری نباید دلهرهآور باشد! شما میخواهید ابزارهای خودکار (که در یافتن مشکلات آشکار عالی هستند) را با تستهای دستی ترکیب کنید. در اینجا یک روش سیستماتیک آوردهام که بیشترین مشکلات را میگیرد بدون اینکه کل روزتان را صرف کند:
**روند کاری تست دستی ضروری:**
```mermaid
flowchart TD
A[🚀 شروع تست] --> B{⌨️ ناوبری صفحهکلید}
B --> C[تب زدن در همه عناصر تعاملی]
C --> D{🎧 تست صفحهخوان}
D --> E[آزمایش با NVDA/VoiceOver]
E --> F{🔍 تست بزرگنمایی}
F --> G[بزرگنمایی به ۲۰۰٪ و آزمایش عملکرد]
G --> H{🎨 بررسی رنگ/کنتراست}
H --> I[اطمینان از رعایت نسبتهای کنتراست در تمام متنها]
I --> J{👁️ مدیریت فوکوس}
J --> K[اطمینان از نمایان بودن نشانگرهای فوکوس]
K --> L[✅ تست کامل شد]
style A fill:#e3f2fd
style L fill:#e8f5e8
style B fill:#fff3e0
style D fill:#f3e5f5
style F fill:#e0f2f1
style H fill:#fce4ec
style J fill:#e8eaf6
```
**چکلیست تست مرحله به مرحله:**
1. **ناوبری صفحهکلید**: فقط از Tab، Shift+Tab، Enter، Space و کلیدهای پیکان استفاده کنید
2. **تست صفحهخوان**: فعالسازی NVDA، VoiceOver یا Narrator و مرور با چشم بسته
3. **تست بزرگنمایی**: تست در سطوح بزرگنمایی ۲۰۰٪ و ۴۰۰٪
4. **بررسی کنتراست رنگ**: تمامی متنها و اجزای UI را بررسی کنید
5. **تست نشانگر فوکوس**: اطمینان از اینکه همه عناصر تعاملی حالات فوکوس قابل مشاهده دارند
✅ **با Lighthouse شروع کنید**: ابزار توسعهدهنده مرورگر خود را باز کنید، یک ارزیابی دسترسیپذیری Lighthouse انجام دهید، سپس از نتایج برای هدایت تمرکز تست دستی خود استفاده کنید.
### ابزارهای بزرگنمایی و زوم
میدانید وقتی متن خیلی کوچک است، روی گوشی دو انگشت خود را به هم نزدیک یا از هم دور میکنید یا در نور شدید خورشید به صفحه لپتاپ خود چشمکی میزنید؟ بسیاری از کاربران هر روز برای خوانا کردن محتوا به ابزارهای بزرگنمایی متکی هستند. این شامل افراد با بینایی کم، سالمندان و هر کسی که تا به حال تلاش کرده بیرون از خانه وبسایتی را بخواند.
فناوریهای زوم مدرن فراتر از فقط بزرگتر کردن چیزها پیش رفتهاند. درک اینکه این ابزارها چگونه کار میکنند به شما کمک میکند طراحیهای واکنشگرا ایجاد کنید که در هر سطح بزرگنمایی کاربردی و جذاب باقی بمانند.
**قابلیتهای بزرگنمایی مرورگرهای مدرن:**
- **زوم صفحه**: همه محتوا را متناسب بزرگ میکند (متن، تصاویر، چیدمان) - این روش ترجیحی است
- **زوم فقط متن**: اندازه فونت را افزایش میدهد در حالی که چیدمان اصلی حفظ میشود
- **زوم با لمس نوک انگشتها (Pinch-to-zoom)**: پشتیبانی ژست موبایل برای بزرگنمایی موقت
- **پشتیبانی مرورگر**: همه مرورگرهای مدرن زوم تا ۵۰۰٪ را بدون شکستن عملکرد پشتیبانی میکنند
**نرمافزارهای تخصصی بزرگنمایی:**
- **ویندوز**: [Magnifier](https://support.microsoft.com/windows/use-magnifier-to-make-things-on-the-screen-easier-to-see-414948ba-8b1c-d3bd-8615-0e5e32204198) (سازگار)، [ZoomText](https://www.freedomscientific.com/training/zoomtext/getting-started/)
- **macOS/iOS**: [Zoom](https://www.apple.com/accessibility/mac/vision/) (سازگار با ویژگیهای پیشرفته)
> ⚠️ **ملاحظه طراحی**: WCAG میگوید محتوا باید زمانی که به ۲۰۰٪ بزرگ شده به طور کامل کاربردی بماند. در این سطح، اسکرول افقی باید حداقلی باشد و همه عناصر تعاملی باید قابل دسترس باقی بمانند.
✅ **طراحی واکنشگرای خود را تست کنید**: مرورگر را روی ۲۰۰٪ و ۴۰۰٪ بزرگنمایی کنید. آیا چیدمان شما به طور مناسب تطبیق مییابد؟ آیا بدون اسکرول زیاد به همه عملکردها میتوانید دسترسی داشته باشید؟
## ابزارهای مدرن تست دسترسیپذیری
حالا که فهمیدید چگونه افراد با فناوریهای کمکی در وب ناوبری میکنند، بیایید به ابزارهایی بپردازیم که به شما کمک میکنند وبسایتهای قابل دسترس بسازید و تست کنید.
آن را اینطور تصور کنید: ابزارهای خودکار در یافتن مشکلات واضح (مثل نبود alt در تصویر) عالی هستند، در حالی که تستهای دستی به شما اطمینان میدهد سایت در دنیای واقعی راحت استفاده شود. با هم به شما اطمینان میدهند که سایتها برای همه کار میکنند.
### تست کنتراست رنگ
خبر خوب این است که: کنتراست رنگ یکی از رایجترین مشکلات دسترسیپذیری است، اما همچنین یکی از آسانترینها برای رفع میباشد. کنتراست خوب برای همه مفید است—از کاربران دارای نقص بینایی تا کسانی که سعی میکنند گوشی خود را کنار دریا بخوانند.
**نیازمندیهای کنتراست WCAG:**
| نوع متن | WCAG AA (حداقل) | WCAG AAA (بهبود یافته) |
|---------|-----------------|-----------------------|
| **متن معمولی** (زیر ۱۸pt) | نسبت کنتراست ۴.۵:۱ | نسبت کنتراست ۷:۱ |
| **متن بزرگ** (۱۸pt+ یا ۱۴pt+ بولد) | نسبت کنتراست ۳:۱ | نسبت کنتراست ۴.۵:۱ |
| **اجزای UI** (دکمهها، مرزهای فرم) | نسبت کنتراست ۳:۱ | نسبت کنتراست ۳:۱ |
**ابزارهای تست ضروری:**
- [Colour Contrast Analyser](https://www.tpgi.com/color-contrast-checker/) - اپ دسکتاپ با انتخابگر رنگ
- [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) - وبمحور با بازخورد فوری
- [Stark](https://www.getstark.co/) - افزونه طراحی برای Figma، Sketch، Adobe XD
- [Accessible Colors](https://accessible-colors.com/) - پیدا کردن پالتهای رنگ دسترسیپذیر
✅ **پالت رنگ بهتر بسازید**: با رنگهای برند خود شروع کنید و با چکرهای کنتراست، تنوعهای قابل دسترس بسازید. اینها را به عنوان نشانهای رنگ دسترسیپذیر در سیستم طراحی خود مستندسازی کنید.
### نقد جامع دسترسیپذیری
موثرترین تست دسترسیپذیری ترکیبی از روشهای مختلف است. هیچ ابزار واحدی همه چیز را پیدا نمیکند، بنابراین ساخت روتین تست با روشهای مختلف پوشش کاملی را تضمین میکند.
**تست مبتنی بر مرورگر (در DevTools تعبیه شده):**
- **Chrome/Edge**: ارزیابی دسترسیپذیری Lighthouse + پنل Accessibility
- **Firefox**: بازرس دسترسیپذیری با نمای درختی دقیق
- **Safari**: تب Audit در Web Inspector با شبیهسازی VoiceOver
**افزونههای تست حرفهای:**
- [axe DevTools](https://www.deque.com/axe/devtools/) - تست خودکار استاندارد صنعتی
- [WAVE](https://wave.webaim.org/extension/) - بازخورد بصری با برجستهسازی خطاها
- [Accessibility Insights](https://accessibilityinsights.io/) - مجموعه تست جامع مایکروسافت
**خط فرمان و یکپارچهسازی CI/CD:**
- [axe-core](https://github.com/dequelabs/axe-core) - کتابخانه جاوااسکریپت برای تست خودکار
- [Pa11y](https://pa11y.org/) - ابزار تست دسترسیپذیری خط فرمان
- [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) - امتیازدهی خودکار دسترسیپذیری
> 🎯 **هدف تست**: هدف گرفتن امتیاز دسترسیپذیری Lighthouse بالای ۹۵ به عنوان خط پایه. به یاد داشته باشید، ابزارهای خودکار فقط حدود ۳۰-۴۰٪ مشکلات را میگیرند—تست دستی هنوز حیاتی است!
### 🧠 **بررسی مهارتهای تست: آمادهی پیدا کردن مشکلات هستید؟**
**بیایید ببینیم احساس شما درباره تست دسترسیپذیری چیست:**
- کدام روش تست در حال حاضر برای شما قابل دسترستر به نظر میرسد؟
- میتوانید تصور کنید یک روز کامل فقط با صفحهکلید مرور کنید؟
- یکی از موانع دسترسیپذیری که شخصاً در فضای وب تجربه کردهاید چیست؟
```mermaid
pie title "مسائل دسترسی گرفته شده توسط روشهای مختلف"
"ابزارهای خودکار" : 35
"آزمون دستی" : 40
"بازخورد کاربران" : 25
```
> **تشویق اعتماد به نفس**: تستکنندگان حرفهای دسترسیپذیری دقیقاً از همین ترکیب روشها استفاده میکنند. شما در حال یادگیری روشهای استاندارد صنعتی هستید!
## ساخت دسترسیپذیری از پایه
کلید موفقیت دسترسیپذیری این است که آن را از همان روز اول در بنیاد خود بسازید. میدانم وسوسه میشوید فکر کنید «بعداً دسترسیپذیری را اضافه میکنم»، اما این مثل این است که بخواهید پس از ساختن خانه، برایش رمپ بسازید. ممکن؟ بله. آسان؟ نه خیلی.
به دسترسیپذیری مثل برنامهریزی خانه فکر کنید—خیلی آسانتر است که در طرح اولیه معمارانه خود دسترسی ویلچر را بگنجانید تا اینکه بخواهید بعداً همه چیز را بازسازی کنید.
### اصول POUR: پایه دسترسیپذیری شما
راهنماییهای محتوای وب قابل دسترس (WCAG) حول چهار اصل بنیادین ساخته شدهاند که کلمه POUR را تشکیل میدهند. نگران نباشید—اینها مفاهیم خشک و دانشگاهی نیستند! در واقع دستورالعملهای عملی برای ساخت محتوایی هستند که برای همه کار میکند.
وقتی اصول POUR را یاد بگیرید، تصمیمگیریهای دسترسیپذیری بسیار شهودیتر میشود. این مثل داشتن یک چکلیست ذهنی است که شما را در انتخابهای طراحی هدایت میکند. بیایید آن را بررسی کنیم:
```mermaid
flowchart LR
A[🔍 قابلادراک آیا کاربران میتوانند آن را حس کنند؟] --> B[🎮 قابلعمل آیا کاربران میتوانند از آن استفاده کنند؟]
B --> C[📖 قابلفهم آیا کاربران میتوانند آن را درک کنند؟]
C --> D[💪 مقاوم آیا در همه جا کار میکند؟]
A1[متن جایگزین زیرنویسها کنتراست] --> A
B1[دسترسی کیبورد بدون تشنج محدودیت زمانی] --> B
C1[زبان واضح قابل پیشبینی کمک به رفع خطا] --> C
D1[کد معتبر سازگار آیندهنگر] --> D
style A fill:#e1f5fe
style B fill:#e8f5e8
style C fill:#fff3e0
style D fill:#f3e5f5
```
**🔍 قابل درک توسط حواس (Perceivable)**: اطلاعات باید به گونهای ارائه شود که کاربران بتوانند از حسهای در دسترس خود آن را درک کنند
- جایگزینهای متنی برای محتوای غیر متنی (تصاویر، ویدئو، صدا) ارائه دهید
- کنتراست رنگ کافی برای تمام متنها و اجزای UI را تضمین کنید
- زیرنویس و متنهای ضبط شده برای محتوای چندرسانهای فراهم کنید
- محتوایی طراحی کنید که در اندازهگیری تا ۲۰۰٪ همچنان کاربردی باشد
- برای انتقال اطلاعات از چند ویژگی حسی (نه فقط رنگ) استفاده کنید
**🎮 قابل عملکرد (Operable)**: تمام اجزای رابط باید از طریق روشهای ورودی موجود قابل کارکرد باشند
- همه عملکردها را از طریق ناوبری صفحهکلید قابل دسترس کنید
- به کاربران زمان کافی برای خواندن و تعامل با محتوا بدهید
- از محتوایی که باعث تشنج یا اختلالات وستیبولار میشود اجتناب کنید
- به کمک ساختار واضح و لندمارکها، ناوبری را کارآمد کنید
- اطمینان حاصل کنید عناصر تعاملی اندازه هدف مناسبی دارند (حداقل ۴۴px)
**📖 قابل فهم (Understandable)**: اطلاعات و عملکرد رابط باید روشن و قابل فهم باشد
- از زبان ساده و واضح متناسب با مخاطب استفاده کنید
- محتوا باید به صورت پیشبینیپذیر و هماهنگ ظاهر و عمل کند
- دستورالعملها و پیامهای خطا را برای ورودی کاربران فراهم کنید
- به کاربران کمک کنید اشتباهات در فرمها را بفهمند و اصلاح کنند
- محتوا را با ترتیب خواندن منطقی و سلسلهمراتب اطلاعات سازماندهی کنید
**💪 مقاوم (Robust)**: محتوا باید به طور قابل اطمینان در فناوریها و دستگاههای کمکی مختلف کار کند
- **از HTML معتبر و معنایی به عنوان پایه استفاده کنید**
- **از سازگاری با فناوریهای کمکی فعلی و آینده اطمینان حاصل کنید**
- **از استانداردهای وب و بهترین شیوههای نشانهگذاری تبعیت کنید**
- **آزمایش در مرورگرها، دستگاهها و ابزارهای کمکی مختلف**
- **ساختاردهی محتوا به گونهای که هنگام عدم پشتیبانی از ویژگیهای پیشرفته به آرامی تنزل یابد**
### 🎯 **بررسی اصول POUR: برای ماندگاری آن**
**تأمل سریع بر پایهها:**
- آیا میتوانید یک ویژگی وبسایت را که هر یک از اصول POUR را نقض میکند، به ذهن بسپارید؟
- کدام اصل برای شما به عنوان توسعهدهنده طبیعیتر به نظر میرسد؟
- چگونه ممکن است این اصول طراحی را برای همه، نه فقط کاربران معلول، بهبود بخشد؟
```mermaid
quadrantChart
title ماتریس تاثیر اصول POUR
x-axis تلاش کم --> تلاش زیاد
y-axis تاثیر کم --> تاثیر زیاد
quadrant-1 پیروزیهای سریع
quadrant-2 پروژههای بزرگ
quadrant-3 بررسی در آینده
quadrant-4 تمرکز استراتژیک
Alt Text: [0.2, 0.9]
Color Contrast: [0.3, 0.8]
Semantic HTML: [0.4, 0.9]
Keyboard Nav: [0.6, 0.8]
ARIA Complex: [0.8, 0.7]
Screen Reader Testing: [0.7, 0.6]
```
> **به یاد داشته باشید**: با بهبودهای کمزحمت و پراثر شروع کنید. HTML معنایی و متن جایگزین، بیشترین افزایش دسترسی را با کمترین تلاش به شما میدهند!
## ایجاد طراحی بصری در دسترس
طراحی بصری خوب و دسترسی با هم همراه هستند. زمانی که با در نظر گرفتن دسترسی طراحی میکنید، اغلب متوجه میشوید که این محدودیتها به راهحلهایی پاکتر و شیکتر منجر میشوند که برای همه کاربران سودمند است.
بیایید ببینیم چگونه میتوان طراحیهایی جذاب از نظر بصری ایجاد کرد که برای همه کار کنند، بدون توجه به تواناییهای بصری آنها یا شرایطی که محتوا را مشاهده میکنند.
### استراتژیهای رنگ و دسترسی بصری
رنگ ابزار قدرتمندی برای ارتباط است، اما هرگز نباید تنها راه انتقال اطلاعات مهم باشد. طراحی فراتر از رنگ، تجربیات قویتر و فراگیرتری ایجاد میکند که در شرایط بیشتری کار میکنند.
**طراحی برای تفاوتهای دید رنگی:**
حدود ۸٪ مردان و ۰.۵٪ زنان نوعی از تفاوت دید رنگ دارند (که معمولاً «کوری رنگ» نامیده میشود). رایجترین انواع آن عبارتند از:
- **دئوترانوپیا**: دشواری در تمایز رنگ قرمز و سبز
- **پروتانوپیا**: رنگ قرمز کمنورتر دیده میشود
- **تریتانوپیا**: دشواری در تمایز آبی و زرد (نادر)
**استراتژیهای رنگ فراگیر:**
```css
/* ❌ Bad: Using only color to indicate status */
.error { color: red; }
.success { color: green; }
/* ✅ Good: Color plus icons and context */
.error {
color: #d32f2f;
border-left: 4px solid #d32f2f;
}
.error::before {
content: "⚠️";
margin-right: 8px;
}
.success {
color: #2e7d32;
border-left: 4px solid #2e7d32;
}
.success::before {
content: "✅";
margin-right: 8px;
}
```
**فراتر از الزامات پایه کنتراست:**
- رنگهای خود را با شبیهسازهای کوری رنگ آزمایش کنید
- از الگوها، بافتها یا اشکال در کنار رنگبندی استفاده کنید
- مطمئن شوید وضعیتهای تعاملی بدون رنگ هم قابل تمایز باقی میمانند
- در نظر بگیرید طراحی شما در حالت کنتراست بالا چگونه به نظر میرسد
✅ **دسترسی رنگ خود را آزمایش کنید**: از ابزارهایی مانند [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/) استفاده کنید تا ببینید وبسایت شما برای کاربران با انواع مختلف دید رنگ چگونه دیده میشود.
### نشانگرهای تمرکز و طراحی تعامل
نشانگرهای تمرکز معادل دیجیتال یک نشانگر ماوس هستند—آنها به کاربران صفحهکلید نشان میدهند کجا در صفحه هستند. نشانگرهای تمرکز به خوبی طراحیشده تجربه را برای همه با روشن و پیشبینیپذیر کردن تعاملات بهبود میبخشند.
**راهنمای بهترین شیوههای مدرن نشانگر تمرکز:**
```css
/* Enhanced focus styles that work across browsers */
button:focus-visible {
outline: 2px solid #0066cc;
outline-offset: 2px;
box-shadow: 0 0 0 4px rgba(0, 102, 204, 0.25);
}
/* Remove focus outline for mouse users, preserve for keyboard users */
button:focus:not(:focus-visible) {
outline: none;
}
/* Focus-within for complex components */
.card:focus-within {
box-shadow: 0 0 0 3px rgba(74, 144, 164, 0.5);
border-color: #4A90A4;
}
/* Ensure focus indicators meet contrast requirements */
.custom-focus:focus-visible {
outline: 3px solid #ffffff;
outline-offset: 2px;
box-shadow: 0 0 0 6px #000000;
}
```
**الزامات نشانگر تمرکز:**
- **قابلیت مشاهده**: باید حداقل نسبت کنتراست ۳:۱ با عناصر اطراف داشته باشد
- **عرض**: ضخامت حداقل ۲ پیکسل در اطراف کل عنصر
- **پایداری**: باید تا انتقال تمرکز به جایی دیگر قابل مشاهده باقی بماند
- **تمایز**: باید از سایر وضعیتهای رابط کاربری به صورت بصری متفاوت باشد
> 💡 **نکته طراحی**: نشانگرهای تمرکز عالی اغلب ترکیبی از خطوط بیرونی، سایهباکس و تغییر رنگ را برای اطمینان از قابلیت مشاهده در پسزمینهها و زمینههای مختلف استفاده میکنند.
✅ **بازرسی نشانگرهای تمرکز**: با استفاده از کلید Tab در وبسایت خود حرکت کنید و یادداشت کنید کدام عناصر نشانگر تمرکز واضح دارند. آیا هیچکدام دشوار مشاهده یا کاملاً غایب هستند؟
### HTML معنایی: پایه دسترسی
HTML معنایی مانند دادن یک سیستم مکانیابی (GPS) به فناوریهای کمکی برای وبسایت شماست. وقتی از عناصر HTML درست برای هدفهایشان استفاده میکنید، در واقع نقشه راه دقیقی به صفحهخوانها، صفحهکلیدها و سایر ابزارها میدهید تا به کاربران برای ناوبری موثر کمک کند.
یک تشبیه که واقعاً برای من جا افتاد: HTML معنایی تفاوت بین یک کتابخانه مرتب با دستهبندیهای واضح و علائم کمکرسان در مقابل انباری است که کتابها به صورت پراکنده ریخته شدهاند. هر دو مکان همان کتابها را دارند، اما کجا را ترجیح میدهید چیزی پیدا کنید؟ دقیقاً!
```mermaid
flowchart TD
A[🏠 سند HTML] --> B[📰 سربرگ]
A --> C[🧭 ناوبری]
A --> D[📄 قسمت اصلی]
A --> E[📋 پاورقی]
B --> B1[h1: نام سایت لوگو و برندینگ]
C --> C1[ul: ناوبری لینکهای اصلی]
D --> D1[article: محتوا section: زیر بخشها]
D --> D2[aside: نوار کناری محتوای مرتبط]
E --> E1[nav: لینکهای پاورقی اطلاعات حق نشر]
D1 --> D1a[h1: عنوان صفحه h2: بخشهای اصلی h3: زیر بخشها]
style A fill:#e3f2fd
style B fill:#e8f5e8
style C fill:#fff3e0
style D fill:#f3e5f5
style E fill:#e0f2f1
```
**بلوکهای ساختمانی ساختار صفحه قابل دسترس:**
```html
Your Site Name
Article Title
Published on
First Section
Content that relates to this section...
Second Section
More related content...
```
**چرا HTML معنایی دسترسی را متحول میکند:**
| عنصر معنایی | هدف | مزیت برای صفحهخوان |
|-------------|------|---------------------|
| `` | هدر صفحه یا بخش | «نقطه نشانه بنر» - ناوبری سریع به بالا |
| `