Стрелки ссылки падают на новую строку

У меня есть боковая панель со списком ссылок, и каждая ссылка имеет значок стрелки справа от нее (установите в стилях привязки с помощью селектора:after). На многих ссылках стрелка опускается до собственной линии. Я хочу убедиться, что текст может перейти на новую строку по мере необходимости, но не допускать, чтобы стрелка была осиротевшей на отдельной строке.

Я думал, что решил проблему, используя "white-space: nowrap" в псевдоэлементе:after, потому что это работало в Firefox. К сожалению, я обнаружил, что он не работает в IE8, Chrome и Safari.

Есть ли способ предотвратить разрыв значка ссылки на собственную строку, но при этом разрешить перенос текста в ссылке по мере необходимости в Firefox, IE8, Chrome и Safari?

Базовая структура HTML:

<div id="sidebar">
  <ul>
    <li><a>Link 1</a></li>
    <li><a>Link 12</a></li>
  </ul>
</div>

Правила стиля (написано в sass):

div#sidebar
  width: 170px

  a:after
    content: url('images/icon_double-arrow.png')
    margin: 0 0 0 6px
    white-space: nowrap

2 ответа

Решение

Я считаю, что я решил проблему. Я изменил стили, чтобы изображение стрелки было установлено в качестве фона привязки, и расположил его вправо, используя отступы, вместо того, чтобы устанавливать изображение стрелки как: после содержимого. Работает во всех упомянутых браузерах: граница: 0 background: url('images/icon_arrow.png') без повтора вправо по центру padding-right: 15px

Самым простым решением, вероятно, является использование символа, а не изображения в сгенерированном контенте, например

content: '\bb';

использовать "" "U+00BB ПРАВИЛЬНО-ТОЧЕЧНУЮ КАРТУ-КАРТУ ДВОЙНОГО УГЛА, которая напоминает изображение, которое вы сейчас используете, или

content: '\2192';

использовать символ стрелки "→" U+2192 СТРЕЛКА ВПРАВО.

Причина, по которой IE ведет себя странным образом, заключается в том, что он обычно рассматривает изображение как допускающее разрыв строки перед ним, при отображении во встроенном контексте, даже когда не вводится пробел (например, sometext<img ...>). Когда вместо этого вы используете символ без пробела перед ним, IE применяет правила разрыва строки текста (которые очень странны в IE, но не допускают разрыва строки, например, перед "" "в" foo "").

Другие вопросы по тегам