ماذا تفعل line-height
تضبط line-height ارتفاع كل سطر من النص. الفرق بين ذلك الارتفاع والارتفاع الذي يحتاجه الخط نفسه يُقسم نصفين ويُضاف فوق الحروف وتحتها، وهكذا تتحكم في المسافة بين الأسطر.
الفقرات الثلاث تستخدم خطًا بحجم 16px. ارتفاع الأسطر 16px و24px و32px.
القيم: بلا وحدة، طول، نسبة مئوية، normal
| القيمة | مثال | ارتفاع السطر لنص بحجم 16px | يرثها الأبناء على شكل |
|---|---|---|---|
| رقم | 1.5 | 24px | الرقم نفسه (1.5)، يُعاد حسابه لكل عنصر |
| طول | 24px، 1.5em، 1.5rem | 24px | الطول المحسوب (24px) |
| نسبة مئوية | 150% | 24px | الطول المحسوب (24px) |
normal | normal | من الخط، غالبًا نحو 1.2 | normal |
الصفان الأول والثاني يبدوان متطابقين على عنصر واحد. الفرق لا يظهر إلا حين يكون للابن حجم خط مختلف، وهو موضوع القسم التالي.
لماذا القيمة بلا وحدة هي الخيار الافتراضي الصحيح
ارتفاع السطر 1.5em أو 150% يتحول إلى بكسلات على الأب، ويرث الأبناء تلك البكسلات. فيحصل الابن ذو الخط الأكبر على أسطر أقصر من حروفه. أما القيمة بلا وحدة 1.5 فتُورَّث كرقم وتُضرب في حجم خط كل ابن.
العنوانان كلاهما يلتف على سطرين. الأول يرث أسطرًا بارتفاع 21px لحروف بحجم 32px، فتتداخل أسطره. والثاني يحصل على أسطر بارتفاع 32 × 1.5 = 48px. اضبط line-height مرة واحدة على body كرقم، ولن تحتاج إليها معظم الصفحات مرة أخرى.
جرّب القيم بنفسك
جرّب 1 و2 و30px و200% وnormal. يعرض Chrome القيمة normal ككلمة لا كقيمة بالبكسل، لأن حجمها يأتي من الخط.
قيم جيدة لنص مريح للقراءة
- نص الجسم: من 1.4 إلى 1.6. الأسطر الأطول تحتاج إلى ارتفاع سطر أكبر كي تجد العين بداية السطر التالي.
- العناوين: من 1.1 إلى 1.3. النص الكبير بتباعد 1.5 يبدو كأسطر منفصلة لا كعنوان واحد.
- الأزرار والتسميات ذات السطر الواحد: من 1 إلى 1.25، مع حشو للارتفاع.
لسهولة الوصول، يشترط معيار النجاح 1.4.12 في WCAG أن تبقى الصفحة صالحة حين يضبط القارئ ارتفاع السطر على 1.5 ضعف حجم الخط، لذلك تجنب الارتفاعات الثابتة على صناديق النص التي قد تقصّه.
توسيط سطر واحد من النص عموديًا
حين يحتوي الصندوق على سطر واحد بالضبط، فإن line-height مساوية لارتفاع الصندوق تضع النص في منتصفه العمودي، لأن المسافة الإضافية تُقسم بالتساوي فوقه وتحته:
تنكسر هذه الطريقة بمجرد أن يلتف النص على سطرين، لأن ارتفاع كل سطر يصبح عندها 40px. لأي شيء قد يلتف، وسّط باستخدام flexbox بدلًا من ذلك، كما في صفحة توسيط div.
الاختصار font
يضبط الاختصار font الحجم وارتفاع السطر معًا بشرطة مائلة:
body {
font: 16px/1.5 system-ui, sans-serif; /* size 16px, line-height 1.5 */
}
يعيد الاختصار ضبط كل خاصية خط لا يذكرها (بما فيها line-height إلى normal حين تحذف الجزء الذي بعد الشرطة المائلة)، لذلك اكتبه قبل أي قواعد font-* مفردة.
أخطاء شائعة
- استخدام
emأو%على حاوية. يرث الأبناء طولًا ثابتًا. استخدم رقمًا بلا وحدة. heightثابت على صندوق نص. حين يلتف النص أو يكبّر القارئ التباعد، يفيض. دع المحتوى يحدد الارتفاع.- نص جسم متراص جدًا.
line-height: 1تجعل الفقرات صعبة القراءة. ابدأ من 1.5. - توقع أن تضيف
line-heightمسافة بين الفقرات. هذا دورmarginعلى الفقرات. - الاعتماد على
normal. تتغير من خط لآخر، فيتحرك التخطيط حين يتغير الخط.
الأسئلة الشائعة
ماذا تفعل line-height في CSS؟
تضبط ارتفاع كل صندوق سطر في النص. المسافة الإضافية التي تتجاوز ارتفاع الخط نفسه تُقسم بالتساوي فوق الحروف وتحتها، لذلك تعني line-height الأكبر مسافة أكبر بين الأسطر.
هل يجب أن تكون لـ line-height وحدة؟
عادةً لا. القيمة بلا وحدة مثل 1.5 تُضرب في حجم خط كل عنصر، فتبقى متناسبة في الأبناء ذوي الأحجام المختلفة. أما القيمة ذات الوحدة فتُحسب مرة واحدة وتُورَّث كطول ثابت.
ما قيمة line-height الجيدة لنص الجسم؟
بين 1.4 و1.6 للفقرات، ونحو 1.1 إلى 1.3 للعناوين الكبيرة. توصيات WCAG من المستوى AAA تطلب 1.5 على الأقل في الفقرات.
ما هي line-height: normal؟
القيمة الافتراضية. يستخدم المتصفح قيمة من مقاييس الخط نفسه، عادةً نحو 1.2 لكنها تختلف من خط لآخر، فلا يمكن توقعها عبر الخطوط.
كيف أغيّر تباعد الأسطر في HTML؟
لا توجد في HTML سمة لتباعد الأسطر. استخدم خاصية CSS، مثلًا <p style="line-height: 2;"> لتباعد مزدوج.