Reputation: 1296
Basically, I want 1, 2 and 3 all be of the same width, and similarly if 4, 5, 6, etc. were added dynamically during runtime. Is it possible with pure CSS?
x = 4;
$("button").on("click", () => {
$(".active").removeClass("active").append(`
<div class="flex active">
<div>
${x++}
</div>
</div>
`);
});
.flex {
display: flex;
flex-direction: row;
box-sizing: border-box;
border-left: solid 1px #000;
}
div {
flex: 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="flex">
<div>
1
</div>
<div class="flex">
<div>
2
</div>
<div class="flex active">
<div>
3
</div>
</div>
</div>
</div>
<button>add</button>
Upvotes: 0
Views: 85
Reputation: 272947
You can use display:contents
to reduce the level on nesting:
x = 4;
$("button").on("click", () => {
$(".active").removeClass("active").append(`
<div class="flex active">
<div>
${x++}
</div>
</div>
`);
});
.flex {
display: flex;
flex-direction: row;
}
.flex .flex {
display:contents;
}
div {
flex: 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="flex">
<div>
1
</div>
<div class="flex">
<div>
2
</div>
<div class="flex active">
<div>
3
</div>
</div>
</div>
</div>
<button>add</button>
Upvotes: 1
Reputation: 8847
You can play with css grid columns:
#a {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
#a {
background-color: #f77;
}
#b {
background-color: #7f7;
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-column: 2 span;
}
#c {
background-color: #77f;
}
<div id="a">
<div class="first">
1
</div>
<div id="b">
<div>
2
</div>
<div id="c">
<div>
3
</div>
</div>
</div>
</div>
Upvotes: 0