Предотвратить разрыв строки с помощью тега span и p

0

У меня есть CSS, который вставляет тире, unicode U + 2014 -, чтобы дать хорошее форматирование на моем сайте раньше указанного источника. Раздражающе после этого он ломает новую линию (я пробовал переходить от span к div, но не использовать).

Изображение 174551

Дерево документов выглядит так:

<span class="source">...</span>
<p>Source author, text goes here etc. etc.</p>

Вычисленный стиль для строки span включает display:inline, тогда как вычисленный стиль для p имеет display:block, который, как я предполагаю, может вызвать новую строку?

Я читаю через соответствующий CSS и не вижу никакой причины, почему он должен начать новую строку, у меня нет \ A в содержании, как в этом вопросе...

Может ли какой-нибудь CSS-свисток указать на то, что мне не хватает? Возможно, требуется альтернативная реализация ::before псевдоэлементом?

Здесь используется CSS

div.source:before{content:"\2014";margin-left:0.9em;margin-right:0.9em; white-space:nowrap;}#content

(Я вставил белое пространство: nowrap некоторое время назад, пытаясь исправить это, но ничего не сделал с новой строкой)

  • 0
    Вы пробовали p{display: inline;} ? Является ли это то , что вы хотите?
  • 1
    Это связано <p> что по умолчанию <p> является элементом уровня блока, что означает, что он будет занимать 100% ширины своего родительского элемента, и поэтому переместится на новую строку. Возможно, предложение @ Гарри сработает.
Показать ещё 5 комментариев
Теги:

2 ответа

0
Лучший ответ

Вы можете попробовать использовать соседний селектор (+), как показано ниже. Он поддерживается в IE> = 7.

HTML:

<span class="source">&mdash;</span>
<p>Source author, text goes here etc. etc.</p>
<p>Source author, text goes here etc. etc.</p>

CSS:

.source + p{display: inline;} 
/* applies inline style to only the <p> tag directly following a tag with class=source */

Демо-версия скрипта | Поддержка браузера

  • 0
    иметь тот же эффект, что и div.source p: nth-of-type (1) {display: inline}?
  • 0
    Да, это так. Вы проверяли скрипку?
Показать ещё 8 комментариев
0

Почему бы вам не добавить class="source" непосредственно к тегу p, а не добавить ненужный span?

Поведение, которое вы видите сейчас, правильное, поскольку элементы p по умолчанию являются элементами уровня блока. Вы можете дать ему стиль display: inline; но, как я уже упоминал выше, было бы лучше избавиться от span и добавить класс в тег p.

  • 1
    Я согласен. Хотя я просто пытался решить проблему, вы упомянули лучший подход к ее решению. Однако, единственное, что нужно проверить, - это поддержка браузером псевдо :before (IE приходит на ум: D)
  • 0
    Я хотел бы использовать это, но я использую Tumblr для управления своими сообщениями (хотя я стараюсь скрыть это), и он не позволяет вам изменять атрибуты p-уровня в теме. Исходный раздел выглядит следующим образом: {block: Source} <div class = "source"> {Source} {/ block: Source}
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню