survey-form
🖥️

Survey Form

Built with

html5
css
javascript

Overview

For the second project of Freecodecamp responsive web design certificate I built a survey form that used a minimalistic style with a soft blue background.. The focus was on applying Visual Designs with a combination of typography, color theory, graphics, animation, page layout, and to deliver my message. To apply accessibility to include people with visual, auditory, mobility, or cognitive disabilities. Then make a responsive web design that works and looks great on all devices.

Goals

I wanted to make a great form that was responsive and worked on all devices. To use both flex and grid for the layout. I used a column for layout for the main content using 1fr for mobile and for tablet and for desktop 1fr 2fr. I also wanted to style form elements and make a custom select to make it visually appealing.

Lessons Learned

I learned that styling a custom select can create problems when using different browsers there are cross browser compatible issues. I had to put in a lot of research into browser extensions for placeholders and hiding the appearance of the select arrow. Some elements can be styled like <form> and simple <input />. However, <input type="search"> is more difficult to style and some elements can't be styled thoroughly using CSS like <input type="file"> . Using custom form styles that rely on JavaScript are problematic for those who don't have JavaScript running.

survey-form-mobile
Fig.1 - Mobile View of App

Process

I followed the freecodecamp user story:

  • User Story #1: I can see a title with id="title" in H1 sized text.
  • User Story #2: I can see a short explanation with id="description" in P sized text.
  • User Story #3: I can see a form with id="survey-form".
  • User Story #4: Inside the form element, I am required to enter my name in a field with id="name".
  • User Story #5: Inside the form element, I am required to enter an email in a field with id="email".
  • User Story #6: If I enter an email that is not formatted correctly, I will see an HTML5 validation error.
  • User Story #7: Inside the form, I can enter a number in a field with id="number".
  • User Story #8: If I enter non-numbers in the number input, I will see an HTML5 validation error.
  • User Story #9: If I enter numbers outside the range of the number input, which are defined by the min and max attributes, I will see an HTML5 validation error.
  • User Story #10: For the name, email, and number input fields inside the form I can see corresponding labels that describe the purpose of each field with the following ids: id="name-label", id="email-label", and id="number-label".
  • User Story #11: For the name, email, and number input fields, I can see placeholder text that gives me a description or instructions for each field.
  • User Story #12: Inside the form element, I can select an option from a dropdown that has a corresponding id="dropdown".
  • User Story #13: Inside the form element, I can select a field from one or more groups of radio buttons. Each group should be grouped using the name attribute.
  • User Story #14: Inside the form element, I can select several fields from a series of checkboxes, each of which must have a value attribute.
  • User Story #15: Inside the form element, I am presented with a textarea at the end for additional comments.
  • User Story #16: Inside the form element, I am presented with a button with id="submit" to submit all my inputs.

Then decided on the best layout of the content and made a design in figma. Finally I scaffolded the HTML and started to style it then finished with adding SEO

survey-form-tablet
Fig.2 - Tablet View of App