Я пытаюсь создать «панель», которая разделена на два столбца равной ширины, первая содержит текст, а вторая - изображение. Изображение большое и должно быть уменьшено, чтобы покрыть правую сторону. Высота панели должна соответствовать количеству текста в левой части.Высота flexbox по содержимому в первом столбце
Это то, что она должна выглядеть, изображение с помощью object-fit: cover;
так, чтобы он полностью заполняет его контейнер, , но я не хочу иметь max-height: 200px;
на .panel.
Возможно ли это как-то (желательно без использования JavaScript)?
.panel {
display: flex;
flex-direction: row;
justify-content: space-between;
background-color: red;
/* I want this to be flexible based on text in panelText */
/*max-height: 200px;*/
}
.panel .panelText {
padding: 1em;
flex: 1;
width: 50%;
background-color: black;
color: white;
}
.panel .panelImage {
object-fit: cover;
width: 50%;
}
<section class="panel">
<div class="panelText">
<h3>This is a header</h3>
<ul>
<li>One one one</li>
<li>Two two two</li>
<li>Three three three</li>
<li>Four four four</li>
</ul>
<p>Now we're at the end</p>
</div>
<img class="panelImage" src="https://placebear.com/1000/1000" />
</section>
Спасибо, это хорошее решение! Но я не уверен, что он задержит, когда текст вырастет до чего-то длиннее, чем высота изображения, когда он на 100% шире? Вот почему я хотел использовать 'object-fit: cover', чтобы гарантировать, что он всегда покрыт изображением. Может быть, лучше использовать фоновое изображение? – Oscar
Тогда ваш единственный вариант - использовать фоновое изображение. 'object-fit' не будет работать в этом случае, и он даже не будет закрыт всеми браузерами. http://caniuse.com/#search=object-fit Я отредактировал свой ответ. – Senthe
Спасибо @Senthe, второе решение отлично работает. При свертывании макета в «flex-direction: column;» (для мобильных устройств) я добавил «height: 200px;», чтобы было видно фоновое изображение. – Oscar