Divide divs into 2 columns
I have a code like this:
<div class="article-container">
<div class="article">
<h3>title1</h3>
<p>article1</p>
</div>
<div class="article">
<h3>title2</h3>
<p>article2</p>
</div>
<div class="article">
<h3>title3</h3>
<p>article3</p>
</div>
<div class="article">
<h3>title4</h3>
<p>article4</p>
</div>
</div>and I want to convert this column with 1 row to 2 columns as follows:

I already tried using this code, but is there any other way to split the div?
.article-container {
display: flex;
flex-wrap: wrap;
}
.article {
flex-grow: 1;
flex-basis: 50%;
}
.article:after {
content: "";
flex: auto;
}<div class="article-container">
<div class="article">
<h3>title1</h3>
<p>article1</p>
</div>
<div class="article">
<h3>title2</h3>
<p>article2</p>
</div>
<div class="article">
<h3>title3</h3>
<p>article3</p>
</div>
<div class="article">
<h3>title4</h3>
<p>article4</p>
</div>
</div>This is different from this other question. Div div into 2 columns using CSS , the βarticleβ from this question is different. Has anyone got this idea?
Nothing wrong with flexbox for this layout.
There is no need to use a pseudo-element.
.article-container {
display: flex;
flex-wrap: wrap;
}
.article {
flex: 0 0 50%;
padding: 10px;
}
* {
margin: 0;
box-sizing: border-box;
}<div class="article-container">
<div class="article">
<h3>title1</h3>
<p>article1</p>
</div>
<div class="article">
<h3>title2</h3>
<p>article2</p>
</div>
<div class="article">
<h3>title3</h3>
<p>article3</p>
</div>
<div class="article">
<h3>title4</h3>
<p>article4</p>
</div>
</div>Here is one way to use float / clear:
.article {
float: left;
width: 50%;
}
.article:nth-child(odd) {
clear: left;
}<div class="article-container">
<div class="article">
<h3>title1</h3>
<p>article1</p>
</div>
<div class="article">
<h3>title2</h3>
<p>article2</p>
</div>
<div class="article">
<h3>title3</h3>
<p>article3</p>
</div>
<div class="article">
<h3>title4</h3>
<p>article4</p>
</div>
</div>CSS3. .
.article-container {
-webkit-columns: 2; /* Chrome, Safari, Opera */
-moz-columns: 2; /* Firefox */
columns: 2;
}<div class="article-container">
<div class="article">
<h3>title1</h3>
<p>article1</p>
</div>
<div class="article">
<h3>title2</h3>
<p>article2</p>
</div>
<div class="article">
<h3>title3</h3>
<p>article3</p>
</div>
<div class="article">
<h3>title4</h3>
<p>article4</p>
</div>
</div>It is actually quite simple. You just need to set .articlein display: inline-block;and move the second from the first using <br>and possibly width: 49%;on .articleto get the effect of the corresponding column
.article {
display: inline-block;
width: 49%;
}<div class="article-container">
<div class="article">
<h3>title1</h3>
<p>article1</p>
</div>
<div class="article">
<h3>title2</h3>
<p>article2</p>
</div>
<br>
<div class="article">
<h3>title3</h3>
<p>article3</p>
</div>
<div class="article">
<h3>title4</h3>
<p>article4</p>
</div>
</div>