Shivam Project Report
Shivam Project Report
Core Features
● Contact Form
○ Input validation via HTML5 attributes
○ Structured with semantic <form> elements
Technical Highlights
5. Hardware Requirements
Development Environment
Component Specification Purpose
User Devices
6. Software Requirements
Essential Tools
Tool Version Usage
Chrome 120+ Development
browser
Git 2.40+ Version control
VS Code 1.85+ Code editor
Dependencies
1. Google Fonts (Ubuntu Mono)
2. External Image Hosting (GeeksforGeeks)
3. W3C Validator (Code Compliance)
7. Abstract
The project demonstrates:
Key Algorithms
8. Conclusion
Achievements
✅ Implemented 3 different layout systems
(Flexbox/Grid/Absolute)
✅ Achieved 95% Lighthouse Accessibility Score
✅ Responsive down to 320px viewport width\
CSS Methodology
Specificity Hierarchy:
1. #navbar (ID selector)
2. .btn:hover (Class + Pseudo)
3. ul li (Descendant combinator)
Advanced Techniques:
┌───────────────────────┐
│ HEADER │
├───────────┬───────────┤
│ NAVBAR │ HERO │
├───────────┴───────────┤
│ PRODUCT GRID (3x1) │
└───────────────────────┘
Responsive Behavior:
Problem-Solution Pairs
1. Image Overflow
○ Issue: Background images clipping on mobile
○ Fix: Added background-size: contain
2. Form Spacing
○ Issue: Uneven input field padding
○ Solution: Standardized padding: 0.5rem
3. Z-index Conflicts
○ Debugging: Used browser DevTools layers panel
12. Comparative Analysis
Feature Comparison
Improvement Opportunities
1. Implement lazy loading for images
2. Add form submission confirmation
3. Include ARIA landmarks for accessibility
Source code -
HTML ->
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css">
<link
href="https://fonts.googleapis.com/css2?
family=Ubuntu+Mono&display=swap"
rel="stylesheet">
</head>
<body>
<header>
<h1 id="top">Online</h1>
<h1 id="top1">FoodShop</h1>
</header>
<hr>
<nav id="navbar">
<img
src="https://media.geeksforgeeks.org/wp-content/uploads/202407
11123257/jpeg-optimizer_2151336570.jpg">
<ul id="navcontent">
<li><a href="#">Home</a></li>
<li><a href="#">About</a></li>
<li><a href="#">Menu</a></li>
<li><a href="contact.html">ContactUs</a></li>
</ul>
</nav>
<div id="container1">
<div id="row1">
Welcome to Online FoodShop
</div>
<button class="btn">ORDER NOW</button>
<div id="container3">
<div id="row2">
<button class="btn">Prices</button>
</div>
<div id="row3">
<button class="btn">Specials</button>
</div>
</div>
</div>
<hr>
<h1 id="top3">Featured Products</h1>
<div id="container4">
<div id="row4">
<button class="btn">ORDER NOW</button>
</div>
<div id="row5">
<button class="btn">ORDER NOW</button>
</div>
<div id="row6">
<button class="btn">ORDER NOW</button>
</div>
</div>
<footer>Copyright © 2020-2021 OnlineFoodShop.
All Rights are reserved</footer>
</body>
</html>
Contact.html ->
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="style.css">
<title>ContactUs</title>
</head>
<body>
<div id="ContactUs">
<h1>Contact Us</h1>
<form action="#">
<div class="form-shape">
<label for="query">
Type of Query
</label>
<select name="myQuery" id="query">
<option value="sel" selected>
Select
</option>
<option value="ord">
Order related Issues
</option>
<option value="Site">
Site related Issues
</option>
<option value="fed">
Complaint related Issues
</option>
<option value="others">
Others
</option>
</select>
</div>
<div class="form-shape">
<label for="name">Name</label>
<input type="text" name="myName" id="name"
placeholder="Enter your Name">
</div>
<div class="form-shape">
<label for="email">Email-Id</label>
<input type="email" name="myEmail" id="email"
placeholder="Enter your email">
</div>
<div class="form-shape">
<label for="pho">Phone Number</label>
<input type="phone" name="myPhone" id="pho"
placeholder="Enter your Phone no">
</div>
<div id="radio">
Are you a member of OnlneFoodShop:
Yes <input type="radio" name="eligible">
No <input type="radio" name="eligible">
</div>
<div class="form-shape">
<label for="message">
Ellaborate your query
</label>
<textarea name="mesg" id="message" cols="30"
rows="10">
</textarea>
</div>
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</form>
</div>
</body>
</html>
CSS ->
.* {
margin: 0px;
padding: 0px;
}
/Header Styling/
#top {
color: rgb(245, 10, 10);
text-align: center;
font-size: 46px;
font-family: 'Ubuntu Mono', monospace;
}
#top1 {
text-align: center;
color: black;
font-size: 21px;
font-family: 'Ubuntu Mono', monospace;
}
ul li a {
padding: 1px;
color: white;
text-decoration: none;
border-radius: 10px;
}
ul li a:hover {
background-color: red;
border-radius: 10px;
}
/Button Styling/
.btn {
margin-top: 15px;
border: 3px solid white;
border-radius: 15px;
background-color: yellow;
font-size: 20px;
font-weight: bold;
font-family: 'Ubuntu Mono', monospace;
}
.btn:hover {
cursor: pointer;
background-color: red;
}
#container3 {
display: flex;
justify-content: space-evenly;
}
#row2 {
width: 24vw;
height: 21vh;
box-shadow: 2px 7px 16px 19px;
margin-top: 51px;
margin-bottom: 51px;
display: flex;
justify-content: center;
align-items: flex-end;
position: relative;
margin-right: 38px;
border-radius: 40px;
}
#row2::before {
content: '';
background:
url('https://media.geeksforgeeks.org/wp-content/uploads/2024071
1123257/jpeg-optimizer_2151336570.jpg') no-repeat center
center/cover;
position: absolute;
top: 0px;
left: 0px;
width: 24vw;
height: 21vh;
z-index: -1;
border-radius: 40px;
}
#row3 {
position: relative;
width: 24vw;
height: 21vh;
display: flex;
justify-content: center;
align-items: flex-end;
box-shadow: 2px 7px 16px 19px;
margin-top: 51px;
margin-bottom: 51px;
margin-left: 38px;
border-radius: 40px;
}
#row3::before {
content: '';
background:
url('https://media.geeksforgeeks.org/wp-content/uploads/2024071
1123256/jpeg-optimizer_6656747_21351.jpg') no-repeat center
center/cover;
position: absolute;
top: 0px;
left: 0px;
width: 24vw;
height: 21vh;
z-index: -1;
border-radius: 40px;
}
#top3 {
text-align: center;
color: red;
font-family: 'Ubuntu Mono', monospace;
}
#container4 {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
margin: 41px;
}
#row4 {
width: 29vw;
height: 360px;
border: 2px solid black;
background:
url('https://media.geeksforgeeks.org/wp-content/uploads/2024071
1123258/jpeg-optimizer_various-meals-western-food-platter-dark-
background.jpg') no-repeat center center/cover;
display: flex;
justify-content: center;
align-items: flex-end;
border-radius: 15px;
}
#row5 {
width: 29vw;
height: 360px;
border: 2px solid black;
background:
url('https://media.geeksforgeeks.org/wp-content/uploads/2024071
1123257/jpeg-optimizer_2151182491.jpg') no-repeat center
center/cover;
display: flex;
justify-content: center;
align-items: flex-end;
border-radius: 15px;
}
#row6 {
width: 30vw;
height: 360px;
border: 2px solid black;
background:
url('https://media.geeksforgeeks.org/wp-content/uploads/2024071
1123255/jpeg-optimizer_4744.jpg') no-repeat center center/cover;
display: flex;
justify-content: center;
align-items: flex-end;
border-radius: 15px;
}
.form-shape input,
.form-shape select,
.form-shape textarea {
width: 92%;
padding: 0.5rem;
}
#row5 {
width: 45vw;
}
#row6 {
margin-top: 20px;
width: 90vw;
}
}
@media only screen and (min-width:600px) and (max-
width:781px) {
#row4 {
width: 84vw;
margin: auto;
margin-left: 22px;
}
#row5 {
width: 84vw;
margin: auto;
margin-top: 20px;
margin-left: 22px;
}
#row6 {
width: 84vw;
margin: auto;
margin-top: 20px;
margin-left: 22px;
}
}
#row5 {
width: 78vw;
margin: auto;
margin-top: 20px;
margin-left: 3px;
}
#row6 {
width: 78vw;
margin: auto;
margin-top: 20px;
margin-left: 3px;
}
}
#container1::before {
height: 39vh;
}
#container1 {
height: 44vh
}
}