Certification projects are done for Responsive Web Design Certification on freeCodeCamp.
In order to receive the certification, I had to complete all the projects listed below (to fulfil the given user stories and pass all the tests). I gave a personal style to each project.
- Survey Form
- Tribute Page
- Technical Documentation Page
- Product Landing Page
- Personal Portfolio Webpage
Objective: Build an app that is functionally similar to https://survey-form.freecodecamp.rocks
User Stories:
- You should have a page title in an
h1
element with anid
oftitle
. - You should have a short explanation in a
p
element with anid
ofdescription
. - You should have a
form
element with anid
ofsurvey-form
. - Inside the form element, you are required to enter your name in an
input
field that has anid
ofname
and atype
oftext
. - Inside the form element, you are required to enter your email in an
input
field that has anid
ofemail
. - If you enter an email that is not formatted correctly, you will see an HTML5 validation error.
- Inside the form, you can enter a number in an
input
field that has anid
ofnumber
. - The number input should not accept non-numbers, either by preventing you from typing them or by showing an HTML5 validation error (depending on your browser).
- If you enter numbers outside the range of the number input, which are defined by the
min
andmax
attributes, you will see an HTML5 validation error. - For the name, email, and number input fields, you can see corresponding
label
elements in the form, that describe the purpose of each field with the following ids:id="name-label"
,id="email-label"
, andid="number-label"
. - For the name, email, and number input fields, you can see placeholder text that gives a description or instructions for each field.
- Inside the form element, you should have a
select
dropdown element with anid
ofdropdown
and at least two options to choose from. - Inside the form element, you can select an option from a group of at least two radio buttons that are grouped using the
name
attribute. - Inside the form element, you can select several fields from a series of checkboxes, each of which must have a
value
attribute. - Inside the form element, you are presented with a
textarea
for additional comments. - Inside the form element, you are presented with a button with
id
ofsubmit
to submit all the inputs.
Objective: Build an app that is functionally similar to https://tribute-page.freecodecamp.rocks
User Stories:
- Your tribute page should have a
main
element with a correspondingid
ofmain
, which contains all other elements - You should see an element with an
id
oftitle
, which contains a string (i.e. text), that describes the subject of the tribute page (e.g. "Dr. Norman Borlaug") - You should see either a
figure
or adiv
element with anid
ofimg-div
- Within the
#img-div
element, you should see animg
element with a correspondingid="image"
- Within the
#img-div
element, you should see an element with a correspondingid="img-caption"
that contains textual content describing the image shown in#img-div
- You should see an element with a corresponding
id="tribute-info"
, which contains textual content describing the subject of the tribute page - You should see an
a
element with a correspondingid="tribute-link"
, which links to an outside site, that contains additional information about the subject of the tribute page. HINT: You must give your element an attribute oftarget
and set it to_blank
in order for your link to open in a new tab - Your
#image
should usemax-width
andheight
properties to resize responsively, relative to the width of its parent element, without exceeding its original size - Your
img
element should be centered within its parent element
Objective: Build an app that is functionally similar to https://technical-documentation-page.freecodecamp.rocks
User Stories:
- You can see a
main
element with a correspondingid="main-doc"
, which contains the page`s main content (technical documentation) - Within the
#main-doc
element, you can see severalsection
elements, each with a class ofmain-section
. There should be a minimum of five - The first element within each
.main-section
should be aheader
element, which contains text that describes the topic of that section. - Each
section
element with the class ofmain-section
should also have anid
that corresponds with the text of each header contained within it. Any spaces should be replaced with underscores (e.g. The section that contains the header "JavaScript and Java" should have a correspondingid="JavaScript_and_Java"
) - The
.main-section
elements should contain at least tenp
elements total (not each) - The
.main-section
elements should contain at least fivecode
elements total (not each) - The
.main-section
elements should contain at least fiveli
items total (not each) - You can see a
nav
element with a correspondingid="navbar"
- The
navbar
element should contain oneheader
element which contains text that describes the topic of the technical documentation - Additionally, the navbar should contain link (
a
) elements with the class ofnav-link
. There should be one for every element with the classmain-section
- The
header
element in the#navbar
must come before any link (a
) elements in the navbar - Each element with the class of
nav-link
should contain text that corresponds to theheader
text within each section (e.g. if you have a "Hello world" section/header, your navbar should have an element which contains the text "Hello world") - When you click on a
navbar
element, the page should navigate to the corresponding section of the#main-doc
element (e.g. If you click on a.nav-link
element that contains the text "Hello world", the page navigates to asection
element with thatid
, and contains the corresponding header) - On regular sized devices (laptops, desktops), the element with
id="navbar"
should be shown on the left side of the screen and should always be visible to the user Your technical documentation should use at least one media query