Menu
flag Ar iconالعربيةdown icon

التسطير في CSS: text-decoration واللون والإزاحة والإزالة

سطّر النص بـ text-decoration، ثم تحكم في الخط: لونه ونمطه وسماكته وبعده عن النص. وأيضًا كيف تزيل الخط من تحت الروابط، ومتى يجب ألا تفعل ذلك.

تحتوي هذه الصفحة على محررات قابلة للتشغيل - حرّر، شغّل، وشاهد النتيجة فوراً.

كيف تسطّر النص في CSS

ترسم text-decoration: underline خطًا تحت النص. يأخذ الخط لون النص ما لم تعطه لونًا.

يستخدم السطر الثاني الاختصار text-decoration لنوع الخط ونمطه ولونه، ثم يضبط السماكة والإزاحة بخاصيتيهما. تسمح المواصفة أيضًا بوضع السماكة داخل الاختصار، لكن Safari يُسقط التصريح كله حين تضعها، لذلك اكتب text-decoration-thickness منفصلة.

خصائص text-decoration

الخاصيةالقيمالافتراضي
text-decoration-lineunderline، overline، line-through، none (يمكن الجمع بينها)none
text-decoration-stylesolid، double، dotted، dashed، wavysolid
text-decoration-colorأي لونcurrentColor (لون النص)
text-decoration-thicknessطول، نسبة مئوية، auto، from-fontauto
text-underline-offsetطول، نسبة مئوية، autoauto

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، فزخرفة الأب لا تصل إليه.

Coddy programming languages illustration

تعلّم البرمجة مع Coddy

ابدأ الآن