Красивые переносы с красивым отступом

by nemoluca 12. июня 2009 08:43

Встретил недавно интересную CSS задачу по переносу строк - надо было отобразить ссылку в две строки таким образом:

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

UPD: Новое решение, только на CSS

Решение предлагалось только для padding слева, с помощью вложенности:

<h2><a>...</a></h2>

При этом нужный левый внутренний отступ ставим h2 и остаётся решить проблему только с правым.

Решение пришло в двух вариантах в мою голову:

первый - выделить все слова из предложения и обрамить их тегом <span>, а ему соответственно выставить скажем float:left и нужный padding справа
второй - использовать <a> с вложенным одним <span> и заменить все пробелы на сочетание &nbsp;&#8203; - где первый символ - пробел, а второй - один из символов мягкого переноса (кстати, для IE6 пользуйте вместо него тег <wbr>), и в конце добавить пробел - &nbsp; (кроме того надо выставить определённый line-height)

Чистого, CSS-ного решения я не нашел, но понял, что более правильно использовать второй способ:

<style>
a {
  border-left:4px solid red;
  color:white;
  float:left;
  font-size:14px;
  padding:3px 0;
  line-height:22px;
}
a span {
  background:red;
  cursor:pointer;
  text-decoration:none;
  padding:6px 0;
}
</style>
<div style="width:200px;">
<a>
  <span>
    В&nbsp;&#8203;париже&nbsp;&#8203;запретили&nbsp;&#8203;
    рекламу&nbsp;&#8203;фильма&nbsp;&#8203;о&nbsp;&#8203;
    Коко&nbsp;&#8203;Шанель&nbsp;
  </span>
</a>
</div> 

И результат в виде HTML со стилями (смотрите сорцы):

 В ​париже ​запретили ​рекламу ​фильма ​о ​Коко ​Шанель 
.

Tags: , , , ,

CSS | HTML

Комментарии (3) -

Grawl
Grawl
01.05.2011 5:42:45 #

Я вот только не понял, всё-таки: как добавляется отступ справа?

Reply

tiaurus
tiaurus
01.05.2011 15:56:28 #

Я тоже не понял, каком образом в span попадают &nbsp;&#8203;? Вручную вставляются? Тогда это не вариант.

Reply

nemoluca
nemoluca
12.05.2011 1:44:49 #

Отступ справа появляется из-за:
в случае первого решения: паддинга всех спанов, которые обрамили слова
в случае второго решения: добавления неразрывных пробелов после каждого слова

Всё делается во время генерации текста на сервер-сайд регекспом или простым реплейсом даже, как правило всё это в руках разработчика. Кроме того, учитывая ничтожные размеры строки - это никак не затрагивает нас по производительности.

Reply

Добавить комментарий

  Country flag

biuquote
  • Комментарий
  • Предпросмотр
Loading

Page List

    Яндекс цитирования