Web
Band Website Redesign
A homepage redesign created for a fictional music group with bold visuals and clear navigation.
Use the category buttons to have a LOL moment.
Web
A homepage redesign created for a fictional music group with bold visuals and clear navigation.
Web
A clean and welcoming landing page concept for a neighborhood bakery.
Design
A set of promotional posters designed for a campus art festival.
Design
A visual identity package featuring a logo, colors, and typography choices.
Photo
A photography series capturing subjects in locations that help tell their story.
Photo
A collection of candid urban photos focused on color, light, and timing.
Video
A promotional still and summary for a short nonfiction video project.
Video
A short-form video ad designed for a scrolling social media audience.
Art
An inspirational photo that showcases the need for animals.
Art
A transparent photo that showcases how satisfying powdered donuts are.
This page is built as a filterable project gallery. The buttons at the top let the user choose which type of work to display.
<head> contains setup information, CSS links, and JavaScript links.<body> contains the visible content of the page.
The cards are placed inside a CSS Grid container. The grid uses
repeat(auto-fit, minmax(240px, 1fr)), which allows the browser
to automatically decide how many columns can fit while keeping each card at
least 240 pixels wide.
Each button has a data-filter attribute that stores a category name like
web, design, photo, or video.
Each project card has the class card plus a category class like
web or photo.
When a button is clicked, JavaScript reads the button’s data-filter value
and then shows only the cards that match that category.
Classes can be reused on multiple elements. Since more than one card can belong to the same category, classes make filtering easier.
The data-filter attribute stores extra information directly in the HTML.
JavaScript can read that information when the user clicks a button.
<button><article>classdata-filtersectionimgwrapper - Main layout container for the page<header> - Contains the page heading and intro textfilters - Wraps the filter buttonsfilter-btn - Applied to every filter buttonactive - Marks the currently selected filter buttoncard-grid - Grid container that holds all of the project cardscard - Applied to every project cardweb, design, photo, video - Category classes used for filteringcard-text - Wraps the text content inside each cardcategory-label - Styles the category label inside each card