Я показываю количество ящиков в строке с фиксированной высотой и шириной, сгенерированных из тегов <li>. теперь мне нужно выровнять текст по вертикали по центру. CSS vertical-align не влияет, может я что-то упускаю ???
Я не ищу трюков с использованием (margin, padding, line-height), они не будут работать, потому что некоторые тексты длинные и разбиваются на две строки.
Найдите актуальный код:
CSS код
ul.catBlock{
width:960px;
height: 270px;
border:1px solid #ccc;
}
ul.catBlock li{
list-style: none;
float:left;
display:block;
text-align: center;
width:160px;
height: 100px;
}
ul.catBlock li a{
display: block;
padding: 30px 10px 5px 10px;
height:60px;
}
HTML код
<ul class="catBlock">
<li><a href="#">IP Phone</a></li>
<li><a href="#">Dual SIM Switch Server</a></li>
<li><a href="#">IP PBX</a></li>
</ul>
html
css
vertical-alignment
AK4668
источник
источник
Ответы:
Определите родительский
display: table
элемент с помощью,vertical-align: middle
а сам элемент с помощью иdisplay: table-cell
.источник
<li>
чтобы попасть в одну строку?line-height
как вы выравниваете текст по вертикали. Это довольно стандартно, и я не считаю это "взломом". Просто добавьтеline-height: 100px
в свойul.catBlock li
и все будет хорошо.В этом случае вам, возможно, придется добавить его
ul.catBlock li a
вместо этого, поскольку весь текст внутри такжеli
находится внутриa
. Я видел, как при этом происходили странные вещи, поэтому попробуйте оба и посмотрите, какой из них работает.источник
vertical-align: middle
если даdisplay: table-cell
. Но я никогда им не пользовался. Взгляните здесь: phrogz.net/css/vertical-align/index.htmlКаким бы опозданием ни был этот ответ на много лет, любой, кто столкнется с этим, может просто захотеть попробовать
Браузерная поддержка flexbox намного лучше, чем когда @scottjoudry опубликовал свой ответ выше, но вы все равно можете рассмотреть вопрос о префиксе или других вариантах, если вы пытаетесь поддерживать гораздо более старые браузеры. caniuse: flex
источник
list-style-image
Chrome - изображение исчезаетУдивительно (или нет), но
vertical-align
инструмент действительно лучше всего подходит для этой работы. Лучше всего то, что Javascript не требуется.В следующем примере я размещаю
outer
класс посередине тела, аinner
класс - посерединеouter
класса.Предварительный просмотр: http://jsfiddle.net/tLkSV/513/
HTML:
CSS:
Вертикальное выравнивание работает путем выравнивания центров элементов, расположенных рядом друг с другом. Применение vertical-align к отдельному элементу абсолютно ничего не дает. Если вы добавите второй элемент, который не имеет ширины, но является высотой контейнера, ваш единственный элемент переместится в центр по вертикали с этим элементом без ширины, таким образом центрируя его по вертикали. Единственное требование состоит в том, что вы установите оба элемента как inline (или inline-block) и установите для их атрибута vertical-align значение
vertical-align: middle
.Примечание. В моем коде ниже вы можете заметить, что мой
<span>
тег и<div>
тег соприкасаются. Поскольку они оба являются встроенными элементами, пробел фактически добавит пробел между элементом без ширины и вашим div, поэтому не забудьте оставить его.источник
В будущем эту проблему решит flexbox. На данный момент поддержка браузеров мрачна, но она поддерживается в той или иной форме во всех текущих браузерах.
Поддержка браузера: http://caniuse.com/flexbox
Справочная информация о Flexbox: http://css-tricks.com/snippets/css/a-guide-to-flexbox/
источник
Здесь нет идеальных ответов, кроме ответа Асафа, который не содержит ни кода, ни примеров, поэтому я хотел бы внести свой вклад ...
Чтобы заставить
vertical-align: middle;
работать, вам нужно использоватьdisplay: table;
для своегоul
элемента иdisplay: table-cell;
дляli
элементов, а затем вы можете использоватьvertical-align: middle;
дляli
элементов.Вам не нужно давать никаких явных указаний
margins
,paddings
чтобы сделать ваш текст вертикально посередине.Демо
источник
Как объясняется здесь: https://css-tricks.com/centering-in-the-unknown/ .
Скриншот:
источник
Попробуйте это решение
Лучше всего работает в большинстве случаев
вам может потребоваться использовать div вместо li для этого
источник
Простое решение для вертикального выравнивания по центру ... для меня это работает как шарм
источник