Responisve Website
Responisve Website by Wes Bos
HTML
<link rel="stylesheet" href="https://cdn.rawgit.com/wesbos/css-grid/master/assets/style.css">
<div class="wrapper">
<div class="top">
<header class="hero">
<h1>Terry's Taco Joint</h1>
<p>Pretty Good Tacos!</p>
</header>
<div class="cta cta1">
<p class="price">$1.99</p>
<p>Tacos</p>
</div>
<div class="cta cta2">
<p class="price">$3.99</p>
<p>Kombucha</p>
</div>
</div>
<nav class="menu">
<button aria-expanded="false" aria-controls="menu-list">
<span class="open">☰</span>
<span class="close">×</span>
Menu
</button>
<ul id="menu-list">
<li>
<a href="">Tacos</a>
</li>
<li>
<a href="">Beers</a>
</li>
<li>
<a href="">Wines</a>
</li>
<li>
<a href="">Desserts</a>
</li>
<li>
<a href="">Reservations</a>
</li>
</ul>
</nav>
<section class="features">
<div class="feature">
<span class="icon">🌮</span>
<h3>Tacos</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.</p>
</div>
<div class="feature">
<span class="icon">🍺</span>
<h3>Beer</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.</p>
</div>
<div class="feature">
<span class="icon">🍷</span>
<h3>Wine</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.</p>
</div>
<div class="feature">
<span class="icon">🎵</span>
<h3>Music</h3>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Animi, assumenda.</p>
</div>
</section>
<section class="about">
<img src="images/queso-taco.png" alt="Yummy Taco" class="about__mockup">
<div class="about__details">
<h2>Featured Taco</h2>
<p>Slim Profile, easy to hold and loaded with cheese.</p>
<p>This is the one you have been waiting for</p>
<button>Learn More...
CSS
body {
font-size: 15px;
}
button {
background: #ffc600;
border: 0;
padding: 10px 20px;
}
img {
max-width: 100%;
}
/* .wrapper */
.wrapper {
display: grid;
grid-gap: 20px;
}
.top {
display: grid;
grid-gap: 20px;
grid-template-areas:
"hero hero cta1"
"hero hero cta2"
}
.hero {
grid-area: hero;
min-height: 400px;
background: white url(images/taco.jpg);
background-size: cover;
background-position: bottom right;
padding: 50px;
display: flex;
flex-direction: column;
align-items: start;
justify-content: center;
}
.hero > * {
background: var(--yellow);
padding: 5px;
}
.cta {
background: var(--yellow);
display: grid;
align-items: center;
justify-items: center;
align-content: center;
}
.cta p {
margin: 0;
}
.cta1 {
grid-area: cta1;
}
.cta2 {
grid-area: cta2;
}
.price {
font-size: 60px;
font-weight: 300;
}
/* Navigation */
.menu ul {
display: grid;
grid-gap: 10px;
padding: 0;
list-style: none;
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
}
.menu a {
background: var(--yellow);
display: block;
text-decoration: none;
padding: 10px;
text-align: center;
color: var(--black);
text-transform: uppercase;
font-size: 20px;
}
[aria-controls="menu-list"] {
display: none;
}
/* Features! */
.features {
display: grid;
grid-gap: 20px;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
.feature {
background: white;
padding: 10px;
border: 1px solid white;
text-align: center;
box-shadow: 0 0 4px rgba(0,0,0,0.1);
}
.feature .icon {
font-size: 50px;
}
.feature p {
color: rgba(0,0,0,0.5);
}
/* About Section */
.about {
background: white;
padding:50px;
display: grid;
grid-template-columns: 400px 1fr;
align-items: center;
}
/* Gallery! */
.gallery {
display: grid;
grid-gap: 20px;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
.gallery img {
width: 100%;
}
.gallery h2 {
grid-column: 1 / -1;
...
Babel + JSX
const navButton = document.querySelector('button[aria-expanded]');
function toggleNav({ target }) {
const expanded = target.getAttribute('aria-expanded') === 'true' || false;
navButton.setAttribute('aria-expanded', !expanded);
}
navButton.addEventListener('click', toggleNav);