تقنية

pre-line وpre-wrap: احتفظ بفواصل الأسطر واختر مصير المسافات

صندوقان يحتفظان بفاصل السطر؛ تظهر الفجوة أضيق مع pre-line وأوسع مع pre-wrap.
رسم مؤلف للمقارنة؛ النقاط تمثل مسافات داخل السطر. [1] [2]

قد يحمل نص الملاحظة فاصل سطر ومسافات متتابعة، لكن طريقة ظهوره تتوقف على white-space. [1]

اختر pre-line لدمج المسافات، أو pre-wrap لإبقائها؛ كلاهما يحافظ على فواصل الأسطر ويسمح بالالتفاف. [1] [2]

الخلاصة السريعة

  • أسند النص نفسه باستخدام textContent إلى عنصري المقارنة. [3]
  • تدمج pre-line المسافات العادية المتتابعة مع الحفاظ على فاصل السطر. [1]
  • تحافظ pre-wrap على المسافات العادية المتتابعة وفاصل السطر معًا. [2]
  • تغيّر white-space العرض؛ تبقى بيانات النص في المستند كما هي. [2]

ابدأ بنص واحد

أسند النص نفسه باستخدام textContent إلى عنصري المقارنة. [3]

ضع HTML، ثم ضع JavaScript بعده داخل script. يتضمن النص أربع مسافات بين موعد والقراءة وفاصل سطر بعدها. الإسناد ينشئ محتوى نصيًا؛ لا نُدخل وسومًا لتقسيم السطر. [3]

مرّر الشيفرة أفقيًا عند الحاجة.

<div id="lines" dir="rtl"></div>
<div id="spaces" dir="rtl"></div>

مرّر الشيفرة أفقيًا عند الحاجة.

const note = "موعد    القراءة\nأحضر دفتر الملاحظات";
const lines = document.getElementById("lines");
const spaces = document.getElementById("spaces");
lines.textContent = note;
spaces.textContent = note;

ادمج المسافات

تدمج pre-line المسافات العادية المتتابعة مع الحفاظ على فاصل السطر. [1]

أضف CSS التالي. في الصندوق الأول تضيق الفجوة بين موعد والقراءة؛ وتبدأ أحضر بعد الفاصل الصريح. إبقاء الفاصل لا يعني إبقاء كل مسافة. [1]

مرّر الشيفرة أفقيًا عند الحاجة.

#lines, #spaces {
  width: 220px;
  font: 20px/1.6 sans-serif;
  border: 1px solid #777;
  margin-block: 12px;
}
#lines { white-space: pre-line; }
#spaces { white-space: pre-wrap; }

احتفظ بالفجوة

تحافظ pre-wrap على المسافات العادية المتتابعة وفاصل السطر معًا. [2]

قارن الصندوقين عند العرض نفسه: تتسع فجوة الثاني لأنه يحتفظ بالمسافات الأربع. ويمكن للنص الالتفاف عند ضيق العرض؛ الفاصل المكتوب ليس موضع الانقسام الوحيد. [2]

افصل شكل العرض عن النص

تغيّر white-space العرض؛ تبقى بيانات النص في المستند كما هي. [2]

نفّذ المقارنتين بعد الإسناد. تظهر true في الحالتين رغم اختلاف الفجوة المرئية؛ تقرأ textContent النص، لا شكل السطور على الشاشة. [2] [3]

جرّب عرضًا أضيق، مثل 100px. هذه العينة لمسافات داخل السطر وفاصل LF؛ لا تختبر مسافات النهاية أو التبويب. معالجة كلمة طويلة بلا فرص التفاف تحتاج قرارًا إضافيًا. [1]

مرّر الشيفرة أفقيًا عند الحاجة.

console.log(lines.textContent === note);
console.log(spaces.textContent === note);
// true, true

المصادر ومتابعة القراءة

  1. MDN: white-space (يفتح في نافذة جديدة)developer.mozilla.org
  2. W3C: معالجة الفراغات والأسطر (يفتح في نافذة جديدة)w3.org
  3. MDN: textContent (يفتح في نافذة جديدة)developer.mozilla.org

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