انتقل إلى محتوى الدرس
الدرس 111
تاريخ النشر: تاريخ التحديث:
دورة لغة CSS

نافذة عرض المستخدم في لغة CSSCSS Responsive Viewport طريقة إضافة وسم نافذة العرض القياسي، وضبط المحتوى داخل حدود النافذة، ومفهوم نافذة العرض المرئية

اضبط وسم نافذة العرض القياسي لبناء صفحات CSS متجاوبة وميّز بين البكسل المنطقي والفيزيائي واستخدم وحدات النافذة الحديثة مع الحفاظ على إمكانية التكبير.
أقسام الدرس
6
الأمثلة
3
اللغة
العربية
المشاهدات
5,168
محتوى الدرس
في هذا الدرس 6تصفّح المواضيع

تمثل نافذة العرض — Viewport — المساحة المستطيلة المرئية الفعلية التي يظهر بداخلها محتوى صفحة الويب أمام عين المستخدم، مستبعدةً شريط العنوان العلوي وأزرار التنقل الخاصة بالمتصفح.

عندما ظهرت الهواتف الذكية لأول مرة كانت معظم مواقع الإنترنت مصممة لشاشات مكتبية عريضة؛ ولتجنب اقتصاصها افترضت متصفحات الهواتف وجود شاشة افتراضية بعرض 980px ثم صغّرت الصفحة بالكامل لتنحشر داخل الشاشة الصغيرة، فتبدو النصوص والأزرار ضئيلة للغاية ولا تُقرأ إلا بالتكبير اليدوي.

مخطط يقارن بين تصغير الصفحة الوهمي بعرض 980px عند غياب وسم نافذة العرض وبين القياس الحقيقي المريح عند تفعيله

لإلغاء المحاكاة الوهمية لعرض 980px على الهواتف والأجهزة اللوحية، اعتمد معيار HTML5 وسماً قياسياً يوضع دائماً داخل رأس المستند <head> ويتكون من توجيهين أساسيين:

  • توجيه width=device-width: يأمر المتصفح بربط عرض نافذة التخطيط بالعرض المنطقي الحقيقي لشاشة الجهاز، مثل 390px على الهاتف أو 768px على الجهاز اللوحي.
  • توجيه initial-scale=1.0: يضبط مستوى التكبير الابتدائي عند فتح الصفحة لأول مرة بنسبة طبيعية كاملة دون تصغير تلقائي.
HTML
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
    content="width=device-width, initial-scale=1.0">
  <title>Responsive Viewport</title>
</head>

تضم شاشات الهواتف الحديثة أكثر من ألف نقطة ضوئية فيزيائية في عرض قبضة اليد؛ ولو طابق البكسل الواحد في الكود نقطة فيزيائية واحدة لأصبحت حروف حجم 16px مجهرية لا تُرى. لذلك تعتمد CSS على البكسل المنطقي المرجعي مقسوماً على نسبة كثافة الشاشة DPR؛ فهاتف شاشته الفيزيائية 1170px بكثافة ثلاثية يمنح المتصفح عرضاً منطقياً مريحاً قدره 390px.

وتوفر اللغة وحدات مرتبطة بنافذة العرض مباشرة مثل vw و vh، إضافةً إلى الوحدتين الحديثتين svh و dvh اللتين تضبطان ارتفاع الواجهة بدقة مع ظهور أو اختفاء شريط عنوان متصفح الهاتف أثناء التمرير.

CSS
.hero-stage {
  box-sizing: border-box;
  width: 100%;
  min-height: 80dvh;
  padding: 24px;
  background-color: #f2ebf9;
}

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

اضمن بقاء كافة العناصر داخل حدود النافذة بالالتزام بثلاثية الحماية: تفعيل box-sizing: border-box، وبناء الحاويات بـ width: 100% مع max-width، وتقييد الصور بـ max-width: 100%.

CSS
.viewport-card {
  box-sizing: border-box;
  width: 100%;
  max-width: 540px;
  padding: 16px;
}
.banner-image {
  max-width: 100%;
  height: auto;
}

تضيف بعض الشروحات القديمة القيمتين user-scalable=no أو maximum-scale=1.0 داخل وسم نافذة العرض لمنع المستخدم من تكبير الشاشة باللمس؛ وهو خطأ هندسي جسيم يجب تجنبه دائماً.

فمنع التكبير يحرم ضعاف البصر وكبار السن من قراءة التفاصيل الدقيقة أو الجداول والرسوم، ويخالف مباشرةً معيار إمكانية الوصول العالمي WCAG 1.4.4 الذي يشترط تمكين القارئ من تكبير المحتوى بنسبة لا تقل عن 200% بحرية تامة.

اعتمد جدول المراجعة القياسي التالي في كل صفحة ويب تبنيها قبل الانتقال إلى كتابة استعلامات الوسائط الشرطية:

الإعداد أو الوحدةالقاعدة القياسية المعتمدةالأثر الهندسي والعملي
width=device-widthإلزامي في وسم viewportيطابق عرض التخطيط مع العرض المنطقي الحقيقي للجهاز
initial-scale=1.0يقترن دائماً بعرض الجهازيفتح الصفحة بحجم طبيعي واضح دون تصغير وهمي
user-scalable=noممنوع تماماً في الإنتاجيمنع ضعاف البصر من التكبير ويخالف معايير الوصول
width: 100% بدل 100vwالخيار الآمن للحاويات الكاملةيمنع ظهور شريط تمرير أفقي بسبب عرض شريط التمرير الرأسي
min-height: 100dvhأفضل من height: 100vh الجامدةيتكيف بسلاسة مع انزلاق شريط عنوان متصفح الهاتف
خلاصة المعرفة ومحطة الانتقال

ملخص الدرس

حصاد الدرس

مراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي

ماذا تعلّمت في هذا الدرس؟

في ملخص الدرس أتقنت ضبط وسم نافذة العرض القياسي داخل رأس المستند، وفهمت الفرق بين البكسل المنطقي والفيزيائي ووحدة dvh وأهمية الحفاظ على حرية التكبير؛ وفي الخطوة التالية سننتقل إلى درس نظام Media Queries في لغة CSS لتطبيق القواعد الشرطية باحترافية عبر مختلف مقاسات الشاشات.

مشاركة

هل كان هذا الدرس مفيدًا؟

جارٍ تحميل الآراء…

ابنِ لغتك البرمجية

المصطلحات4

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 4 مفهومةأول بطاقة، أول خطوة
01 Browser Viewport نافذة العرض المرئية
المساحة المرئية الفعلية من صفحة الويب داخل نافذة المتصفح والتي تُحسب على أساسها الأبعاد النسبية للعناصر.
للمراجعة
02 CSS Reference Pixel البكسل المنطقي المرجعي
وحدة قياس منطقية مستقلة عن كثافة الشاشة تعادل عدة بكسلات فيزيائية على الهواتف الحديثة لضمان ثبات وضوح القراءة.
للمراجعة
03 Dynamic Viewport Height الارتفاع الديناميكي للنافذة
وحدة قياس dvh تمثل 1% من الارتفاع المرئي الحي وتتحدث تلقائياً مع ظهور أو اختفاء أشرطة متصفح الهاتف.
للمراجعة
04 Pinch-to-Zoom Accessibility حرية تكبير الشاشة
تمكين الزوار من تكبير محتوى الصفحة باللمس بحرية عبر عدم إضافة قيود منع التكبير في وسم نافذة العرض.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

حروف قليلة. معنى كامل.

الاختصارات3

راجع المعنى، اشرحه لنفسك، ثم علّم البطاقة كمفهومة.

0 / 3 مفهومةأول بطاقة، أول خطوة
01 DPR DPR
Device Pixel Ratio
النسبة الرياضية بين عدد البكسلات الفيزيائية الحقيقية للشاشة وعدد البكسلات المنطقية في CSS.
للمراجعة
02 WCAG WCAG
Web Content Accessibility Guidelines
إرشادات إمكانية الوصول العالمية لمحتوى الويب التي تلزم بإتاحة تكبير النصوص والصفحات لضعاف البصر.
للمراجعة
03 dvh dvh
Dynamic Viewport Height
وحدة قياس حديثة في CSS تتبع الارتفاع المرئي الفعلي لنافذة المتصفح على الهواتف الذكية.
للمراجعة

اقرأ البطاقات بحرية. سجّل الدخول لحفظ تقدم مراجعتك.

من الفهم للتطبيق

مهامك قبل الاختبار

خطوة صغيرة كل مرة. وإنجاز تقدر ترجع له.

0/2مهام منجزة
  1. أضف وسم meta باسم viewport داخل عنصر head بقيمة width=device-width مع initial-scale=1.0 دون أي قيد يمنع التكبير.

  2. نسّق حاوية واجهة رئيسية باستخدام box-sizing بقيمة border-box وعرض 100% وارتفاع أدنى قدره 80dvh.

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

مساحة التحدي

اختبر فهمك.
ووصلها للإتقان.

كل سؤال خطوة لقدّام. اختار، اكتب كود، وشوف نتيجتك فورًا.

8أسئلة 2أنواع تحديات 100%هدف الإتقان
تصحيح تلقائي. فرص بلا حدود.

أكمل المهام، واجمع كل الإجابات الصحيحة. أقل من 100%؟ راجع وأعد المحاولة.

الأسئلة متاحة للاطلاع. سجّل الدخول للتفاعل وحفظ تقدمك.

لمحة عن التحدي8 أسئلة تنتظرك
01

كيف تتصرف متصفحات الهواتف افتراضياً عندما تخلو الصفحة من وسم نافذة العرض؟

02

ما القيمة القياسية الصحيحة لسمة content داخل وسم نافذة العرض المتجاوب؟

03

إذا كان العرض الفيزيائي لشاشة هاتف 1170 بكسل ونسبة الكثافة DPR تساوي 3، فكم يبلغ عرض نافذة CSS المنطقي؟

04

لماذا يُمنع إضافة التوجيه user-scalable=no إلى وسم نافذة العرض؟

05

لماذا يُعد استخدام width بقيمة 100% أكثر أماناً من 100vw على الحاوية الرئيسية للصفحة؟

06

أي وحدة قياس حديثة في CSS تتكيف بسلاسة مع انزلاق شريط عنوان متصفح الهاتف أثناء التمرير؟

07

يوضع وسم تعريف نافذة العرض meta viewport دائماً داخل قسم رأس المستند head.

08

يكفي وضع وسم نافذة العرض وحده لمنع صورة ذات عرض ثابت 900px من الفيضان خارج هاتف عرضه 390px دون أي تنسيق CSS.