Игнорировать с помощью CSS?
Я работаю над сайтом, который имеет разрывы строк, вставленные как <br>
в некоторые заголовки. Предполагая, что я не могу редактировать исходный HTML, есть ли способ с CSS, я могу игнорировать эти перерывы?
Я мобилью оптимизацию сайта, поэтому я действительно не хочу использовать JavaScript.
Ответы
Ответ 1
С помощью css вы можете "скрыть" теги br, и они не будут иметь эффекта:
br {
display: none;
}
Если вы хотите скрыть некоторые только в определенном типе заголовка, просто сделайте свой css более конкретным.
h3 br {
display: none;
}
Ответ 2
Примечание. Это решение работает только для браузеров Webkit, которые неправильно применяют псевдоэлементы к самозакрывающимся тегам.
В качестве дополнения к вышеприведенным ответам стоит отметить, что в некоторых случаях нужно вставить пробел вместо простого игнорирования <br>
:
Например, приведенные выше ответы будут отображаться
Monday<br>05 August
к
Monday05 August
как я проверял, пока я пытался отформатировать свой недельный календарь событий. Предпочтение отдается пробелу после "Понедельника". Это можно сделать легко, вставив в CSS следующее:
br {
content: ' '
}
br:after {
content: ' '
}
Это сделает
Monday<br>05 August
выглядят как
Monday 05 August
Вы можете изменить атрибут content
в br:after
на ', '
, если вы хотите разделить запятыми или поместить все, что хотите, в ' '
, чтобы сделать его разделителем! Кстати,
Monday, 05 August
выглядит аккуратно; -)
См. здесь для справки.
Как и в приведенных выше ответах, если вы хотите сделать его специфичным для тега, вы можете. Как и в случае, если вы хотите, чтобы это свойство работало для тега <h3>
, просто добавьте h3
каждый до br
и br:after
, например.
Он работает в основном для псевдотега.
Ответ 3
Если вы добавите стиль
br{
display: none;
}
Тогда это сработает. Не уверен, что он будет работать в более старых версиях IE.
Ответ 4
Вот как я это делаю:
br {
display: inline;
content: ' ';
clear:none;
}
Ответ 5
Вы можете использовать span
элементы вместо br
, если вы хотите, чтобы метод белого пространства работал, поскольку он зависит от псевдоэлементов, которые "не определены" для замененных элементов.
HTML
<p>
To break lines<span class="line-break">in a paragraph,</span><span>don't use</span><span>the 'br' element.</span>
</p>
CSS
span {white-space: pre;}
span:after {content: ' ';}
span.line-break {display: block;}
span.line-break:after {content: none;}
DEMO
Разрыв строки просто достигается путем установки соответствующего элемента span на display:block
.
Используя идентификаторы и/или классы в вашей разметке HTML, вы можете легко настроить каждую отдельную или комбинацию элементов span с помощью CSS или использовать селектор CSS, например nth-child()
.
Итак, вы можете, например, определить разные точки разрыва, используя медиа-запросы для гибкого макета.
И вы также можете просто добавить/удалить/переключить классы по Javascript (jQuery).
"Преимущество" этого метода - его надежность - работает в каждом браузере, который поддерживает псевдоэлементы (см.: Могу ли я использовать CSS Созданный контент).
В качестве альтернативы можно также добавить разрыв строки через псевдоэлементы:
span.break:before {
content: "\A";
white-space: pre;
}
DEMO
Ответ 6
Для этого вы можете просто сделать следующее:
br{display: none;}
и если он находится внутри некоторого тега PRE, вы можете и, если хотите, чтобы тег PRE вел себя как обычный элемент блока, вы можете использовать этот CSS:
pre {white-space: normal;}
Или вы можете следовать стилю Aneesh Karthik C
например:
br {content: ' '}
br:after {content: ' '}
Я думаю, вы получили его
Ответ 7
Вы можете просто преобразовать его в комментарий.
Или вы можете сделать это:
br {
display: none;
}
Но если вы этого не хотите, то почему вы так выразились?
Ответ 8
Хотя этот вопрос, похоже, уже был решен, принятый ответ не разрешил проблему для меня в Firefox.
Firefox (и, возможно, IE, хотя я и не пробовал) пропускаю пробелы при чтении содержимого тега "content". Хотя я полностью понимаю, почему Mozilla это сделает, это приносит свою долю проблем.
Самое легкое обходное решение, которое я нашел, состояло в том, чтобы использовать не прерываемые пространства вместо обычных, как показано ниже.
.noLineBreaks br:before{
content: '\a0'
}
Посмотрите.
Ответ 9
В соответствии с вашим вопросом, чтобы решить эту проблему для Firefox и Opera с помощью Aneesh Karthik C, вам нужно добавить атрибут "плавать" справа.
Обратите внимание на пример здесь. Этот CSS работает в
Firefox (26.0), Opera (12.15), Chrome (32.0.1700) и Safari (7.0)
br {
content: " ";
float:right;
}
Я надеюсь, что это ответит на ваш вопрос!!
Ответ 10
Для меня выглядит лучше:
Some text, Some text, Some text
br {
display: inline;
content: '';
}
br:after {
content: ', ';
display: inline-block;
}
<div style="display:block">
<span>Some text</span>
<br>
<span>Some text</span>
<br>
<span>Some text</span>
</div>