This is a solution to the Age calculator app challenge on Frontend Mentor. Frontend Mentor challenges help you improve your coding skills by building realistic projects.
Users should be able to:
- ✅ View an age in years, months, and days after submitting a valid date through the form
- ✅ Receive validation errors if:
- Any field is empty when the form is submitted
- The day number is not between 1-31
- The month number is not between 1-12
- The year is in the future
- The date is invalid e.g. 31/04/1991 (there are 30 days in April)
- ✅ 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
- ✅ Bonus: See the age numbers animate to their final number when the form is submitted
I decided to use Vue for this project to show working knowledge and my coding style. I also wanted to improve my starting point with this stack and examine my own habits.
My steps
- Identify wrappers needed (flex containers)
- Identify columns and rows needed
- Identify possible reusable components
- Add in styles to get rough look in place
- Work on components and events emitted
- Work on logic and unit tests needed
- Polish styles and add finishing touches to match design
I find myself adding tests as I go, but what I would do next time is do Test-Driven Development Creating tests after creating the logic catches things later rather than early on.
Trying to change font by updating variables does not work
element {
--fs: var(--fs-700);
font-size: var(--fs);
@include response-to(large) {
--fs: var(--fs-800);
}
}
Use css variables and formatting to easily identify dynamic and referenced properties vs fixed properties.
.ago-value {
--color: var(--clr-primary);
--transform: unset;
--transition: color linear 0.5s;
color: var(--color);
transition: var(--transition);
transform: var(--transform);
display: inline-block;
&--animate {
--color: var(--clr-warn);
--transition: all linear 0.5s;
--transform: rotate(360deg);
}
}
- Improve tests and reusable components.
- Add dark and light themes
- Website - Hoang Nguyen
- Frontend Mentor - @mmxcrono