True mastery of Cascading Style Sheets cannot be achieved by reading syntax alone — you must build real, interactive web components. This laboratory session provides four production-ready, hands-on practice projects complete with clean semantic HTML5 markup, responsive modern CSS, and line-by-line architectural breakdowns.
A production navbar featuring brand logo, flexbox link alignment, hover transition underline indicators, and call-to-action button:
/* HTML Markup:
<nav class="navbar">
<a href="#" class="navbar__brand">Veewom<span>.css</span></a>
<ul class="navbar__menu">
<li><a href="#" class="navbar__link active">Home</a></li>
<li><a href="#" class="navbar__link">Tutorials</a></li>
<li><a href="#" class="navbar__link">Projects</a></li>
</ul>
<button class="btn btn--cta">Get Started</button>
</nav>
*/
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
padding: 16px 32px;
background-color: #0f172a;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.navbar__brand {
font-size: 22px;
font-weight: 800;
color: #ffffff;
text-decoration: none;
}
.navbar__brand span {
color: #d22b2b;
}
.navbar__menu {
display: flex;
gap: 28px;
list-style: none;
margin: 0;
padding: 0;
}
.navbar__link {
color: #cbd5e1;
text-decoration: none;
font-size: 15px;
font-weight: 500;
position: relative;
transition: color 0.2s ease;
}
.navbar__link:hover, .navbar__link.active {
color: #ffffff;
}
/* Animated hover underline */
.navbar__link::after {
content: "";
position: absolute;
bottom: -4px;
left: 0;
width: 0%;
height: 2px;
background-color: #d22b2b;
transition: width 0.25s ease;
}
.navbar__link:hover::after, .navbar__link.active::after {
width: 100%;
}
.btn--cta {
background-color: #d22b2b;
color: #ffffff;
border: none;
padding: 10px 20px;
border-radius: 6px;
font-weight: 600;
cursor: pointer;
transition: background-color 0.2s ease, transform 0.15s ease;
}
.btn--cta:hover {
background-color: #b91c1c;
transform: translateY(-2px);
}
A polished e-commerce card with sales badge, aspect ratio image containment, and multi-layered elevation box shadows:
.product-card {
position: relative;
max-width: 320px;
background: #ffffff;
border: 1px solid #e2e8f0;
border-radius: 12px;
overflow: hidden;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
transition: transform 0.25s ease, box-shadow 0.25s ease;
}
.product-card:hover {
transform: translateY(-6px);
box-shadow: 0 12px 20px -3px rgba(0, 0, 0, 0.12);
}
.product-card__badge {
position: absolute;
top: 12px;
left: 12px;
background-color: #d22b2b;
color: #ffffff;
font-size: 11px;
font-weight: 800;
padding: 4px 8px;
border-radius: 4px;
text-transform: uppercase;
}
.product-card__image {
width: 100%;
aspect-ratio: 4 / 3;
object-fit: cover;
display: block;
}
.product-card__body {
padding: 20px;
}
.product-card__title {
font-size: 18px;
font-weight: 700;
color: #0f172a;
margin: 0 0 8px;
}
.product-card__price {
font-size: 20px;
font-weight: 800;
color: #d22b2b;
}
A classic SaaS pricing grid highlighting the featured middle tier using Flexbox and Subgrid:
.pricing-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 24px;
align-items: center;
max-width: 1100px;
margin: 40px auto;
}
.pricing-card {
background: #ffffff;
border: 1px solid #e2e8f0;
border-radius: 10px;
padding: 32px 24px;
text-align: center;
}
/* Featured Tier Highlight */
.pricing-card--popular {
border: 2px solid #d22b2b;
transform: scale(1.05);
box-shadow: 0 20px 25px -5px rgba(210, 43, 43, 0.15);
position: relative;
}
Boost your CSS and front-end development proficiency by exploring these closely connected topics:
Understand margins, borders, padding, content and the universal box-sizing fix.
Master 1D alignment, justify-content, align-items, flex-wrap and responsive flow.
Build powerful two-dimensional grid layouts with template areas and fr units.
Eliminate styling conflicts and master selector weights from 0,0,0,1 to !important.