Flex Layout
HTML
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="flexImg">
<div class="spalte1 open">
<h3 class="openH3">Heading 1</h3>
<div class="flexHeart">
<div class="heart">
<i class="fa-solid fa-heart"></i>
</div>
</div>
</div>
<div class="spalte2">
<h3>Heading 2</h3>
<div class="flexHeart">
<div class="heart">
<i class="fa-solid fa-heart"></i>
</div>
</div>
</div>
<div class="spalte3">
<h3>Heading 3</h3>
<div class="flexHeart">
<div class="heart">
<i class="fa-solid fa-heart"></i>
</div>
</div>
</div>
<div class="spalte4">
<h3>Heading 4</h3>
<div class="flexHeart">
<div class="heart">
<i class="fa-solid fa-heart"></i>
</div>
</div>
</div>
<div class="spalte5">
<h3>Heading 5</h3>
<div class="flexHeart">
<div class="heart">
<i class="fa-solid fa-heart"></i>
</div>
</div>
</div>
</div>
<script src="main.js"></script>
</body>
</html>
CSS
body {
background-color: lightblue;
font-family: sans-serif;
margin: 0;
}
.flexImg {
display: flex;
height: 500px;
margin: 10px;
}
.spalte1 {
background-image: url(fest.jpg);
}
.spalte2 {
background-image: url(fest2.jpg);
}
.spalte3 {
background-image: url(fest3.jpg);
}
.spalte4 {
background-image: url(fest4.jpg);
}
.spalte5 {
background-image: url(fest.jpg);
}
[class^="spalte"] {
width: 12.5%;
margin: 0 5px;
border-radius: 20px;
transition: 1s;
display: flex;
flex-direction: column;
}
.open {
width: 50%;
}
h3 {
height: 420px;
color: white;
letter-spacing: 3px;
transition: 1s;
display: flex;
justify-content: center;
align-items: center;
font-size: 0em;
}
.openH3 {
font-size: 4em;
}
.flexHeart {
height: 80px;
display: flex;
justify-content: center;
align-items: center;
}
.heart {
width: 50px;
height: 50px;
border-radius: 50%;
background: white;
display: flex;
justify-content: center;
align-items: center;
}
.heart i {
font-size: 1.5em;
}
.colorHeart {
color: red;
}
@media(max-width:1000px) {
.flexImg {
flex-direction: column;
height: auto;
}
[class^="spalte"] {
width: 100%;
height: 100px;
margin: 5px 0;
flex-direction: row;
align-items: center;
}
.open {
width: 100%;
height: 350px;
}
h3 {
width: 85%;
height: 100%;
}
.flexHeart {
width: 15%;
height: 100%;
}
}
JS
let allSpalten = document.querySelectorAll("[class^='spalte']");
let allH3 = document.querySelectorAll("h3");
let allHeart = document.querySelectorAll(".heart");
allSpalten.forEach(addOpen);
allHeart.forEach(addColor);
function addColor(elem) {
elem.addEventListener("click", e => {
e.stopPropagation();
elem.children[0].classList.toggle("colorHeart");
});
}
function addOpen(elem) {
elem.addEventListener("click", () => {
allSpalten.forEach(removeOpen);
allH3.forEach(removeH3);
elem.classList.add("open");
elem.children[0].classList.add("openH3");
});
}
function removeOpen(elem) {
elem.classList.remove("open");
}
function removeH3(elem) {
elem.classList.remove("openH3");
}