250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- react
- effect
- jQuery
- hover
- Animation
- CSS
- php
- javascript
- 프론트엔드
- MAC
- 애니메이션
- IOS
- 비전공 개발자
- HTML
- iPhone
- iOS 개발자
- 백엔드
- css3
- SWIFT
- 개발자
- front-end
- button
- 풀스택
- html5
- keyframes
- 자바스크립트
- xcode
- ipad
- 비전공자
- image
Archives
- Today
- Total
비전공자 개발일기
Recipe App 본문
728x90
SMALL
<html lang="ko">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Recipe App</title>
<!-- Google Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap" rel="stylesheet" />
<!-- Stylesheet -->
<link rel="stylesheet" href="style.css" />
<!-- Script -->
<script defer src="main.js"></script>
</head>
<body>
<div class="container">
<div class="search-container">
<input type="text" placeholder="Type A Dish Name Here.." id="user-inp" />
<button id="search-btn">Search</button>
</div>
<div id="result"></div>
</div>
</body>
</html>
* {
padding: 0;
margin: 0;
box-sizing: border-box;
font-family: "Poppins", sans-serif;
}
body {
background-color: #f4c531;
}
.container {
background-color: #ffffff;
font-size: 16px;
padding: 3em 2.8em;
width: 90vw;
max-width: 32em;
position: absolute;
transform: translate(-50%, -50%);
left: 50%;
top: 50%;
border-radius: 0.6em;
}
.search-container {
width: 100%;
display: grid;
grid-template-columns: 9fr 3fr;
gap: 1.2em;
}
.search-container input {
font-size: 1em;
padding: 0.6em;
border: none;
outline: none;
border-bottom: 2px solid #202030;
}
.search-container button {
font-size: 1em;
background-color: #f4c531;
border: none;
font-weight: 600;
border-radius: 0.3em;
}
img {
display: block;
width: 50%;
margin: 1.8em auto 0 auto;
}
.details {
background-color: #f4c531;
position: relative;
margin: -4.3em 0 0 0;
text-align: center;
padding: 0.6em 0;
}
.details h2 {
font-size: 1.2em;
font-weight: 600;
}
.details h4 {
font-size: 1em;
font-weight: 400;
}
#show-recipe {
font-size: 1em;
position: relative;
left: 75%;
padding: 0.9em 0.6em;
background-color: #f4c531;
border: none;
top: 1.5em;
border-radius: 0.3em;
font-weight: 600;
}
#recipe {
position: absolute;
background-color: #ffffff;
min-height: 100%;
width: 100%;
top: 0;
left: 0;
z-index: 2;
border-radius: 0.6em;
display: none;
}
#recipe pre {
white-space: pre-wrap;
word-wrap: break-word;
padding: 2.5em 1.2em 1.2em 1.2em;
font-size: 0.92em;
color: #303040;
}
#hide-recipe {
font-size: 1em;
position: relative;
width: 1.8em;
height: 1.8em;
background-color: #f4c531;
border: none;
top: 1.2em;
left: 90%;
border-radius: 0.3em;
}
ul {
font-size: 1em;
position: relative;
display: grid;
grid-template-columns: auto auto;
gap: 0.8em 1.1em;
padding: 1.2em 0 0 1.2em;
color: #303040;
text-transform: capitalize;
}
h3 {
text-align: center;
margin-top: 1.8em;
color: #202030;
}
@media screen and (max-width: 500px) {
.container {
font-size: 14px;
}
}
//Initial References
let result = document.getElementById("result");
let searchBtn = document.getElementById("search-btn");
let url = "https://www.themealdb.com/api/json/v1/1/search.php?s=";
searchBtn.addEventListener("click", () => {
let userInp = document.getElementById("user-inp").value;
if (userInp.length == 0) {
result.innerHTML = `<h3>Input Field Cannot Be Empty</h3>`;
} else {
fetch(url + userInp)
.then((response) => response.json())
.then((data) => {
let myMeal = data.meals[0];
console.log(myMeal);
console.log(myMeal.strMealThumb);
console.log(myMeal.strMeal);
console.log(myMeal.strArea);
console.log(myMeal.strInstructions);
let count = 1;
let ingredients = [];
for (let i in myMeal) {
let ingredient = "";
let measure = "";
if (i.startsWith("strIngredient") && myMeal[i]) {
ingredient = myMeal[i];
measure = myMeal[`strMeasure` + count];
count += 1;
ingredients.push(`${measure} ${ingredient}`);
}
}
console.log(ingredients);
result.innerHTML = `
<img src=${myMeal.strMealThumb}>
<div class="details">
<h2>${myMeal.strMeal}</h2>
<h4>${myMeal.strArea}</h4>
</div>
<div id="ingredient-con"></div>
<div id="recipe">
<button id="hide-recipe">X</button>
<pre id="instructions">${myMeal.strInstructions}</pre>
</div>
<button id="show-recipe">View Recipe</button>
`;
let ingredientCon = document.getElementById("ingredient-con");
let parent = document.createElement("ul");
let recipe = document.getElementById("recipe");
let hideRecipe = document.getElementById("hide-recipe");
let showRecipe = document.getElementById("show-recipe");
ingredients.forEach((i) => {
let child = document.createElement("li");
child.innerText = i;
parent.appendChild(child);
ingredientCon.appendChild(parent);
});
hideRecipe.addEventListener("click", () => {
recipe.style.display = "none";
});
showRecipe.addEventListener("click", () => {
recipe.style.display = "block";
});
})
.catch(() => {
result.innerHTML = `<h3>Invalid Input</h3>`;
});
}
});
728x90
LIST
'Javascript' 카테고리의 다른 글
Detect Battery Status (0) | 2022.12.17 |
---|---|
Text Editor (0) | 2022.12.16 |
Interest calcalator (0) | 2022.12.14 |
Quote Generator (0) | 2022.12.13 |
Get User Location (0) | 2022.12.11 |