CSS Only Dynamic Column Flexbox Example
In this post I am going to share css flexbox example. Here you’ll learn how to use flixbox to display parallel column, below example you can click on + button to dynamically add column see flex design adjust column dynamically.
HTML
<div class="background"> <div class="container" data-container> <div class="card" data-card style="background-image: url('https://source.unsplash.com/random/1')">1</div> <div class="card" style="background-image: url('https://source.unsplash.com/random/2')">2</div> <div class="card" style="background-image: url('https://source.unsplash.com/random/3')">3</div> <div class="card" style="background-image: url('https://source.unsplash.com/random/4')">4</div> <div class="card" style="background-image: url('https://source.unsplash.com/random/5')">5</div> <div class="card" style="background-image: url('https://source.unsplash.com/random/6')">6</div> </div> <div class="buttons"> <button data-remove>–</button> <button data-add>+</button> </div> </div> |
CSS
.container { background: #FF678C; box-sizing: border-box; display: flex; flex-flow: column wrap; height: 80vh; margin-bottom: 5vh; text-align: center; text-transform: uppercase; width: 90vw; } .card { align-items: center; background: white; background-size: cover; border: 5px solid white; box-sizing: border-box; color: white; display: flex; flex-grow: 0; font-family: sans-serif; font-size: 30px; font-weight: bold; height: 50%; justify-content: center; outline: 5px solid white; text-shadow: 0 0 5px black; &:nth-child(6n - 5) { height: 25%; } &:nth-child(6n-4) { height: 75%; } &:nth-child(6n-3) { height: 50%; } &:nth-child(6n-2) { height: 50%; } &:nth-child(6n-1) { height: 66.666%; } &:nth-child(6n) { height: 33.333%; } } body { margin: 0; } .background { align-items: center; background: #FF678C; display: flex; flex-direction: column; height: 100vh; justify-content: center; width: 100vw; } button { background: white; border: 2px solid transparent; border-radius: 0; color: #FF648A; cursor: pointer; font-size: 24px; font-weight: bold; padding: 10px 20px; transition: background-color 0.2s ease, border-color 0.2s ease, color 0.2s ease; &:hover { background-color: #FF648A; border: 2px solid white; color: white; } } |
JS
const add = document.querySelector('[data-add]');
const remove = document.querySelector('[data-remove]');
const card = document.querySelector('[data-card]');
const container = document.querySelector('[data-container]');
let number = 7;
add.addEventListener('click', () => {
const addCard = card.cloneNode(true);
const image = `url('https://source.unsplash.com/random/${Math.floor(Math.random() * 100)}')`;
addCard.style.backgroundImage = image;
addCard.innerHTML = number;
container.appendChild(addCard);
number++;
});
remove.addEventListener('click', () => {
if (container.childElementCount > 0) {
container.removeChild(container.lastElementChild);
}
if (number > 1) {
number--;
}
}); |
See live demo and download source code.
DEMO | DOWNLOAD
This awesome script developed by CAWeissen. Visit their official repository for more information and follow for future updates.