سؤال

يؤدي عودة النقل في رمز HTML الخاص إلى مساحة مرئية في HTML المقدمة في Explorer 8. أعتقد أن هذا سيؤثر على الإصدارات الأخرى أيضًا.

فمثلا:

<span>
(111)&nbsp;
222-
3333&nbsp;
444444
</span>

يشبه هذا:

(111)  222- 3333  444444

يجب أن يكون هناك مساحة واحدة فقط بعد القوس الأول ، ولا توجد مساحة بعد اندفاعة ومساحة واحدة فقط بعد آخر 3. أحب عودة النقل لقدرة الكود ، هل من الممكن الحفاظ عليها ثم لا يزال يتم تقديم HTML بشكل صحيح في IE ؟

ها هي معلومات doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

يحرر:
أنا أفعل هذا بالفعل في تطبيق ASP.NET MVC 2 ، وارتباط قالب ASPX هو مطوّل تمامًا وهذا هو السبب في أنني حاولت فصله إلى خطوط متعددة:

<span>
(<%=((Model == null || Model.AreaCode == null) ? "" : Model.AreaCode).PadRight(3)%>)&nbsp;
<%=((Model == null || Model.Prefix == null) ? "" : Model.Prefix).PadRight(3)%>-
<%=((Model == null || Model.Suffix == null) ? "" : Model.Suffix).PadRight(4)%>&nbsp;
<%=(Model == null || Model.Extension == null) ? "" : Model.Extension%>
</span>
هل كانت مفيدة؟

المحلول

هذا سيناريو حيث sprintf نوع وظائف التألق حقا. في عالم .NET يتم التعامل معهم بواسطة String.Format. ها هي وثائق MSDN ويمكنك إعادة كتابة الرمز شيء من هذا القبيل:

<span>
<%= String.Format("({0:###}) {1:###}-{2:####} {3}", Model.AreaCode, Model.Prefix, Model.Suffix, Model.Extension); %>
</span>

أنا صدئ قليلاً على بناء جملة تنسيق سلسلة .NET ، لذلك لا توجد ضمانات على مقتطف الرمز هذا. هذا رابط آخر:

http://blog.stevex.net/string-formatting-in-csharp/

نصائح أخرى

في HTML ، يتم التعامل مع حرف FormFeed (U+000C) كمساحة بيضاء ، في XHTML

http://www.w3.org/tr/xhtml1/#c_15

ايضا http://www.w3.org/tr/xhtml1/#uaconf (النقطة 9):

يتم التعامل مع المساحة البيضاء وفقًا للقواعد التالية. يتم تعريف الأحرف التالية في أحرف الفضاء الأبيض [XML]:

Space () tabulation أفقي () عودة خط النقل () خلاصة خط () يقوم معالج XML بتطبيع رموز نهاية خط الأنظمة المختلفة في حرف واحد لتغذية سطر واحد ، يتم تمريره حتى التطبيق.

يجب أن يستخدم وكيل المستخدم التعريف من CSS لمعالجة أحرف المسافة البيضاء [CSS2]. لاحظ أن توصية CSS2 لا تتناول صراحة مسألة معالجة المساحة البيضاء في مجموعات الأحرف غير اللاتينية. سيتم معالجة هذا في إصدار مستقبلي من CSS ، وفي الوقت الذي سيتم فيه تحديث هذه المرجع.

ليس فقط في IE8. لقد اختبرته مع Chrome ويعطي نفس النتيجة. أولاً ، تحتاج إلى إزالة المساحة من <span> </span> عنصرها ذاتيًا. و Infact هناك مساحتان بين (111) 222 و 3333 44444. لذلك يبدو أن كل عودة عربة تأخذ مساحة فارغة واحدة.

هذا جيد تمامًا النظر في هذا html ...

<html>
  <head>
  </head>
  <body>
    This is some static text
    with carriage return
    <span>
      (111)&nbsp;222- 3333&nbsp;444444
    </span>
  </body>
</html>

سيكون الإخراج ...

هذا هو بعض النص الثابت مع عودة النقل (111) 222- 3333 444444

راقب المسافة بين النص ومع النص الثابت. لذا فإن ترجمة عودة النقل إلى الفضاء يبدو كقاعدة عامة لـ HTML.

خط جديد هو مساحة.

إذا كنت تريد حقًا هذه الأشياء على خطوط منفصلة ، فيمكنك استخدام تعليقات HTML:

<span><!--
-->(111)&nbsp;<!--
-->222-<!--
-->3333&nbsp;<!--
-->444444<!--
--></span>

على الرغم من أن هذا ليس كبيرًا جدًا بالنسبة للقراءة أيضًا. أنا شخصياً لا أرى ما لا يمكن قراءة كل شيء على سطر واحد. يمكنك أن تفعل:

<span style="white-space:nowrap">(111) 222-3333 444444</span>

إذا شعرت &nbsp;S تجعلها غير قابلة للقراءة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top