This is a solution to the Browser extensions manager UI challenge on Frontend Mentor. Frontend Mentor challenges help you improve your coding skills by building realistic projects.
Note: Delete this note and update the table of contents based on what sections you keep.
Users should be able to:
- Toggle extensions between active and inactive states
- Filter active and inactive extensions
- Remove extensions from the list
- Select their color theme
- View the optimal layout for the interface depending on their device's screen size
- See hover and focus states for all interactive elements on the page
| Inactive page (Dark mode) |
|---|
![]() |
| All page (Light mode) |
|---|
![]() |
- Solution URL: GitHub page
- Live Site URL: Live page
I buil the mobile page first, before moving to bigger screen sizes, and finally, adding the js.
- Semantic HTML5 markup
- CSS custom properties
- Flexbox
- CSS Grid
- 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:
/* Learnt to create a toggle button using a checkbox input */
.toggle-button {
background-color: var(--toggle-clr);
width: 36px;
height: 20px;
border-radius: 10px;
cursor: pointer;
position: relative;
transition: 0.3s;
}
.toggle-button:focus {
outline: 2px solid var(--active-toggle);
outline-offset: 0.18rem;
}
.toggle-button::before {
position: absolute;
content: '';
background-color: var(--primary);
width: 16px;
height: 18px;
border-radius: 50%;
top: 1px;
left: 1px;
transition: 0.3s;
}
input:checked + .toggle-button {
background: var(--active-toggle);
}
input:checked + .toggle-button::before {
transform: translateX(18px);
}
input {
display: none;
}// Learn to use global event listeners for html elements added dynamically
function addGlobalEventListener(type, selector, callback){
document.addEventListener(type, e => {
if(e.target.matches(selector)){
callback(e)
}
})
}Learn to use grid better and become more skilled in css.
- Event delegation by Web Dev Simplified - Helped me understand why html added dynamically does not respond to the regular event listener format
- Frontend Mentor - @InfamousTheif

