{"id":"l-fig-1-2","courseId":"figma-ui-design","lang":"ar","kind":"lesson","summary":"استخدم الحجم والوزن والموضع والمساحة لبناء تسلسل بصري، وحاذِ العناصر على حوافّ مشتركة، وجمّع المحتوى بقاعدة «المسافة الداخلية أصغر من الخارجية».","html":"<p>هذه المسودة الأولى لشاشة Today في Steady، من النوع الذي يصنعه الجميع تقريبًا في يومهم الأول. العنوان “Today” بحجم 18 px، وأسماء العادات 17 px، ونص التقدّم 16 px، وأعداد الـ streak بحجم 16 px وباللون الرمادي نفسه. كل شيء موجود تقنيًا. ولا شيء يخبرك أين تنظر.</p>\n<p>هذه هي المشكلة التي يحلّها التسلسل البصري (visual hierarchy): أن تقرّر ما يراه الناس أولًا وثانيًا وثالثًا، وأن تجعل الشاشة تقول ذلك دون كلمة تعليمات واحدة.</p>\n<h2 id=\"sec-1\" tabindex=\"-1\">التسلسل البصري: رتّب قبل أن تنسّق</h2>\n<p>قبل أن تلمس حجم أي خط، اكتب الترتيب. لشاشة Today يكون كالتالي:</p>\n<ol>\n<li>العادات التي لم تُنجز بعد، مع أزرار تعليمها (المهمّة نفسها).</li>\n<li>تقدّم اليوم (“3 of 5 done”).</li>\n<li>عنوان الشاشة والتاريخ.</li>\n<li>أعداد الـ streak وشريط التبويبات.</li>\n</ol>\n<p>ربما توقّعت أن يأتي العنوان أولًا. لا يأتي: الناس يعرفون أنهم فتحوا Steady. العنوان يوجّه؛ أما العادات فهي العمل. الآن لديك سبب لكل قرار حجم سيأتي بعد ذلك.</p>\n<p>لديك خمس أدوات للتعبير عن الرتبة، ويمكن جمعها:</p>\n<ul>\n<li><strong>الحجم</strong>: الأكبر يُقرأ أولًا. يجب أن تكون الخطوات كبيرة بما يكفي لتبدو مقصودة، أي نحو 1.25 ضعفًا أو أكثر.</li>\n<li><strong>الوزن</strong>: الخط العريض (bold) يجذب العين حتى بالحجم نفسه.</li>\n<li><strong>اللون والتباين</strong>: النص الداكن على خلفية فاتحة يتفوّق على النص الرمادي؛ ولون مميّز (accent) واحد يتفوّق على عدّة ألوان.</li>\n<li><strong>الموضع</strong>: في اللغات التي تُكتب من اليسار إلى اليمين يبدأ الناس من أعلى اليسار؛ وأسفل شاشة الهاتف هو الأسهل وصولًا بالإبهام.</li>\n<li><strong>المساحة</strong>: العنصر المحاط بمساحة فارغة يبدو أهم من عنصر محشور بين جيرانه.</li>\n</ul>\n<p>استخدم اثنتين أو ثلاثًا من هذه الأدوات معًا، لا الخمس كلها على كل عنصر. إذا كان العنوان أكبر وأثقل وملوّنًا <em>و</em>محاطًا بإطار، فسيبدأ صخبه يطغى على العادات التي تهمّ فعلًا.</p>\n<aside class=\"callout callout-tip\" role=\"note\"><p class=\"callout-title\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\"/><path d=\"M9 18h6\"/><path d=\"M10 22h4\"/></svg><span><span class=\"callout-kind\">نصيحة</span><span class=\"callout-sep\" aria-hidden=\"true\"> · </span>اختبار التحديق</span></p>\n<p>صغّر العرض أو غبّش عينيك حتى لا تستطيع قراءة أي نص. أيّ شكل يبرز؟ في شاشة Today الجيدة تبرز قائمة العادات وأزرار تعليمها. إذا كان البارز صورة ترويسة زخرفية، فتسلسلك البصري مقلوب.</p>\n</aside>\n<h2 id=\"sec-2\" tabindex=\"-1\">المحاذاة: حوافّ أقل، شاشات أهدأ</h2>\n<p>كل حافّة يسرى مختلفة على الشاشة شيء على العين أن تسجّله. المسودة الأولى من Steady كان فيها خمس حوافّ: العنوان عند 20 px، ونص التقدّم في المنتصف، وأيقونات العادات عند 16 px، والأسماء عند 56 px، وزر في منتصف الأسفل. بدت مزدحمة دون أن تكون مزدحمة فعلًا.</p>\n<p>الحل أن تختار عددًا قليلًا من الحوافّ المشتركة وتلتزم بها. في Steady، يُحاذى كل شيء لليسار على هامش 20 px، والنص داخل الصفوف يبدأ على خط واحد بعد الأيقونة، وعناصر التحكم على اليمين (أزرار التعليم والأسهم) تتشارك حافّة يمنى تبعد 20 px عن جانب الشاشة. حافّتان وعمود نص واحد. وتهدأ الشاشة.</p>\n<p>للنص الموسّط مكانه: لحظات قصيرة من سطر واحد، مثل الحالة الفارغة (“No habits yet”) أو عنوان نافذة منبثقة (modal). لكنه لا يناسب القوائم والفقرات، لأن كل سطر يبدأ في مكان جديد وعلى العين أن تبحث عنه.</p>\n<h2 id=\"sec-3\" tabindex=\"-1\">المسافات: القُرب يعني التجميع</h2>\n<p>يقرأ الناس الأشياء المتقاربة على أنها مترابطة. هذا مبدأ القُرب (proximity) من مبادئ الجشطالت، وهو أقوى أداة تجميع لديك، أقوى من الإطارات والخطوط الفاصلة.</p>\n<p>القاعدة المستخلصة منه سهلة الصياغة وسهلة الكسر: <strong>المسافة داخل المجموعة يجب أن تكون أصغر من المسافة بين المجموعات</strong>.</p>\n<figure class=\"diagram\"><svg class=\"diagram-svg\" focusable=\"false\" viewBox=\"0 0 680 260\" role=\"img\" aria-labelledby=\"l-fig-1-2-t1\"><defs><marker id=\"arrow-l-fig-1-2-1\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\"><path d=\"M0 0 L10 5 L0 10 z\" class=\"d-arrowhead\"/></marker></defs>\n  <title id=\"l-fig-1-2-t1\">يسارًا: صفّا عادتين، الفجوة داخل كل صف أكبر من الفجوة بين الصفوف، فيبدو الـ streak ملتصقًا بالعادة الخطأ. يمينًا: الصفوف نفسها بفجوة داخلية 4 بكسل وخارجية 16 بكسل، فيتجمّع كل اسم مع الـ streak الخاص به بوضوح.</title>\n  <text class=\"d-label-strong\" x=\"20\" y=\"28\">معكوس (مربك)</text>\n  <rect class=\"d-box\" x=\"20\" y=\"44\" width=\"280\" height=\"22\" rx=\"4\"/>\n  <text class=\"d-label\" x=\"30\" y=\"60\">Read 20 pages</text>\n  <rect class=\"d-box\" x=\"20\" y=\"88\" width=\"280\" height=\"22\" rx=\"4\"/>\n  <text class=\"d-label-muted\" x=\"30\" y=\"104\">12-day streak</text>\n  <rect class=\"d-box\" x=\"20\" y=\"118\" width=\"280\" height=\"22\" rx=\"4\"/>\n  <text class=\"d-label\" x=\"30\" y=\"134\">Drink water</text>\n  <rect class=\"d-box\" x=\"20\" y=\"162\" width=\"280\" height=\"22\" rx=\"4\"/>\n  <text class=\"d-label-muted\" x=\"30\" y=\"178\">3-day streak</text>\n  <text class=\"d-label-muted\" x=\"310\" y=\"82\">22</text>\n  <text class=\"d-label-muted\" x=\"310\" y=\"118\">8</text>\n  <text class=\"d-label-strong\" x=\"380\" y=\"28\">صحيح</text>\n  <rect class=\"d-box-primary\" x=\"380\" y=\"44\" width=\"280\" height=\"22\" rx=\"4\"/>\n  <text class=\"d-label\" x=\"390\" y=\"60\">Read 20 pages</text>\n  <rect class=\"d-box-primary\" x=\"380\" y=\"70\" width=\"280\" height=\"22\" rx=\"4\"/>\n  <text class=\"d-label-muted\" x=\"390\" y=\"86\">12-day streak</text>\n  <rect class=\"d-box-accent\" x=\"380\" y=\"124\" width=\"280\" height=\"22\" rx=\"4\"/>\n  <text class=\"d-label\" x=\"390\" y=\"140\">Drink water</text>\n  <rect class=\"d-box-accent\" x=\"380\" y=\"150\" width=\"280\" height=\"22\" rx=\"4\"/>\n  <text class=\"d-label-muted\" x=\"390\" y=\"166\">3-day streak</text>\n  <text class=\"d-label-muted\" x=\"670\" y=\"72\" text-anchor=\"end\">4</text>\n  <text class=\"d-label-muted\" x=\"670\" y=\"114\" text-anchor=\"end\">16+</text>\n  <text class=\"d-label-muted\" x=\"340\" y=\"230\" text-anchor=\"middle\">الأرقام فجوات بالبكسل. تتكوّن المجموعات حيث تصغر الفجوات.</text>\n</svg><figcaption>المسافة الداخلية الأصغر من الخارجية تجعل المجموعات مقروءة</figcaption></figure>\n<p>بتطبيق ذلك على Steady: داخل صف العادة، يفصل 4 px بين الاسم والـ streak؛ وكل صف بطاقة مستقلّة تفصلها عن التي تليها 8 px؛ وبين ملخّص التقدّم والقائمة 24 px؛ وبين الترويسة وكل ما عداها 32 px. كل خطوة إلى الخارج تأخذ مساحة أكبر، فيظهر الهيكل قبل أن تقرأ كلمة واحدة.</p>\n<aside class=\"callout callout-mistake\" role=\"note\"><p class=\"callout-title\"><svg class=\"icon \" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\" focusable=\"false\"><path d=\"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\"/><path d=\"M12 9v4\"/><path d=\"M12 17h.01\"/></svg><span><span class=\"callout-kind\">خطأ شائع</span><span class=\"callout-sep\" aria-hidden=\"true\"> · </span>المسافات المتساوية في كل مكان</span></p>\n<p>ضبط كل الفجوات على القيمة نفسها، غالبًا 16 px، يبدو مرتّبًا لكنه يمحو التجميع. حين تتساوى الفجوة بين التسمية وقيمتها مع الفجوة بين قسمين لا علاقة بينهما، تتحوّل الشاشة إلى كومة مسطّحة. نوّع المسافات عن قصد: صغيرة في الداخل، وأكبر بين المجموعات.</p>\n</aside>\n<h2 id=\"sec-4\" tabindex=\"-1\">المسودة الثانية</h2>\n<p>مع ترتيب واضح، وحافّتين، ومسافات متدرّجة، يتغيّر شكل شاشة Today. يصبح العنوان واضحًا بحجم 34 px وخط عريض، ومفصولًا بالمساحة لا باللون. يجلس سطر التقدّم في كتلة خاصة به تحيط بها مساحة 24 px. أسماء العادات بحجم 17 px ووزن semibold بلون قريب من الأسود، والـ streaks بحجم 13 px برمادي هادئ تحتها مباشرة، وأزرار التعليم على اليمين دوائر بقطر 32 px مع مساحة نقر 44 px، وهي اللون المميّز الوحيد على الشاشة. حدّق وسترى قائمة مع عمود من الأهداف على اليمين. هذه هي المهمّة.</p>\n<p>في التمرين أدناه تنتقد مسودة تشبه الأولى. ثم يعطيك الدرس التالي قواعد سلّم أحجام الخط والألوان التي تجعل هذه الأحجام والرماديات متّسقة بدل أن تكون تخمينًا.</p>\n","toc":[{"id":"sec-1","text":"التسلسل البصري: رتّب قبل أن تنسّق","level":2},{"id":"sec-2","text":"المحاذاة: حوافّ أقل، شاشات أهدأ","level":2},{"id":"sec-3","text":"المسافات: القُرب يعني التجميع","level":2},{"id":"sec-4","text":"المسودة الثانية","level":2}],"takeaways":["التسلسل البصري ينشأ من التباين في الحجم والوزن واللون والموضع؛ وإذا أبرزت كل شيء، فلن يبرز شيء.","امنح كل شاشة عنصرًا أساسيًا واحدًا، وحدّد رتبته قبل أن تنسّق أي شيء.","حاذِ العناصر على عدد قليل من الحوافّ المشتركة؛ فكل حافّة إضافية شيء آخر على العين أن تعالجه.","المسافة داخل المجموعة يجب أن تكون أصغر من المسافة بين المجموعات، وإلا ربط الناس بين أشياء غير مترابطة.","اختبار التحديق، أي تغبيش الشاشة حتى لا يبقى إلا الأشكال، يكشف ما إذا كان تسلسلك البصري يصمد دون قراءة."],"further":[{"title":"Visual Hierarchy in UX (Nielsen Norman Group)","url":"https://www.nngroup.com/articles/visual-hierarchy-ux-definition/"},{"title":"Proximity Principle in Visual Design (Nielsen Norman Group)","url":"https://www.nngroup.com/articles/gestalt-proximity/"}],"quiz":[{"q":"<p>في صف عادة، يفصل 16 px بين الاسم “Read 20 pages” وعدد الأيام “12-day streak”، بينما يفصل بين الصفوف نفسها 8 px فقط. ماذا سيلاحظ الناس؟</p>","options":[{"text":"سيبدو كل streak وكأنه يخصّ العادة في الصف الذي تحته.","why":"صحيح. القُرب يتغلّب على النيّة. الـ streak أقرب إلى الصف التالي منه إلى اسمه، فتربطه العين بالعادة الخطأ."},{"text":"لا شيء، لأن لكل صف خلفية مستقلة.","why":"الخلفيات تساعد، لكن السؤال لا يذكر خلفيات للبطاقات. وحتى معها، المسافات المعكوسة تُضعف التجميع."},{"text":"ستبدو الصفوف أكثر رحابة وأسهل في التصفّح.","why":"الفجوات الضيقة بين الصفوف مع فجوات واسعة داخلها تفعل العكس، فتطمس حدود نهاية كل صف."},{"text":"سيبدو الـ streak أهم من الاسم.","why":"المسافات تغيّر التجميع لا الرتبة. الأهمية تأتي من الحجم والوزن واللون."}],"answer":0},{"q":"<p>أيّ تغيير يصنع أوضح تسلسل بصري بين عنوان الشاشة وأسماء العادات تحته؟</p>","options":[{"text":"جعل العنوان أكبر من أسماء العادات بـ 1 px.","why":"فرق 1 px أصغر من أن يُقرأ كقرار مقصود. التسلسل البصري يحتاج خطوة يلاحظها الناس من نظرة."},{"text":"جعل العنوان أكبر وأثقل، وإضافة مساحة تحته أكبر من المساحة بين الصفوف.","why":"صحيح. الحجم والوزن والمساحة حين تعمل معًا تجعل الرتبة لا تقبل اللبس."},{"text":"كتابة العنوان بحروف كبيرة كلها بالحجم نفسه.","why":"الحروف الكبيرة وحدها تضيف ملمسًا لا رتبة، والنص الطويل بالحروف الكبيرة أبطأ في القراءة."},{"text":"إعطاء كل اسم عادة لونًا مختلفًا ليبرز العنوان.","why":"كثرة الألوان تضيف ضجيجًا وتنافس العنوان بدل أن تدعمه."}],"answer":1},{"q":"<p>شاشة تخلط عناوين في المنتصف مع قوائم محاذاة لليسار وأزرار محاذاة لليمين. ما أنفع إصلاح أوّل؟</p>","options":[{"text":"توسيط كل شيء لتبدو الشاشة متماثلة.","why":"القوائم الموسّطة صعبة التصفّح لأن كل سطر يبدأ من مكان مختلف."},{"text":"إضافة خطوط فاصلة بين كل كتلة للفصل بين أنواع المحاذاة.","why":"الفواصل تخفي العَرَض فقط. الحوافّ غير المنتظمة ما زالت موجودة."},{"text":"تكبير حجم الخط لتقلّ أهمية المحاذاة.","why":"النص الأكبر يجعل سوء المحاذاة أوضح، لا أخفى."},{"text":"محاذاة معظم المحتوى على حافّة يسرى مشتركة واحدة، مع إبقاء الاستثناءات مقصودة.","why":"صحيح. حافّة قوية واحدة تتيح للعين النزول في الشاشة دون البحث عن بداية كل سطر."}],"answer":3},{"q":"<p>ماذا يخبرك اختبار التحديق (squint test)؟</p>","options":[{"text":"ما إذا كان نصّك يحقّق نسبة التباين في WCAG.","why":"التحديق فحص تقريبي للإبراز، لا قياس. استخدم أداة فحص التباين لمعرفة النسب."},{"text":"ما إذا كان كل عنصر محاذى على الـ Layout guide.","why":"الأشكال المغبّشة تخفي الحوافّ الدقيقة. استخدم الـ guides ولوحة الخصائص للتحقّق من المحاذاة."},{"text":"ما إذا كان أهم عنصر ما زال بارزًا حين تختفي التفاصيل.","why":"صحيح. إذا ذاب الإجراء الأساسي في الضباب، فتسلسلك البصري مسطّح أكثر من اللازم."}],"answer":2}],"exercise":{"kind":"choice","multiple":true,"options":["title-rank","regroup-streaks","one-edge","boxes-dividers","center-names","accent-streaks"],"correct":["title-rank","regroup-streaks","one-edge"],"title":"انتقد أول نسخة من شاشة Today","prompt":"<p>تضع صوفيا هذه المسودة في جلسة النقد مع الفريق وتسأل: «أيّ التغييرات تصلح المشكلات الحقيقية، وما الـ <em>لأنّ</em> لكلٍّ منها؟» انظر إلى الحجم والتجميع والمحاذاة.</p>\n<p>:::figure المسودة الأولى لشاشة Today في Steady\n<svg viewBox=\"0 0 360 440\" role=\"img\" aria-labelledby=\"ex1\"></p>\n  <title id=\"ex1\">مسودة لشاشة هاتف: عنوان صغير Today بالحجم نفسه لكل ما عداه، وسطر تقدّم في المنتصف، وثلاثة صفوف عادات يقع فيها كل streak بعيدًا تحت اسم عادته حتى يكاد يلامس الصف التالي.</title>\n  <rect class=\"d-box\" x=\"40\" y=\"10\" width=\"280\" height=\"420\" rx=\"24\"/>\n  <text class=\"d-label\" x=\"60\" y=\"52\">Today</text>\n  <text class=\"d-label-muted\" x=\"180\" y=\"80\" text-anchor=\"middle\">3 of 5 done</text>\n  <text class=\"d-label\" x=\"60\" y=\"122\">Read 20 pages</text>\n  <circle class=\"d-line\" cx=\"292\" cy=\"118\" r=\"10\" fill=\"none\"/>\n  <text class=\"d-label-muted\" x=\"60\" y=\"162\">12-day streak</text>\n  <text class=\"d-label\" x=\"60\" y=\"176\">Drink water</text>\n  <circle class=\"d-line\" cx=\"292\" cy=\"172\" r=\"10\" fill=\"none\"/>\n  <text class=\"d-label-muted\" x=\"60\" y=\"216\">3-day streak</text>\n  <text class=\"d-label\" x=\"60\" y=\"230\">Stretch 10 min</text>\n  <circle class=\"d-line\" cx=\"292\" cy=\"226\" r=\"10\" fill=\"none\"/>\n  <text class=\"d-label-muted\" x=\"60\" y=\"270\">30-day streak</text>\n  <rect class=\"d-box-accent\" x=\"40\" y=\"380\" width=\"280\" height=\"50\" rx=\"0\"/>\n  <text class=\"d-label-muted\" x=\"180\" y=\"410\" text-anchor=\"middle\">Today · Stats · Settings</text>\n</svg>\n:::\n<p>اختر <strong>كل</strong> تغيير يصلح مشكلة حقيقية دون أن يخلق مشكلة جديدة.</p>\n","hints":["حدّق في النموذج. ما الذي يبرز، وأيّ streak يخصّ أيّ عادة؟","قارن الفجوة بين الاسم والـ streak الخاص به بالفجوة بين ذلك الـ streak والعادة التالية.","عُدّ الحوافّ اليسرى والأسطر الموسّطة. ثم اسأل: هل إضافة الإطارات أو الألوان تزيل المشكلة أم تخفيها؟"],"explanation":"<p>هناك ثلاثة أخطاء. العنوان بحجم أسماء العادات ووزنها نفسيهما، فلا يتقدّم شيء على شيء. كل streak يقع على بعد 40 px تحت عادته، لكن على بعد 14 px فقط فوق العادة التالية، فيربطه القُرب بالصف الخطأ؛ ضعه على بعد 4 px تحت اسمه وامنح الصفوف فجوة أكبر. وسطر التقدّم الموسّط يضيف محور محاذاة ثانيًا بلا سبب؛ حاذِه على الحافّة اليسرى المشتركة. أما الإطارات والفواصل فستزيّن المسافات المعكوسة بدل أن تصلحها، والأسماء الموسّطة تجعل القائمة أصعب في التصفّح، وتلوين الـ streaks باللون المميّز سيجعلها تنافس أزرار التعليم، وهي الشيء الوحيد الذي يجب أن يحمل ذلك اللون.</p>\n","checkLabels":{},"optionText":{"title-rank":{"text":"اجعل العنوان أكبر وأثقل بوضوح من أسماء العادات.","why":"صحيح. العنوان والعادات الآن بالحجم نفسه، فليس للشاشة نقطة تبدأ منها العين. والفرق الواضح في الحجم والوزن يمنحها هذه النقطة."},"regroup-streaks":{"text":"ضع كل streak على بعد بكسلات قليلة تحت اسم عادته، وكبّر الفجوة بين الصفوف.","why":"صحيح. الـ streaks الآن أقرب إلى العادة التالية منها إلى عاداتها هي. فجوات صغيرة في الداخل وأكبر بين المجموعات: هكذا يُصلَح التجميع."},"one-edge":{"text":"حاذِ سطر التقدّم لليسار على الحافّة نفسها التي تبدأ منها القائمة.","why":"صحيح. السطر الموسّط يخلق محورًا ثانيًا. حافّة يسرى مشتركة واحدة تجعل الشاشة أهدأ وأسرع في التصفّح."},"boxes-dividers":{"text":"ضع كل صف داخل إطار وأضف خطًا فاصلًا تحت كل إطار.","why":"الإطارات تخفي مشكلة المسافات بدل أن تحلّها، وتصبح الشاشة أثقل. أصلح الفجوات أولًا؛ فقد لا تحتاج إلى إطارات أصلًا."},"center-names":{"text":"وسّط أسماء العادات لتبدو القائمة متوازنة.","why":"عناصر القائمة الموسّطة تبدأ عند مواضع أفقية مختلفة، فتضطرّ العين للبحث عن كل منها. القوائم تُقرأ أفضل وهي محاذاة لليسار."},"accent-streaks":{"text":"لوّن أعداد الـ streak باللون المميّز لتبرز.","why":"الـ streaks أدنى رتبة من العادات وأزرار تعليمها. منحها اللون المميّز يجعلها تنافس الإجراء الأساسي."}}},"words":703,"readMinutes":4}