Tip Calculator App built with HTML, CSS, JavaScript
Design comparison
Solution retrospective
Overall, I’m pleased with how the project turned out, though there’s always room for improvement.
I’m particularly happy with the UI/UX refactoring I implemented, which enhanced both the flow and usability of the app while remaining true to its original concept.
As I continue to deepen my understanding of JavaScript, my goal is to make the code even more readable and DRY (Don’t Repeat Yourself).
I’m also excited to explore motion design techniques in the future, which could make the custom tip input field a more engaging user experience.
What challenges did you encounter, and how did you overcome them?Balancing simplicity and readability with functionality in my JavaScript logic.
What specific areas of your project would you like help with?I am grateful for any helpful tips! 🙏
Community feedback
- @Anubliss-0Posted 2 months ago
Fantastic job finishing the project, it looks great! I took a look at your code and its very well organized and clear to read.
There really isn't much for me to say in terms of suggested improvements, but if I may offer some feedback I would look into the use of aria-labels and further semantics for a11y friendly design.
The aria-label you have is a great touch, however good practice for labels is to try and make them as concise as possible seeing as screen readers will read every single label. A good example that could help here is to describe the what the input is and whats its purpose is, rather than what the user does with it. For example...
aria-label="Custom tip percentage"
As for adding further a11y friendly touches to your project you could consider...
- Adding "roles" to your buttons to ensure the semantic meaning is clear
<button class="tip-btn" data-percent="0.10" aria-label="10 percent tip">10%</button>
-
Using
<fieldset>
to group related inputs together. -
The invalid input warnings are currently set to
aria-hidden
These should be visible to screen readers and with the use of aria-live can actually provide important information to users who rely on a11y tools to access the web.
Instead of hiding them, consider using aria-live, the message is empty by default and updated with JS, so when that change happens aria-live will inform the user that the error has occurred.
<span class="bill-error-msg" id="bill-error-msg" aria-live="assertive" ></span>
Please feel free to reach out if you have any questions regarding a11y! Otherwise congratulations on completing the challenge.
Marked as helpful1@codercreativePosted 2 months agoThank you so much @Anubliss-0 for your very helpful feedback!! I have added all your suggestions to my code and resubmitted the project.
0
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