отмена выравнивания текста: выровнять;для определенных частей текста - PullRequest
5 голосов
/ 20 декабря 2011

Чтобы предотвратить перенос части текста, можно использовать окружение этой части в <span style="white-space: nowrap;">.

Учитывая блок выровненного текста (text-align: justify), как мне отменить выравнивание для части текста? Я хочу, чтобы весь текст был выровнен, но не позволял увеличить расстояние между двумя конкретными словами.

Вместо четного интервала во второй строке, вот так:

Lorem ipsum dolor sit amet, consectetur |
adipiscing    elit.     Phasellus    et |
ullamcorperenim sed velit fermentum.    |

Я хочу объединить слова "adipiscing elit", например:

Lorem ipsum dolor sit amet, consectetur |
adipiscing elit.      Phasellus      et |
ullamcorperenim sed velit fermentum.    |

Возможно ли это?

Ответы [ 3 ]

6 голосов
/ 20 декабря 2011

Опции:

  1. Используйте FOUR-PER-EM SPACE U + 2005 вместо обычного пробела, например, adipiscing&#x2005;elit.Нет гарантии, что браузеры воспринимают его как нерастяжимое пространство, но это то, что они на самом деле делают, и это довольно естественная вещь.В конце концов, это одно из пространств фиксированной ширины .Недостаток: обычно происходит сбой в IE 6 (вместо пробела отображается небольшая рамка), если основным шрифтом текста не является Arial Unicode MS или какой-либо другой, особенно «богатый» шрифт.
  2. Оберните слова внутринекоторую встроенную разметку (обычно span) и установите для нее text-justify: none и display: inline-block.Недостатки: не работают старые некоторые старые браузеры, и объединяет два слова вместе (из-за последнего объявления - и без него этот метод не работает в текущих браузерах).
  3. Используйте вместо NO-BREAK SPACEнормальное пространство.Раньше это работало хорошо, хотя с недостатком - объединять два слова в одной строке.Но, например, нынешний Firefox рассматривает непрерывный режим как растяжимый, к сожалению, достаточно.
  4. Используйте технику, подобную той, которая приведена в обновленном ответе Web_Designer.Я бы предложил сделать ширину, которая ценится, чтобы она соответствовала размеру шрифта.Типичная ширина пространства составляет 0,25 мкм.
0 голосов
/ 20 декабря 2011

Одно из решений, которое вы должны рассмотреть, - это использовать один из нескольких символов Unicode фиксированной ширины. См:

http://www.cs.tut.fi/~jkorpela/chars/spaces.html

или

http://en.wikipedia.org/wiki/Space_(punctuation)

Пример:

adipiscing&#x2004;elit.

Однако, как и в случае решения Web_Designer, они оставят пробел в конце строки, если строка прервется там.

0 голосов
/ 20 декабря 2011

Я бы не рекомендовал использовать атрибут стиля html. Если вы используете класс, то легче вносить изменения:

Оберните два слова "adipiscing elit". в промежутке с таким классом:

<span class="unjustify">adipiscing elit.</span>

А потом в вашем CSS:

.unjustify {
    word-spacing: 2px; //experiment with differen't values here.
}


Обновление:

После некоторого тестирования вышеуказанное решение, похоже, не работает.
... поэтому я придумал следующее (рабочее) решение:

Оберните пространство между вашими двумя словами в промежутке с помощью следующего класса:

adipiscing<span class="unjustify"> </span>elit.

А потом в вашем CSS:

.unjustify {
    display: inline-block;
    width: 6px;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...