Так что я не нашел хорошего решения для вашего вопроса, но я дам вам то, что я пробовал, возможно, это даст вам некоторые идеи.
Очевидно, выравнивание базовой линии с помощью flexbox только выравнивает текст содержимое, как вы хотите, а не сам div.
.parent {
display: flex;
align-items: last baseline;
}
.child2 {
font-family: monospace;
font-size: 200%;
}
img {
border-bottom: 1px solid red;
}
.child-bottom {
padding: 5px;
background-color: #fdd;
border-bottom: 1px solid red;
}
<div class="parent">
<span>These</span>
<span class="child2">are</span>
<span>baseline</span>
<img src="https://cdn.sstatic.net/Img/ico-binoculars.svg?v=d4dbaac4eec9">
<span>aligned.</span>
<div class="child-bottom">This child's bottom border should be on the baseline of the parent.</div>
</div>
Но пустой базовый элемент будет выровнен по базовой линии?
.parent {
display: flex;
align-items: baseline;
}
.child2 {
font-family: monospace;
font-size: 200%;
}
img {
border-bottom: 1px solid red;
}
.child-bottom {
padding: 5px;
width:50px;
height:50px;
background-color: #fdd;
border-bottom: 1px solid red;
}
<div class="parent">
<span>These</span>
<span class="child2">are</span>
<span>baseline</span>
<img src="https://cdn.sstatic.net/Img/ico-binoculars.svg?v=d4dbaac4eec9">
<span>aligned.</span>
<div class="child-bottom"></div>
</div>
Я пробовал решения с абсолютным позиционированием, но вы вынуждены определить размер родителя, что не является хорошим решением ...
Лучшее решение, которое я нашел, это, я думаю, выровнять текст с помощью flexbox, а затем перевести блок в соответствии с размером отступов ... Надеюсь, это вам немного поможет ...
.parent {
display: flex;
align-items: last baseline;
}
.child2 {
font-family: monospace;
font-size: 200%;
}
img {
border-bottom: 1px solid red;
}
.child-bottom {
padding: 5px;
background-color: #fdd;
border-bottom: 1px solid red;
transform:translateY(-10px);
}
<div class="parent">
<span>These</span>
<span class="child2">are</span>
<span>baseline</span>
<img src="https://cdn.sstatic.net/Img/ico-binoculars.svg?v=d4dbaac4eec9">
<span>aligned.</span>
<div class="child-bottom">This child's bottom border should be on the baseline of the parent.</div>
</div>
Другое решение - выровнять все по flex-end так, чтобы все дочерние элементы были выровнены снизу, но я думаю, что это не то, что вы хотите, как вы уже сказали .