CSS text-box-trim

استخدِم المساحة الفارغة أعلى المحتوى النصي وأدناه لتحقيق التوازن البصري.

تاريخ النشر: 14 كانون الثاني (يناير) 2025

اعتبارًا من الإصدار 133 من Chrome، تتيح علامة text-box للمطوّرين والمصمّمين تخصيص المساحة فوق النص وتحته.

Browser Support

  • Chrome: 133.
  • Edge: 133.
  • Firefox: not supported.
  • Safari: 18.2.

الكتابة اليدوية:

text-box-trim: trim-start | trim-end | trim-both | none;
text-box-edge: cap | ex | text | leading + alphabetic | text;

Shorthand:

text-box: trim-both cap alphabetic;

تتيح لك هذه السمة التحكّم في المساحة فوق النص وتحته، مثل <h1> و<button> و<p>. ينتج كلّ خط مقدارًا مختلفًا من المساحة الاتجاهية للكتلة التي تساهم في حجم العنصر. لا يمكن قياس مساهمة المساحة الفوضوية هذه بسهولة، وكان من المستحيل التحكّم فيها حتى الآن.

يُعرف الخط ذلك، والآن يُعرفه CSS.

https://codepen.io/web-dot-dev/pen/xbKjRxL

تعود المساحة فوق الخط وتحته إلى طريقة عرض الويب للنص، وتُعرف باسم "نصف المسافة بين السطور". وقد تم تناول هذه المشكلة بأسلوب احترافي في مشاركة نشرها ماتياس أوت بعنوان The Thing With Leading In CSS. في الأساس، عندما كان يتم وضع النص يدويًا، كانت تُستخدَم قطع من الرصاص المعدني لفصل أسطر النص. تستوحي الويب من المساحة الافتتاحية، وتقسّم هذه المساحة إلى نصفين وتوزّع جزءًا فوق المحتوى وجزءًا تحته.

يظهر عنوان مع شريط وردي فاتح فوق النص وتحته لعرض نصف المسافة بين السطور.
المصدر

وهذا التاريخ مهم لأنّ text-box يمنحنا أسماء لكل نصف: فوق وتحت. بالإضافة إلى ذلك، يمكنك اقتصاصه.

هناك أيضًا عمل فني سابق لرمز text-box، وقد تتذكر المشاركة المثيرة التي نشرها "إيثان وانغ" بعنوان Leading-Trim: The Future Of Digital Typesetting، حيث تمّ تقديم leading-trim (الاسم الذي كان يحمله text-box سابقًا) لأول مرة.

يظهر عنوان مع مساحة زائدة أعلاه وتحته يبدو أنّها تمّت إزالتها باستخدام مقص.

يمكن أن تكون نقطة الدخول إلى عملية اقتصاص النص من Figma وعناصر التحكّم في "الاقتصاص العمودي" للمصمّمين. يوضّح هذا المنشور على X مكان خيار القطع العمودي ومدى فائدته للأزرار.

المصدر

بغض النظر عن كيفية وصولك إلى هذه الصفحة، يمكن أن يُحدث عنصر التحكّم في أسلوب الخط هذا فرقًا كبيرًا.

نظرة عامة على الميزة والبنية

في ما يلي، برأيي، الجملةان الأكثر شيوعًا اللتان ستحتاج إليهما عند العمل مع text-box:

h1 {
  /* trim both sides to the capital letters */
  text-box: trim-both cap alphabetic;

  /* trim both sides to the lowercase letter x */
  text-box: trim-both ex alphabetic;
}

سيكون اقتصاص كلا الفيديوهين إلى cap alphabetic هو الاستخدام الأكثر شيوعًا لهذه الميزة. تستخدم العروض التوضيحية التالية هذا الإجراء عدة مرات. ومع ذلك، يعرض المثال السابق أيضًا ex alphabetic لأنّه مفيد لتحقيق التوازن البصري بطرق فريدة.

ملعب المستكشف

يتيح لك العرض الترويجي التالي استكشاف البنية والاطّلاع على النتائج باستخدام القوائم المنسدلة. يمكنك تغيير الخطوط وتغيير قيم القطع العلوي والسفلي، والاطّلاع على الصور المرئية والتصنيفات المُشفَّرة بالألوان.

لقطة شاشة للعرض التوضيحي لأداة &quot;مستكشف البنية&quot; تعرِض هذه السمة الخط وقائمة منسدلة لاختيار خط مختلف. معاينة بنية الجملة مع مربّع نص: يتم تمييز بنية الجملة الأبجدية trim-both cap وعرضها. أخيرًا، هناك 3 قوائم منسدلة أخرى لاختيار قيم القطع.

الإجراءات التي يمكنك اتّخاذها:

  1. فحص عمل text-box-trim بصريًا في الصيغ النصية التي تتألف من سطر واحد أو عدة أسطر
  2. تمرير مؤشر الماوس فوق أحد الصيغ، والاطّلاع على قيم القطع المستخدَمة لتحقيق هذا التأثير
  3. تغيير الخط
  4. اقتصاص جانب واحد فقط من مربّع نص
  5. راجِع بنية الجملة أثناء تشغيلها.
https://codepen.io/web-dot-dev/pen/RNbyooE

ما الذي يمكنني إنشاؤه باستخدامه أو ما هي المشاكل التي يحلّها؟

تتوفّر بعض حلول المحاذاة والتوسيط البسيطة جدًا التي تنتج عن ميزة الاقتصاص هذه. يمكنك أيضًا الاقتراب من المسافة المناسبة بين العناصر، حيث يمكن استخدام رمز مثل gap بين العناصر.

يتم عرض مقارنة بين مجموعتَي محتوى. تحتوي المجموعة الأولى على مسافة بادئة قصيرة، بينما تحتوي المجموعة الثانية على مسافة بادئة مُقتطعة. والنتيجة هي أنّ المجموعة الثانية أكثر تقاربًا.
https://codepen.io/web-dot-dev/pen/RNbyoKE

تسهيل عملية المركزة

بالنسبة إلى المكوّنات الأصغر حجمًا والمضمّنة أكثر والمحتوى الأساسي، يُعدّ padding: 10px نمطًا معقولاً لتحديد عنصر لترك مسافات متساوية من جميع الجوانب. ومع ذلك، يمكن أن تؤدي النتيجة إلى إرباك المستخدمين، لأنّها غالبًا ما تحتوي على مساحة إضافية في الأعلى والأسفل.

لحلّ هذه المشكلة، غالبًا ما يضع المطوّرون مساحة أقل للترويس في أعلى العنصر وأسفله (الحزمة) لتعويض تأثيرات الترويس النصفي.

button {
  padding-block: 5px;
  padding-inline: 10px;
}

في هذه المرحلة، علينا تجربة مجموعات القيم إلى أن يتمّ وضع العناصر في المنتصف بصريًا. قد يبدو هذا المحتوى جيدًا على شاشة ونظام تشغيل معيّنين، ولكن ليس على شاشة أو نظام تشغيل آخرَين.

تسمح لنا الدالة text-box بقطع نصف المسافة البادئة من النص، ما يجعل قيم الحشو المتساوية مثل 10px مفيدة:

button {
  text-box: trim-both cap alphabetic;
  padding: 10px;
}
يتم عرض مثالَين. يعرض المثال الأول عنصرًا بملء: 10px ونصف المسافة بين السطور. يعرض المثال الثاني العنصر نفسه باستخدام text-box: trim-both cap alphabetic. والنتيجة هي أنّ الزر الثاني يكون في المنتصف من الناحية البصرية.
https://codepen.io/web-dot-dev/pen/NPKMbgq

في ما يلي بعض عناصر <button> التي توضّح كيف أنّ اقتصاص المساحة باستخدام text-box يجعل padding: 10px يبدو متساويًا من جميع الجوانب في عنصر تفاعلي عملي. لاحظ كيف يمكن للخط البديل أن ينتج مساحة مختلفة تمامًا بين السطور.

تظهر ثلاث مجموعات من الأزرار. تعرض المجموعة الأولى خطًا عاديًا بدون ذنابة. تعرض المجموعة الثانية خطًا مميّزًا أو مرحًا. تعرض المجموعة الثالثة التأثير نفسه ولكن باستخدام خط مكتوب بخط اليد. والهدف من ذلك هو إظهار أنّ كلّ خط له مساحة مختلفة لنصف المسافة بين السطور، ولكنّ قيم القطع متطابقة ويمكنها توحيد المساحة.
https://codepen.io/web-dot-dev/pen/mybLOMg

في ما يلي عناصر <span> التي غالبًا ما يتم استخدامها لعرض الفئات أو الشارات. هناك حالة أخرى يكون فيها الحشو على الجانبين متساوٍ هو الحل الأفضل، ولكن حتى text-box، كان علينا إيجاد حل بديل.

يتم عرض العلامات جنبًا إلى جنب. تحتوي المجموعة الأولى على مسافة بادئة قصيرة، بينما تحتوي المجموعة الثانية على مسافة بادئة مُقتطعة. والنتيجة هي أنّ المجموعة الثانية تكون أكثر تقاربًا مع بعضها وتظهر في المنتصف من الناحية البصرية.
https://codepen.io/web-dot-dev/pen/mybLOMg

محاذاة أسهل

تؤدي أيضًا المساحة الإضافية غير القابلة للتحكّم فيها والتي تسبق النص في أعلاه (over) وأسفله (under) إلى صعوبة المحاذاة. توضّح الأمثلة التالية الحالات التي يمكن أن تجعل فيها المسافة البادئة النصفية عملية المحاذاة صعبة، وكيف يمكن أن يؤدي اقتصاص جوانب المربّع النصي إلى إنشاء محاذاة أفضل.

تم وضع صورة بجانب النص. ستتم زيادة ارتفاع الصورة إلى الارتفاع الذي يحتاجه النص، ولكن بدون text-box، تكون الصورة دائمًا أطول قليلاً. باستخدام text-box، يمكن محاذاة الصورة تمامًا مع محتوى النص.

https://codepen.io/web-dot-dev/pen/yyBjVpg

يُرجى ملاحظة أنّ المسافة البيضاء تظهر فوق أول سطر من النص المنسَّق وتحت آخر سطر من النص المنسَّق في السيناريوهات التي تتضمّن لف السطر.

في المثال التالي، لاحظ كيف تتكيّف الميزة بشكل منطقي مع أي تغيير في writing-mode. جرِّب تغيير النص، ولاحظ كيف يبقى التنسيق محاذًى.

https://codepen.io/web-dot-dev/pen/dPbeOJQ

مواصلة الدراسة

هل تريد معرفة المزيد من المعلومات؟ تقدّم قائمة الروابط التالية كميات مختلفة من المعلومات الإضافية وحالات الاستخدام.