CSS Grid Flexbox vs CSS Grid
css-grid practice
by allen Yu
HTML
<link rel="stylesheet" href="https://cdn.rawgit.com/shunnien/css-grid25day/master/assets/style.css">
<h1>Axis Flipping!</h1>
<button onclick="flip()">Flip It</button>
<div class="flipper">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<div class="item">10</div>
</div>
<hr>
<h1>Controls on Right!</h1>
<div class="tracks">
<div class="track">
<h2>The Future (Ft. The R.O.C.)</h2>
<button>⭐</button>
<button>❤️</button>
<button>❌</button>
</div>
<div class="track">
<h2>Bounce With Me (Ft. Jermaine Dupri & Xscape)</h2>
<button>⭐</button>
<button>❤️</button>
<button>❌</button>
</div>
<div class="track">
<h2>Puppy Love (Ft. Jagged Edge & Jermaine Dupri)</h2>
<button>⭐</button>
<button>❤️</button>
<button>❌</button>
</div>
<div class="track">
<h2>You Know Me (Ft. Da Brat & Jermaine Dupri)</h2>
<button>⭐</button>
<button>❤️</button>
<button>❌</button>
</div>
<div class="track">
<h2>The Dog in Me</h2>
<button>⭐</button>
<button>❤️</button>
<button>❌</button>
</div>
<div class="track">
<h2>Bow Wow (That's My Name) (Ft. Snoop Dogg)</h2>
<button>⭐</button>
<button>❤️</button>
<button>❌</button>
</div>
</div>
<style>
</style>
<hr>
<h1>Flex on Item!</h1>
<!-- The Longer Item in the middle -->
<div class="controls">
<button>⏯️</button>
<button>🐢</button>
<button>🐰</button>
<div class="scrubber"></div>
<button>💬</button>
<button>🔽</button>
</div>
<hr>
<h1>Perfectly Centered!</h1>
<!-- Perfectly Centered Multiple Elements -->
<div class="hero">
<h2>Something Big Is Coming</h2>
<p>Get Ready...</p>
</div>
<hr>
<h1>Self Control!</h1>
<!-- Self Contol on box Axis -->
<div class="corners">
<div class="corner item">1</div>
<div...
CSS
/* Axis Flipping! */
.flipper {
display: grid;
grid-gap: 10px;
grid-template-columns: repeat(auto-fit, minmax(50px, 1fr));
}
.flipper.flip {
grid-template-columns: 1fr;
}
/* Controls on Right! */
.track {
background: white;
padding: 10px;
border-bottom: 1px solid rgba(0, 0, 0, 0.1);
display: grid;
grid-template-columns: 1fr;
grid-auto-flow: column;
}
/* Flex on Item! */
.controls {
margin: 200px 0;
display: grid;
grid-template-columns: auto auto auto 1fr auto auto;
/* display:flex; */
align-items: center;
}
.scrubber {
background: #BADA55;
height: 10px;
min-width: 100px;
border-radius: 10px;
/* flex: 1; */
}
/* Perfectly Centered! */
.hero {
height: 200px;
background: rgba(255, 255, 255, 0.2);
/* display: grid;
align-content: center;
justify-items: center; */
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
}
/* Self Control! */
.corners {
display: grid;
height: 200px;
width: 200px;
border: 10px solid var(--yellow);
grid-template: 1fr 1fr/1fr 1fr;
align-items: end;
justify-items: end;
}
.corner:nth-child(1),
.corner:nth-child(2) {
align-self: start;
}
.corner:nth-child(1),
.corner:nth-child(3) {
justify-self: start;
}
/* Stacked Layout! */
.stacked {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
}
.stacked>* {
width: 30%;
margin-bottom: 20px;
}
/* Unknown Content Size! */
.known {
margin: 100px 0;
display: grid;
grid-template-columns: repeat(5, auto);
grid-gap: 20px;
justify-content: center;
}
/* Unknown Number of Items! */
.unknown {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(50px, 1fr));
grid-gap: 20px;
}
/* Variable Widths on Each Row! */
.flex-container {
display: flex;
flex-wrap: wrap;
border: 1px solid black;
}
.flex-container>* {
margin: 10px;
flex: 1;
}
JavaScript
function flip(e) {
const flipper = document.querySelector('.flipper');
flipper.classList.toggle('flip');
}
/* Unknown Number of Items! */
function addItem() {
const unknown = document.querySelector('.unknown');
unknown.innerHTML += `<div class="item">${unknown.childElementCount}</div>`;
}