كيف تسطّر النص في CSS
ترسم text-decoration: underline خطًا تحت النص. يأخذ الخط لون النص ما لم تعطه لونًا.
يستخدم السطر الثاني الاختصار text-decoration لنوع الخط ونمطه ولونه، ثم يضبط السماكة والإزاحة بخاصيتيهما. تسمح المواصفة أيضًا بوضع السماكة داخل الاختصار، لكن Safari يُسقط التصريح كله حين تضعها، لذلك اكتب text-decoration-thickness منفصلة.
خصائص text-decoration
| الخاصية | القيم | الافتراضي |
|---|---|---|
text-decoration-line | underline، overline، line-through، none (يمكن الجمع بينها) | none |
text-decoration-style | solid، double، dotted، dashed، wavy | solid |
text-decoration-color | أي لون | currentColor (لون النص) |
text-decoration-thickness | طول، نسبة مئوية، auto، from-font | auto |
text-underline-offset | طول، نسبة مئوية، auto | auto |
text-decoration هي الاختصار للخصائص الأربع الأولى، لكن أبقِ السماكة خارجه: يتجاهل Safari تصريح text-decoration الذي يحتوي عليها. أما text-underline-offset فمنفصلة ويجب كتابتها وحدها.
الأنماط والألوان والسماكة
تحريك الخط: text-underline-offset
افتراضيًا يقع الخط قريبًا من الحروف ويتجاوز الأجزاء النازلة مثل g وp وy. تدفعه text-underline-offset إلى الأسفل أكثر، وهذا غالبًا أوضح في العناوين والروابط:
الفجوات حول الأجزاء النازلة تأتي من text-decoration-skip-ink: auto، المفعّلة افتراضيًا. اضبطها على none لخط متصل.
إزالة الخط من تحت الروابط
يسطّر ملف أنماط المتصفح الروابط. text-decoration: none تزيل الخط. ولأن كثيرًا من القراء يجدون الروابط بخطها، أعِده عند التمرير وتركيز لوحة المفاتيح، وأعطِ الرابط لونًا مختلفًا عن النص:
أشرطة التنقل والأزرار مكان مقبول لإزالة الخط، لأن موضعها يقول «رابط» أصلًا. أما داخل فقرة نصية فأبقِه. المزيد عن حالات الروابط في صفحة hover.
الخط العلوي والخط الذي يتوسط النص
ترسم text-decoration-line أيضًا خطًا فوق النص أو عبره، وتقبل أكثر من قيمة:
.old-price { text-decoration: line-through; }
.both { text-decoration-line: underline overline; }
الشطب عبر CSS بصري فقط. حين يكون النص محتوى محذوفًا (سعر تغيّر، عنصر أزيل)، ضعه في <s> أو <del>، كما تعرض صفحة التسطير في HTML، كي يكون المعنى في الوسوم لا في التنسيق وحده.
أخطاء شائعة
- استخدام
<u>للتسطير كتنسيق.<u>للنص المميز بأنه مختلف، مثل الأخطاء الإملائية. للتسطير المنسق استخدم CSS. - تسطير نص ليس رابطًا. سيحاول القراء النقر عليه. استخدم الخط العريض أو اللون أو الخلفية للتأكيد بدلًا من ذلك.
- إزالة خط الروابط داخل نص الجسم من دون إشارة أخرى. اللون وحده لا يكفي للقراء الذين لا يرون الفرق.
- محاولة إزالة تسطير الأب من الابن. لا يمكن إلغاؤه من الداخل؛ غيّر الأب أو اجعل الابن
inline-block. - توقع وجود
text-underline-offsetفي الاختصار. إنها خاصية مستقلة. - وضع السماكة في الاختصار. تعمل
text-decoration: underline 2pxفي Chrome وFirefox، لكن Safari يُسقط التصريح كله. استخدمtext-decoration-thickness.
الأسئلة الشائعة
كيف أضع خطًا تحت النص في CSS؟
استخدم text-decoration: underline; على العنصر. ولمظهر الخط أضف text-decoration-color وtext-decoration-style وtext-decoration-thickness وtext-underline-offset.
كيف أزيل الخط من تحت الرابط؟
اضبط text-decoration: none; على العنصر a. تأكد أن الروابط ما زالت بارزة بطريقة أخرى (لون، إضافةً إلى خط عند التمرير أو التركيز)، لأن كثيرًا من القراء يعتمدون على الخط لتمييز الروابط.
كيف أغيّر لون خط التسطير؟
استخدم text-decoration-color، أو الاختصار: text-decoration: underline #f59e0b;. من دونه يستخدم الخط لون النص.
كيف أضيف مسافة بين النص والخط الذي تحته؟
استخدم text-underline-offset، مثلًا text-underline-offset: 4px;. القيم الأكبر تبعد الخط أكثر تحت النص.
لماذا لا أستطيع إزالة التسطير من عنصر ابن؟
التسطير الذي يرسمه الأب يُطلى عبر أبنائه ولا يمكن إزالته من داخلهم. أزِله من العنصر الذي يضبطه، أو اجعل الابن display: inline-block، فزخرفة الأب لا تصل إليه.