Design comparison
Solution retrospective
Hello Front End Mentor~ This is my first attempt of this problem This problem is really challenging, so i have to learn many new things :) In this problem I learned :
- Dark Mode using context
- State Management
- Drag and Drop
- Local Storage
I'm going to implement Animation in the next submission.
If you have any advice for me about code optimization or the references to learning what I want to implement is really welcome
Cheers
Community feedback
- @pikapikamartPosted about 3 years ago
Hey, great work on this one. The layout looks good in general, the functionality works though the
alert
popping up could be removed or just be replaced by anaria-live
element, stating what the user had added.Some other suggestions would be:
- Using local storage for the todo items would be really great, if you want to add of course:>
- Always have an
main
element that will wrap the whole main content of the webpage. For this one, theapp
selector could have usedmain
instead ofdiv
. - The
img
that you use for the top part background could have only been used incss
you don't really need to create animg
for them, but since you made it this way, usealt=""
andaria-hidden="true"
on them, since those images are just for decoration. - Do not use the word
T O D O
. If you encounter like this, do not explicitly type that in thehtml
, what will happen is that, screen reader will read it by letter and not word, just usetodo
and usetext-transform: uppercase
to make capital. - The colormode toggler should have been using
input type="radio"
, since it is a selection of color mode right, radio buttons are intended for those. Along withfieldset
andlegend
to describe what the group of radio button does. - The
input
lackslabel
on it to describe what it does, or you could make use ofaria-label
on it. - The circle image on the left side of the
input
needs to havealt=""
andaria-hidden="true"
since it is just decoration. Also theimg
used on the todo item toggle. - Avoid using
height: 100vh
on an element, because this will only use the remaining viewport's height. Inspect your layout in dev tools at the bottom, you will notice that if you hover on thebody
tag, it does not capture the whole layout. Instead, usemin-height: 100vh
on it, this takes full viewports height and will expand if it needs to. - Each todo item should have been using
li
element since those are "list" of todo items. - The toggle on the left side of the todo item should have been using
input type="checkbox"
since that is a checkbox if a user have completed it. The text on the right side of it should have been usinglabel
, which is connected to theinput
on the left side. Usingbutton
alone will not give any extra information to the user about what will happen if they toggle it. - The
button
for the remove todo item should havearia-label="remove todo item {name of the todo item}"
, this way user would know what thisbutton
does, theimg
inside as well should have been usingalt=""
. - Those selection below should have been inside a
ul
element ,since those are "list " of selections or you could have usedinput type="radio"
on those since like I said, they are selections. Usingp
tag alone is not really accessible, if an component is interactive, use interactive element on them. - The clear completed
button
should have an extraaria-live
element, to which will say that the completed todo items have been removed. Also, usebutton
on it, notp
tag.
Aside from those, great job on this still.
Marked as helpful0
Please log in to post a comment
Log in with GitHubJoin our Discord community
Join thousands of Frontend Mentor community members taking the challenges, sharing resources, helping each other, and chatting about all things front-end!
Join our Discord