This is a solution to the Todo app challenge on Frontend Mentor.
Users should be able to:
- View the optimal layout for the app depending on their device's screen size
- See hover states for all interactive elements on the page
- Add new todos to the list
- Mark todos as complete
- Delete todos from the list
- Filter by all/active/complete todos
- Clear all completed todos
- Toggle light and dark mode
- Drag and drop to reorder items on the list
-
Solution URL: https://www.frontendmentor.io/solutions/responsive-todo-app-using-sass-and-modular-javascript
-
Live Site URL: https://todo-app-tasks-manager.netlify.app/
- Semantic HTML5 markup
- CSS custom properties
- Flexbox
- CSS Grid
- SASS
- JavaScript
Adding border with gradient and radius:
.task:hover .check-box {
border-radius: 50px;
border: 2px solid transparent;
background: var(--bg-gradient) border-box;
-webkit-mask: linear-gradient(var(--Very-Light-Gray) 0 0) padding-box, linear-gradient(
var(--Very-Light-Gray) 0 0
);
-webkit-mask-composite: xor;
mask-composite: exclude;
}
Adjust background-image to stretch but not shrink:
.app {
background-repeat: no-repeat;
background-size: 100% 30rem;
}
@media (max-width: 1440px) {
.app {
background-size: auto 30rem;
background-position-x: center;
}
}
Swap items in an array using array destructuring
[this.tasksArr[draggedElIndex], this.tasksArr[targetElIndex]] = [
this.tasksArr[targetElIndex],
this.tasksArr[draggedElIndex],
];
- I guess the CSS implementation of dark mode need to be refactored.
- The application should have a reset button to remove data in local storage.
- DEV Community - This helped me figure out how to implement the gradient circular border.
- Frontend Mentor - @nabdelfattah
- GitHub - nabdelfattah
- Linked-in - Nadda W. Abdelfattah