Hello wizards, I hope you are doing great. Today in this blog you’ll learn how to create the "Dictionary App" project using HTML, CSS & JavaScript.
Preview
In the above video, you’ve seen the preview of the "Dictionary App" project and I hope now you are able to create this type of project. If not, I have provided all the HTML CSS and JavaScript code below.
Dictionary App [Source Code]
To get the following HTML, CSS & JS code for the Dictionary App project. You need to create three files one is a HTML file, second one is a CSS file and the another one is JS file. After creating these three files then you can copy-paste the given codes on your document.
Remember, you’ve to create a file with .html extension for HTML code, .css extension for CSS code and .js for JavaScript code.
You can also download all source code files from the given download button.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Dictionary App</title> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css" /> </head> <body> <div class="container"> <h1>Dictionary App</h1> <div class="search"> <input type="text" placeholder="Search a word" required spellcheck="false"> <i class="fas fa-search"></i> <span class="material-icons">close</span> </div> <p class="info-text">Type a word & click 'ENTER' to get the results.</p> <ul> <li class="word"> <div class="details"> <p></p> <span></span> </div> <i class="fas fa-volume-up"></i> </li> <div class="content"> <li class="meaning"> <div class="details"> <p>Meaning :</p> <span></span> </div> </li> <li class="synonyms"> <div class="details"> <p>Synonyms :</p> <span class="list"></span> </div> </li> <li class="source"> <div class="details"> <p>Source :</p> <span></span> </div> </li> </div> </ul> </div> <script src="index.js"></script> </body> </html>
@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800;900&display=swap"); * { margin: 0; padding: 0; box-sizing: border-box; font-family: "Poppins", sans-serif; } body { display: flex; align-items: center; justify-content: center; min-height: 100vh; background: red; } a { text-decoration: none; color: gray; text-decoration: underline; } .container { width: 420px; border-radius: 7px; background: white; padding: 25px 28px 45px; box-shadow: 7px 7px 20px rgba(0, 0, 0, 0.05); } .container h1 { font-size: 28px; font-weight: 600; text-align: center; margin-bottom: -20px; } .container .search { position: relative; margin: 35px 0 18px; } .search input { height: 53px; width: 100%; outline: none; font-size: 16px; border-radius: 5px; padding: 0 42px; border: 1px solid gray; } .search input:focus { padding: 0 41px; border: 2px solid red; } .search :where(i, span) { position: absolute; top: 50%; color: gray; transform: translateY(-50%); } .search i { left: 18px; pointer-events: none; font-size: 16px; } .search input:focus ~ i, input:focus ~ span { color: red; } .search span { right: 15px; cursor: pointer; font-size: 18px; display: none; } .search input:valid ~ span { display: block; } .container .info-text { font-size: 15px; color: black; margin: 0 0 -20px; text-align: center; } .container.active .info-text { display: none; } .info-text span { font-weight: 500; } .container ul { height: 0; opacity: 0; padding-right: 1px; overflow-y: hidden; transition: all 0.2s ease; } .container.active ul { opacity: 1; height: 303px; } .container ul li { display: flex; list-style: none; margin-bottom: 14px; align-items: center; padding-bottom: 17px; border-bottom: 1px solid gray; justify-content: space-between; } ul li:last-child { margin-bottom: 0; border-bottom: 0; padding-bottom: 0; } ul .word p { color: red; font-size: 18px; font-weight: 500; } ul .word span { font-size: 12px; color: gray; } ul .word i { color: gray; font-size: 15px; cursor: pointer; } ul .content { max-height: 215px; overflow-y: auto; } ul .content::-webkit-scrollbar { width: 0px; } .content li p { color: red; font-size: 17px; font-weight: 500; } .content li span { font-size: 15px; color: gray; } .content .synonyms .list { display: flex; flex-wrap: wrap; } .content .synonyms span { margin-right: 5px; }
const containerEl = document.querySelector(".container"); const searchInputEl = containerEl.querySelector("input"); const volumeEl = containerEl.querySelector(".word i"); const infoTextEl = containerEl.querySelector(".info-text"); const synonymsEl = containerEl.querySelector(".synonyms .list"); const removeIcon = containerEl.querySelector(".search span"); let audio; searchInputEl.addEventListener("keyup", e => { let word = e.target.value; if (e.key == "Enter" && word) { fetchApi(word); } }); function fetchApi(word) { containerEl.classList.remove("active"); infoTextEl.style.color = "black"; infoTextEl.innerHTML = `Searching the meaning of <span>"${word}"</span>`; // Link to get this api : https://dictionaryapi.dev/ let url = `https://api.dictionaryapi.dev/api/v2/entries/en/${word}`; try { fetch(url).then(response => response.json()).then(data => { if (data.title) { infoTextEl.innerHTML = `Unable to find the meaning of the word <span>"${word}"</span>. Please, Search for another word.`; } else { containerEl.classList.add("active"); let definitions = data[0].meanings[0].definitions[0], phonetics = `${data[0].meanings[0].partOfSpeech} /${data[0].phonetics[0].text}/`; document.querySelector(".word p").innerText = `Word : ${data[0].word}`; document.querySelector(".word span").innerText = phonetics; document.querySelector(".meaning span").innerText = definitions.definition; document.querySelector(".source span").innerHTML = `<a href="${data[0].sourceUrls[0]}" target="_blank">${data[0].sourceUrls[0]}</a>`; audio = new Audio(data[0].phonetics[0].audio); if (data[0].meanings[0].synonyms[0] === undefined) { synonymsEl.innerHTML = "NA"; } else { synonymsEl.innerHTML = ""; for (let i = 0; i < 5; i++) { let tag = `<span>${data[0].meanings[0].synonyms[i]},</span>`; synonymsEl.insertAdjacentHTML("beforeend", tag); } } } }) } catch { infoTextEl.innerHTML = `Unable to find the meaning of the word <span>"${word}"</span>. Please, Search for another word.`; } } //For volume button volumeEl.addEventListener("click", () => { volumeEl.style.color = "red"; audio.play(); setTimeout(() => { volumeEl.style.color = "gray"; }, 800); }); //for remove icon which is available in input field removeIcon.addEventListener("click", () => { searchInputEl.value = ""; searchInputEl.focus(); containerEl.classList.remove("active"); infoTextEl.style.color = "black"; infoTextEl.innerHTML = "Type a word & click 'ENTER' to get the results."; });