Design comparison
SolutionDesign
Solution retrospective
I found the css super difficult to handle. Still not perfectly where I want it but the functionality and looks are there.
Community feedback
- @jakubjirousPosted almost 2 years ago
Hi Andrew,
I have reviewed your code for this cool calculator app and here is my constructive feedback:
HTML:
- You have a typo in the class name
coantainer
. It should becontainer
. - You are using an obsolete way of defining the form name attribute. Instead of
name
, you should useid
and access the form usingdocument.getElementById("formId")
.
CSS:
- Consider using more meaningful class names to make it easier to understand what each element represents.
JavaScript:
- You can use event delegation to avoid having to add event listeners to each button individually.
- Instead of concatenating the input value, you can use the button value property to directly access the button value and append it to the input.
- At the end, there is a little bug, when you click
equal
button directly, I am gettingundefined
on the calc screen
Keep up the great work and happy coding!
Marked as helpful1@Heinz157Posted almost 2 years ago@jakubjirous Thank you! Very useful feedback, I will fix those things.
0 - You have a typo in the class name
- @0xabdulkhaliqPosted almost 2 years ago
Hello there 👋. Congratulations on successfully completing the challenge! 🎉
- I have other recommendations regarding your code that I believe will be of great interest to you.
HTML 🏷️:
- This solution generates accessibility error reports due to
non-semantic
markup, which lack landmark for a webpage
- So fix it by replacing the
<div class="container">
element with the semantic element<main>
along with<div class="attribution">
into a<footer>
in yourindex.html
file to improve accessibility and organization of your page.
- What is meant by landmark ?, They used to define major sections of your page instead of relying on generic elements like
<div>
or<span>
- They convey the structure of your page. For example, the
<main>
element should include all content directly related to the page's main idea, so there should only be one per page
HEADINGS ⚠️:
- And, this solution has also generated accessibility error report due to lack of level-one heading
<h1>
- Every site must want at least one
h1
element identifying and describing the main content of the page.
- An
h1
heading provides an important navigation point for users of assistive technologies, allowing them to easily find the main content of the page.
- So we want to add a level-one heading to improve accessibility by reading aloud the heading by screen readers, you can achieve this by adding a
sr-only
class to hide it from visual users (it will be useful for visually impaired users)
LABELS 🔖:
input
elements wants alabel
associated with it
- A
<label>
is used to create a caption for a form control. The<label>
can be associated with a form control either implicitly by placing the control element inside the label element, or explicitly by using the for attribute
- Effective form
labels
are required to make forms accessible. The purpose ofform
elements such ascheckboxes
,radio
buttons,input
fields, etc, is often apparent to sighted users
- Even if the
form
element is not programmatically labeled. Screen readers users require useful formlabels
to identifyform
fields.
I hope you find this helpful 😄 Above all, the solution you submitted is great !
Happy coding!
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