Как центрировать текст по вертикали с помощью большого шрифта-удивительный значок?
Допустим, у меня есть кнопка bootstrap со значком Font-awesome и некоторым текстом:
<div>
<i class='icon icon-2x icon-camera'></i>
hello world
</div>
Как сделать текст вертикально по центру?
Теперь текст выравнивается по нижнему краю значка:http://jsfiddle.net/V7DLm/1/
EDIT:
У меня есть возможность решение: http://jsfiddle.net/CLdeG/1/ но он чувствует себя немного хаки-вводит дополнительный тег p, использует pull-left и display: table. Может быть, кто-то может предложите более простой способ.
12 ответов:
Я просто должен был сделать это сам, нужно делать все наоборот.
- не играть с вертикальным выравниванием текста
- играть с вертикальным выравниванием шрифта-удивительный значок
<div> <span class="icon icon-2x icon-camera" style=" vertical-align: middle;"></span> <span class="my-text">hello world</span> </div>конечно, вы не можете использовать встроенные стили и нацелить его на свой собственный класс css. Но это работает в копипасте моды.
см. здесь: вертикальное выравнивание текста и значка в bootstrap кнопка
Если бы это зависело от меня, однако, я бы не использовать значок-2х. И просто указать размер шрифта и сам, как в следующем
<div class='my-fancy-container'> <span class='my-icon icon-file-text'></span> <span class='my-text'>Hello World</span> </div>.my-icon { vertical-align: middle; font-size: 40px; } .my-text { font-family: "Courier-new"; } .my-fancy-container { border: 1px solid #ccc; border-radius: 6px; display: inline-block; margin: 60px; padding: 10px; }рабочий пример см. В разделе http://jsfiddle.net/3GMjp/77/
Я использую значки рядом с текстом 99% времени, поэтому я сделал изменение глобально:
.fa-2x { vertical-align: middle; }добавьте 3x, 4x и т. д. К тому же определению, как это необходимо.
после рассмотрения всех предложенных вариантов самым чистым решением, по-видимому, является установка высоты линии и вертикального выравнивания всего:
посмотреть Jsfiddle Demo
CSS:
div { border: 1px solid #ccc; display: inline-block; height: 50px; margin: 60px; padding: 10px; } #text, #ico { line-height: 50px; } #ico { vertical-align: middle; }
если что-то не выстраиваются в очередь, простой
line-height: inherit;через CSS на конкретных элементах i.fa, которые имеют проблемы с выравниванием, могут сделать трюк достаточно просто.вы также можете использовать глобальное решение, которое из-за немного более высокой специфичности CSS переопределит FontAwesome .правило fa, которое указывает
line-height: 1без!importantна имущество:i.fa { line-height: inherit; }просто убедитесь, что выше глобальное решение не вызывает никаких других проблем в местах, где вы также можно использовать значки FontAwesome.
параметр элемента
div { display: inline-flex; /* make element size relative to content */ align-items: center; /* vertical alignment of items */ line-height: 40px; /* vertically size by height, line-height or padding */ padding: 0px 10px; /* horizontal with padding-l/r */ border: 1px solid #ccc; } /* unnecessary styling below, ignore */ body {display: flex;justify-content: center;align-items: center;height: 100vh;}div i {margin-right: 10px;}div {background-color: hsla(0, 0%, 87%, 0.5);}div:hover {background-color: hsla(34, 100%, 52%, 0.5);cursor: pointer;}<link href="http://netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css" rel="stylesheet"/> <div> <i class='icon icon-2x icon-camera'></i> hello world </div>скрипка
самый простой способ-установить свойство css вертикального выравнивания в middle
i.fa { vertical-align: middle; }
другой вариант тонкой настройки высоты линии значка - это использование процента от
vertical-alignсобственность. Обычно 0% - это нижний уровень, а 100% - Верхний, но можно использовать отрицательные значения или более ста для создания интересных эффектов..my-element i.fa { vertical-align: 100%; // top vertical-align: 50%; // middle vertical-align: 0%; // bottom }
попробуйте установить значок как
height: 100%вам не нужно ничего делать с оболочкой (например, кнопку).
для этого требуется шрифт Awesome 5. Не уверен, что это работает для более старых версий ОС.
.wrap svg { height: 100%; }обратите внимание, что значок на самом деле
svgграфические.
Я бы обернул текст в a, чтобы вы могли настроить его отдельно. Теперь, если вы плаваете и слева, вы можете использовать высоту линии для управления вертикальным расстоянием. Установка его на ту же высоту, что и (30px), выровняет его по середине. Смотрите здесь: http://jsfiddle.net/F3KyK/4/
Новая Разметка:
<div> <i class='icon icon-2x icon-camera'></i> <span id="text">hello world</span> </div>новый CSS:
div { border: 1px solid #ccc; height: 30px; margin: 60px; padding: 4px; vertical-align: middle; } i{ float: left; } #text{ line-height: 30px; float: left; }
при использовании flexbox вертикальное выравнивание значков шрифта awesome рядом с текстом может быть очень сложным. Я попробовал поля и отступы, но это переместило все элементы. Я пробовал различные выравнивания гибкого трубопровода, такие как центр, начало, базовая линия и т. д., безрезультатно. Самый простой и чистый способ настроить только значок, чтобы установить его содержащий div в
position: relative; top: XX;Это сделало работу отлично.
шрифты имеют стандартное решение, я использую его, когда мне нужно центрировать значок в строке:https://fontawesome.com/how-to-use/svg-with-js
Comments