This is a solution to the Bookmark landing page challenge on Frontend Mentor. Frontend Mentor challenges help you improve your coding skills by building realistic projects.
Users should be able to:
- View the optimal layout for the site depending on their device's screen size
- See hover states for all interactive elements on the page
- Receive an error message when the newsletter form is submitted if:
- The input field is empty
- The email address is not formatted correctly
Desktop View
Mobile View
- Live Site URL: Bookmark Landing Page
- Semantic HTML5 markup
- CSS custom properties
- Flexbox
- CSS Grid
- CSS Positioning
- Mobile-first workflow
Use this section to recap over some of your major learnings while working through this project. Writing these out and providing code samples of areas you want to highlight is a great way to reinforce your own knowledge.
To see how you can add code snippets, see below:
<button class="cta" data-type="inverted">Get it on Firefox</button>
<button class="tab-btn active" data-id="tab-1">Simple Bookmarking</button>
<div class="content active" id="tab-1">
<div class="content-container">
<div class="tab-img">
<img src="./images/illustration-features-tab-1.svg" alt="illustration" />
</div>
<div class="tab-text">
<h1 class="primary-heading">Bookmark in one click</h1>
<p>
Organize your bookmarks however you like. Our simple drag-and-drop
interface gives you complete control over how you manage your favourite
sites.
</p>
<a class="cta hide" href="#">More Info</a>
</div>
</div>
</div>
<hr class="hr" />
--clr-neutral-100: hsl(0, 0%, 100%);
--clr-neutral-200: hsl(0, 0%, 97%);
.container {
padding-block: var(--size-700);
margin: var(--size-450);
}
.logo .circle-fill {
fill: var(--clr-primary-600);
}
.logo .path-fill {
fill: var(--clr-neutral-100);
}
.hero__image::before {
width: 86%;
border-top-left-radius: 100vmax;
border-bottom-left-radius: 100vmax;
bottom: -20px;
left: 20%;
}
.cta[data-type="inverted"]:hover {
background-color: var(--clr-neutral-100);
color: var(--clr-neutral-600);
border: 1px solid var(--clr-neutral-600);
box-shadow: none;
}
.question:last-of-type {
margin-bottom: var(--size-700);
}
.card-one {
align-self: flex-start;
}
.card-two {
align-self: center;
}
.card-three {
align-self: flex-end;
}
const close = () => {
navList.style.top = "-100%";
openMenu.style.visibility = "visible";
logoText.style.color = "hsl(229, 31%, 21%)";
logoCircle.style.color = "hsl(231, 69%, 60%)";
};
- Form Submission error messages
- Nesting of HTML 5 Elements
- Responsive Web development
- CSS Resets - This helped me to "reset" or "normalize" the default styles applied by web browsers to HTML elements. It created a consistent base styling across all browsers and devices, which can made it easier to build a custom design without being affected by default browser styles.I really liked this pattern and will use it going forward.
- CSS Flex & Grid - This is an amazing book which helped me finally understand build components and layouts with CSS Flexboc and Grid. I'd recommend it to anyone still learning this concept.
- CSS Variables and CSS Concepts - This is channel helped me to understand css variables and other css concepts. It helped me to fall in love with CSS.
- Website - Patrick Juawo
- Frontend Mentor - @yourusername
- Twitter - @pjuawo
- Facebook - @pjuawo