Проблема заключается в том что, не понятно как работает свойство vertical-align.
Тут пример:
div
{
display:inline-block;
border:1px solid red;
padding:5px;
}
div.main
{
padding:10px;
}
.first
{
width:100px;
height:100px;
}
.second
{
width:100px;
height:100px;
}
.third
{
width:110px;
height:50px;
}
.four
{
width:110px;
height:50px;
}
<div class="main">
Hello world!
<div class="first">Hello world 1! Hello world 1! Hello world 1!</div>
<div class="second">Hello world 2!</div>
<div class="third">Hello world 3!</div>
<div class="four"></div>
</div>
Как можно увидеть блоки идут в ряд как и требуется от display:inline-block;
Но нужно же как-то задать выравнивание этих блоков: выровнять по верху, по низу, по середине. И тут нам должно помочь свойство vertical-align, т.к свойство display:inline-block;
дает нам природу inline объектов. Но не тут то и было проблема заключается в том что если блок и является inline-block то если внутри будет какой-то текст то выравнивание будет равняться по этому тексту, а не по блоку.
Объясните мне как работает vertical-align при inline-block.
Как игнорировать содержимое (текст) внутри inline-block элемента?
Есть выравнивание по тексту, есть по блоку. По-умолчанию, vertical-align: baseline
. baseline
- означает линию текста внутри инлайнблока.
Если вам это не нужно, ставьте vertical-align
с другим значением: Остальные свойства типа top
, middle
, bottom
никак не зависят от содержимого блока и выравниваются по границам элементов.
В отличие от таблиц, vertical-align
назначается на сам элемент, а не на родитель.
Смотрите разные свойства vertical-align
в моем сниппете:
$('a').click(function(){$('.main > div').css("vertical-align",$(this).data("align"))})
div
{
display:inline-block;
border:1px solid red;
padding:5px;
}
div.main
{
padding:10px;
}
.first
{
width:100px;
height:100px;
}
.second
{
width:100px;
height:100px;
}
.third
{
width:110px;
height:50px;
}
.four
{
width:110px;
height:50px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="main">
Hello world!
<div class="first">Hello world 1! Hello world 1! Hello world 1!</div>
<div class="second">Hello world 2!</div>
<div class="third">Hello world 3!</div>
<div class="four"></div>
</div>
<a href="javascript:;" data-align="baseline">baseline</a>
<a href="javascript:;" data-align="top">top</a>
<a href="javascript:;" data-align="bottom">bottom</a>
<a href="javascript:;" data-align="middle">middle</a>
Сравнение свойств "display" наглядно показано тут http://htmlbook.ru/css/display . На сколько я знаю "vertical-align" корректно работает только для таблиц, к сожалению. В остальных случаях придётся использовать padding/margin или js
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как умножить матрицу на матрицу разной размерности? У меня есть матрицы [200,3] и [3,3]Можно ли их перемножить?
Приложение написано на WinFormsПри запуске приложения процесс появляется в диспетчере задач и через секунду удаляется
Есть задача сделать накладную в приложении C# WinFormsВерстку документа хочу сделать в пикселях