Есть ли понятие преимущественного разбиения пространства в HTML или CSS? [Дубликат]

Симон Моурир дал этот пример :

object o = null;
DateTime d = (DateTime)o;  // NullReferenceException

, где unboxing преобразование (литье) из object (или из одного из классов System.ValueType или System.Enum или из типа интерфейса) - тип значения (кроме Nullable<>) сам по себе дает NullReferenceException.

В другом направлении конверсия бокса из a Nullable<>, которая имеет HasValue, равную false , на ссылочный тип, может дать ссылку null, которая затем может привести к NullReferenceException. Классический пример:

DateTime? d = null;
var s = d.ToString();  // OK, no exception (no boxing), returns ""
var t = d.GetType();   // Bang! d is boxed, NullReferenceException

Иногда бокс происходит по-другому. Например, с помощью этого не общего метода расширения:

public static void MyExtension(this object x)
{
  x.ToString();
}

следующий код будет проблематичным:

DateTime? d = null;
d.MyExtension();  // Leads to boxing, NullReferenceException occurs inside the body of the called method, not here.

Эти случаи возникают из-за специальных правил, используемых во время выполнения при боксе Nullable<> экземпляров.

81
задан Jason S 22 March 2011 в 16:01
поделиться

8 ответов

Используя

span.avoidwrap { display:inline-block; }

и обертывая текст, который я хочу сохранить вместе в

<span class="avoidwrap"> Text </span>

, он сначала будет обертываться в предпочтительных блоках, а затем в меньших фрагментах по мере необходимости .

124
ответ дан grg 27 August 2018 в 04:29
поделиться

Новый ответ теперь у нас есть HTML5:

HTML5 представляет тэг <wbr>. [Это означает, что Word Break Opportunity.)

Добавление <wbr> сообщает браузеру о разрыве там, где есть еще что-либо, поэтому легко разбить слова после запятых:

Honey Nut Cheerios,<wbr> Wheat Chex,<wbr> Grape-Nuts,<wbr> Rice Krispies,<wbr> Some random cereal with a very long name,<wbr> Honey Bunches of Oats,<wbr> Wheaties,<wbr> Special K,<wbr> Froot Loops,<wbr> Apple Jacks

Он поддерживает мои все основные браузеры, кроме IE.

2
ответ дан ACarter 27 August 2018 в 04:29
поделиться

Используйте <div> вместо <span> или укажите класс для SPAN и дайте ему атрибут display: block.

-3
ответ дан Angry Spartan 27 August 2018 в 04:29
поделиться

Легким ответом является использование символа пробела нулевой ширины &#8203; Используется для создания разрывов внутри слов в определенных точках .

Точно ли напротив неразрывного пространства &nbsp; (ну, собственно, слово-столяр &#8288;) ( word-joiner - это версия безразмерной версии space )

(есть и другие не нарушающие коды, такие как неразрывный дефис &#8209;) (здесь приведен обширный ответ на разные «варианты» nbsp)

Если вы хотите использовать только HTML-решение (без CSS / JS), вы могли бы использовать комбинацию пространства нулевой ширины и неиспользуемого пространства , однако это было бы действительно messy , а для записи удобочитаемой версии требуется небольшое усилие.

ctrl + c, ctrl + v помогает

пример:

   Honey&nbsp;Nut&nbsp;Cheerios,<!---->&#8203;<!--
-->Wheat&nbsp;Chex,<!---->&#8203;<!--
-->Grape&#8209;Nuts,<!---->&#8203;<!--
-->Rice&nbsp;Krispies,<!---->&#8203;<!--
-->Some&nbsp;random&nbsp;cereal&nbsp;with&nbsp;a&nbsp;very&nbsp;long&nbsp;name,<!---->&#8203;<!--
-->Honey&nbsp;Bunches&nbsp;of&nbsp;Oats,<!---->&#8203;<!--
-->Wheaties,<!---->&#8203;<!--
-->Special&nbsp;K,<!---->&#8203;<!--
-->Froot&nbsp;Loops,<!---->&#8203;<!--
-->Apple&nbsp;Jacks

нечитабельно? это тот же HTML без тегов комментариев:

   Honey&nbsp;Nut&nbsp;Cheerios,&#8203;Wheat&nbsp;Chex,&#8203;Grape&#8209;Nuts,&#8203;Rice&nbsp;Krispies,&#8203;Some&nbsp;random&nbsp;cereal&nbsp;with&nbsp;a&nbsp;very&nbsp;long&nbsp;name,&#8203;Honey&nbsp;Bunches&nbsp;of&nbsp;Oats,&#8203;Wheaties,&#8203;Special&nbsp;K,&#8203;Froot&nbsp;Loops,&#8203;Apple&nbsp;Jacks

Однако, поскольку рендеринг HTML html не полностью стандартизирован, его полезно для такого использования, поскольку это решение использует не CSS / JS

Кроме того, если вы используете это в сочетании с любым из решений на основе <span>, у вас будет полный контроль алгоритма разрыва

(редакционная заметка:)

Единственная проблема, с которой я мог столкнуться, - это если вы хотите динамически менять точки предпочтительного ломания. Это потребует постоянной JS-манипуляции каждого из пропорциональных размеров пролета и необходимости обрабатывать эти HTML-объекты в тексте.

3
ответ дан Community 27 August 2018 в 04:29
поделиться

Вы можете просто отрегулировать настройки полей в CSS (в этом случае правая сторона).

text {
    margin-right: 20%;
}
0
ответ дан gooflord 27 August 2018 в 04:29
поделиться

С вашей надписью выше используйте span { white-space:nowrap }. Это так хорошо, как вы можете ожидать.

2
ответ дан Marcel 27 August 2018 в 04:29
поделиться

Для этого есть HTML-элемент: (теперь стандартизованный) элемент <wbr> .

Я бы посоветовал вам использовать это. Он может не работать везде , но это лучшее, что вы можете сделать, не пройдя обручи.

-5
ответ дан Mathias Bynens 27 August 2018 в 04:29
поделиться

Очень удобное RWD-решение из Dan Mall , которое я предпочитаю. Я собираюсь добавить его здесь, потому что некоторые другие вопросы, касающиеся ответных разрывов строк, отмечены как дубликаты этого. В вашем случае у вас будет:

<span>Honey Nut Cheerios, <br class="rwd-break">Wheat Chex, etc.</span>

И одна строка CSS в вашем медиа-запросе:

@media screen and (min-width: 768px) {
    .rwd-break { display: none; }
}
15
ответ дан Stephan Weinhold 27 August 2018 в 04:29
поделиться