Я пытаюсь создать горизонтальное правило с текстом в середине. Например:
----------------------------------- мой заголовок здесь ------------ -----------------
Есть ли способ сделать это в CSS? Без всех черточек "-", очевидно.
html
css
cross-browser
Джейсон
источник
источник
form
тега?fieldset
иlegend
элементыОтветы:
Это примерно так, как я бы это сделал: строка создается установкой a
border-bottom
на содержание, аh2
затем передачейh2
меньшегоline-height
. Затем текст помещается во вложенныйspan
непрозрачный фон.Я тестировал только в Chrome, но нет причин, чтобы он не работал в других браузерах.
JSFiddle: http://jsfiddle.net/7jGHS/
источник
Попробовав разные решения, я пришел с одним действительным для различной ширины текста, любого возможного фона и без добавления дополнительной разметки.
Я проверял это в IE8, IE9, Firefox и Chrome. Вы можете проверить это здесь http://jsfiddle.net/Puigcerber/vLwDf/1/
источник
h1 {
overflow: hidden; `text-align: left; текстовый отступ: 40px; `}:after
элемент шириной блока. Мне интересно: в чем конкретно заключается рольmargin-right: -50%
? Когда я возился с кодом, отсутствие этого свойства делало оформление переломом на другую строку. И даже когда:after
ему назначена ширина 100%, мне все равно нужно отрицательное поле справа-50%, чтобы оно подходило. Зачем?Хорошо, этот более сложный, но он работает во всем, кроме IE <8
Элементы: before и: after расположены абсолютно так, что мы можем потянуть один влево и один вправо. Кроме того, ширина (в данном случае 40%) очень зависит от ширины текста внутри .. нужно подумать над решением для этого. По крайней мере
top: 1.2em
гарантирует, что строки остаются более или менее в центре текста, даже если у вас другой размер шрифта.Это, кажется, работает хорошо, хотя: http://jsfiddle.net/tUGrf/3/
источник
form
тега. Если он делает, как я уверен, вы знаете, он мог бы просто использоватьfieldset
иlegend
.Самый короткий и лучший метод:
источник
font-family: monospace;
работало нормально.Вот решение на основе Flex.
JSFiddle: https://jsfiddle.net/yoshiokatsuneo/3h1fmj29/
источник
<h1><span>Today</span></h1>
с полем / отступом на промежутке.для более позднего (ныне) браузера,
display:flex
anddpseudo-elements
облегчает рисование.border-style
,box-shadow
И дажеbackground
помогает также для макияжа.источник
источник
Дайте интервалу отступ, чтобы сделать больше пространства между текстом и строкой.
Пример: http://jsfiddle.net/tUGrf/
источник
Я искал некоторые решения для этого простого украшения и нашел немало, некоторые странные, некоторые даже с JS для вычисления высоты шрифта и бла, бла, бла, потом я прочитал один на этот пост и прочитать комментарий от тридцати, говоря о
fieldset
иlegend
я подумал , что это было.Я переопределяю эти 2 стиля элементов, я думаю, вы могли бы скопировать для них стандарты W3C и включить их в свой
.middle-line-text
класс (или как вы хотите это называть), но я сделал это так:Вот скрипка: http://jsfiddle.net/legnaleama/3t7wjpa2/
Я играл со стилями границ, и это также работает в Android;) (Проверено на kitkat 4.XX)
РЕДАКТИРОВАТЬ:
Следуя идее Бекерова Артура, которая также является хорошим вариантом, я изменил изображение .png base64, чтобы создать обводку с помощью .SVG, чтобы вы могли рендерить в любом разрешении, а также изменять цвет элемента без участия какого-либо другого программного обеспечения :)
источник
Решение для IE8 и новее ...
Вопросы стоит отметить:
С помощью
background-color
маскировки границы может быть не лучшим решением. Если у вас сложный (или неизвестный) цвет фона (или изображение), маскировка в конечном итоге потерпит неудачу. Кроме того, если вы измените размер текста, вы заметите, что белый цвет фона (или любой другой заданный вами размер) начнет скрывать текст в строке выше (или ниже).Вы также не хотите «угадывать», насколько широки разделы, потому что это делает стили очень негибкими и практически невозможными для реализации на адаптивном сайте, где ширина контента меняется.
Решение:
( Посмотреть JSFiddle )
Вместо того, чтобы «маскировать» границу с помощью
background-color
, используйте вашуdisplay
собственность.HTML
CSS
Измените размер текста, разместив вашу
font-size
собственность на.group
элемент.Ограничения:
top
свойство на.line
элементе должно быть половинойline-height
. Итак, если у вас естьline-height
о1.5em
, тоtop
должно быть-.75em
. Это ограничение, потому что оно не автоматизировано, и если вы применяете эти стили к элементам с разной высотой строки, вам может потребоваться повторно применить вашline-height
стиль.Для меня эти ограничения перевешивают «проблемы», которые я отметил в начале моего ответа для большинства реализаций.
источник
Это дает вам фиксированную длину линий, но прекрасно работает. Длина строк контролируется путем добавления или взятия '\ 00a0' (пробел в юникоде).
источник
Если кому-то интересно, как установить заголовок таким образом, чтобы он отображался с фиксированным расстоянием до левой стороны (а не по центру, как показано выше), я понял это, изменив код @ Puigcerber.
Здесь JSFiddle .
источник
это поможет тебе
между линией
источник
Я использую макет таблицы, чтобы динамически заполнить стороны, а также абсолютные позиции 0 по высоте для динамического вертикального позиционирования:
https://jsfiddle.net/eq5gz5xL/18/
Я обнаружил, что немного ниже истинного центра лучше всего выглядит текст; это можно отрегулировать там, где
55%
есть (чем выше высота, тем ниже планка). Внешний вид линии можно изменить там, где онаborder-bottom
есть.HTML:
CSS:
источник
Не для того, чтобы победить мертвую лошадь, но я искал решение, оказался здесь и сам не был удовлетворен вариантами, не в последнюю очередь по какой-то причине я не смог заставить предоставленные здесь решения работать хорошо для меня. (Вероятно, из-за ошибок с моей стороны ...) Но я играл с flexbox, и вот кое-что, что я получил для себя.
Некоторые настройки являются жесткими, но только для демонстрации. Я думаю, что это решение должно работать практически в любом современном браузере. Просто удалите / настройте фиксированные настройки для класса .flex-parent, настройте цвета / текст / материал и (я надеюсь) вы будете так же счастливы, как и я, с этим подходом.
HTML:
Я также сохранил свое решение здесь: https://jsfiddle.net/Wellspring/wupj1y1a/1/
источник
На всякий случай, если кто-то захочет, IMHO, лучшее решение с использованием CSS - это flexbox.
Вот пример:
Это всегда должно приводить к идеально центрированному выровненному контенту с линией слева и справа, с легким контролем поля между строкой и вашим контентом.
Он создает линейный элемент до и после вашего верхнего элемента управления и устанавливает их в порядке 1,3 в вашем флекс-контейнере, в то время как ваш контент устанавливается в порядке 2 (переходите в середину). если задать значение «до» или «после» 1, они будут в равной степени использовать самое свободное место, сохраняя при этом центрирование вашего контента.
Надеюсь это поможет!
источник
Я не слишком уверен, но вы можете попробовать использовать горизонтальное правило и поместить текст выше его верхнего поля. Вам понадобится фиксированная ширина тега абзаца и фон. Это немного странно, и я не знаю, сработает ли это во всех браузерах, и вам нужно установить отрицательное поле в зависимости от размера шрифта. Работает на Chrome, хотя.
источник
Я попробовал большинство предложенных способов, но заканчивается некоторыми проблемами, такими как полная ширина, или Не подходит для динамического контента. Наконец я изменил код, и работает отлично. Этот пример кода будет рисовать эти линии до и после, и он гибок в изменении содержимого. Центр тоже выровнен.
HTML
CSS
Результат: https://jsfiddle.net/fasilkk/vowqfnb9/
источник
Для меня это решение прекрасно работает ...
HTML
<h2 class="strikethough"><span>Testing Text</span></h2>
CSS
источник
Люди, которые используют Bootstrap 4, могут достичь с помощью этого метода. классы, упомянутые в коде HTML, взяты из Bootstrap 4.
И напишите свой HTML, как это
источник
Горизонтальная и вертикальная линия со словами в середине
Ответ также дан в https://stackoverflow.com/a/57279326/6569224
источник
Результат:
источник