Я создаю для себя веб-сайт с макетом содержимого из двух столбцов, где столбцы имеют соотношение сторон 1: 2, и я стараюсь избегать использования Grid для чего-то, что, по моему мнению, Flexbox может более чем легко обработать. Однако все мои попытки принудительного переноса из узкого левого столбца в широкий правый столбец с использованием flex-basis: 100%;
не работают без явной, non процент высоты, установленной для родительского элемента. Я не знаю что делать Я уже использовал эту статью и ссылался на несколько вопросов для решения, и буквально ничего не помогло.
Я использую Firefox 72, и это должно работать в последних версиях Firefox.
:root {
--bodywidth: 80vw;
--flexbasis: calc(var(--bodywidth) / 8);
--spacebasis: calc(var(--flexbasis) / 12);
--columnwidth: calc(var(--bodywidth) / 3);
}
/* https://tobiasahlin.com/blog/flexbox-break-to-new-row/ */
hr.break {
border: none;
margin: 0;
padding: 0;
flex-basis: 100%;
flex-grow: 1;
}
hr.row.break {
height: 0;
}
hr.col.break {
width: 0;
}
main {
display: flex;
flex-flow: column wrap;
/* height: 100%; /* << DOES NOT WORK */
/* height: 100vw; /* << Works perfectly fine, but NOT ideal */
}
/* vv As a bonus, these rules somehow make everything 2 column widths wide when only the stuff AFTER the break should be that wide */
main :not(.break) {
min-width: var(--columnwidth);
width: 100%;
}
main hr.break+* {
width: calc(var(--columnwidth) * 2);
}
<main>
<section>
<h1>About</h1>
<p>Blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah.</p>
</section>
<section>
<h1>Disclaimer</h1>
<p>Here there be naughty things!!!</p>
</section>
<!-- The amount of content on both sides of the break varies, as do the dimensions of the sections -->
<hr class="col break" />
<article class="blog">
<h1>Blog Entry</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum eleifend molestie orci. Donec pellentesque viverra magna, nec viverra velit laoreet non. Etiam blandit erat nulla, semper faucibus eros rhoncus vel.</p>
</article>
</main>
Если мне нужно, я могу держать нос и использовать Grid и заставить его работать, но это не идеально для любого натяжения воображения и потребует много лишних CSS чтобы все заработало. Я бы предпочел использовать Flexbox, если у кого-то есть решения.