- 다크모드/ 일반모드변경, 검색창 구현, 바로가기연결, 바로가기 추가
![]() |
![]() |
- index.html
<!DOCTYPE html>
<html lang="ko">
<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>Google</title>
<link rel="stylesheet" href="/style.css">
<script defer src="/index.js"></script>
</head>
<body class="body-background">
<header>
<nav class="header-nav">
<ul class = "header-nav-list-wrapper">
<li>Gmail</li>
<li>Images</li>
<li><button class="toggle-button">다크모드</button></li>
</ul>
</nav>
</header>
<main class="main-container">
<h1><img class="image-logo" src="/images/logo.png" alt="logo 이미지"></h1>
<div class="search-container">
<input class ="search-input" type="text" placeholder="Google 검색 또는 url입력">
<img class="search-icon" src="/images/search.png" alt="검색 이미지">
</div>
<section class="bookmark-section">
<div class="bookmark-wrapper">
<a href="https://www.naver.com" target="_blank" class="bookmark-item">
<div class="img-icon-wrapper">
<img src="/images/naver.png" alt="Naver">
</div>
<div class="bookmark-text">naver</div>
</a>
<a href="https://www.google.com/" target="_blank" class="bookmark-item">
<div class="img-icon-wrapper">
<img src="/images/google.png" alt="google">
</div>
<div class="bookmark-text">google</div>
</a>
<a href="https://edu.ssafy.com/edu/main/index.do" target="_blank" class="bookmark-item">
<div class="img-icon-wrapper">
<img src="/images/ssafy.png" alt="ssafy">
</div>
<div class="bookmark-text">ssafy</div>
</a>
<div class="bookmark-plus">
<div class="img-icon-wrapper">+</div>
<div class="bookmark-text">추가하기</div>
</div>
</div>
</section>
</main>
</body>
</html>
- style.css
*{
box-sizing: border-box;
}
/* toggle이용 다크모드 구현시 사용 */
.body-background{
background: #fff;
}
/*/////////////// 헤더 부분 /////////////*/
.header-nav{
display: flex;
}
.header-nav-list-wrapper{
list-style: none;
padding: 0;
display: flex;
margin-left: auto;
align-items: center;
}
.header-nav-list-wrapper li{
margin-left: 10px;
}
.toggle-button{
background: black;
color: white;
border: 1px solid #eee;
/* #eee 엄청흐린색 = 있는듯~없는듯~ */
padding: 5px 8px;
border-radius: 10px;
cursor: pointer;
}
/* ////////////////메인 부분//////////////// */
.main-container{
/* */
text-align:center;
/* */
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
.image-logo{
width: 272px;
}
/* 검색 부분 */
.search-container{
position: relative;
margin: 0px auto;
margin-top: 50px;
}
.search-icon{
position: absolute;
top:13px;
left: 10px;
width: 17px;
}
.search-input{
width: 100%;
height: 44px;
padding-left: 40px;
border-radius: 50px;
border: 1px solid #dddddd;
}
/* ////////////북마크//////////////////// */
.bookmark-section{
margin-top: 40px;
}
.bookmark-wrapper{
display: flex;
flex-wrap: wrap;
justify-content: center;
max-width: 600px;
min-width: 430px;
}
.bookmark-item{
margin-top: 30px;
width: 112px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-decoration: none;
}
.bookmark-item:hover{
opacity: 0.5;
cursor: pointer;
}
.img-icon-wrapper{
width: 60px;
height: 60px;
border-radius: 50%;
display: flex;
justify-content: center;
align-items: center;
background: #f2f3f5;
font-size: 24px;
}
.img-icon-wrapper > img{
width: 60%;
height: 60%;
}
.bookmark-plus{
margin-top: 30px;
width: 112px;
text-align: center;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-decoration: none;
}
.bookmark-text{
margin-top: 5px;
color: #000;
}
/* 북마크 끝 */
/* 클릭이벤트 발생시, 다크보드를 위해 CSS 미리 정의 */
.toggle-button-darkmode{
background-color: #fff;
color: black;
}
/* toggle이용 다크모드 구현시 사용 */
.body-background-darkmode{
background: #000;
}
.text-darkmode{
color: #fff;
}
.img-icon-wrapper-darkmode{
background-color: #fff;
}
- index.js
let toggleButton = document.querySelector(".toggle-button");
let bodyBackground = document.querySelector(".body-background");
let headerNav = document.querySelector(".header-nav-list-wrapper");
let bookmarkTexts = document.querySelectorAll(".bookmark-text");
let imgIconWrappers = document.querySelectorAll(".img-icon-wrapper");
let searchInput = document.querySelector(".search-input")
toggleButton.addEventListener('click', function(){
toggleButton.innerHTML = "다크모드";
toggleButton.classList.toggle("toggle-button-darkmode");
bodyBackground.classList.toggle("body-background-darkmode");
if(toggleButton.classList.contains("toggle-button-darkmode")){
toggleButton.innerHTML = "일반모드";
}
headerNav.classList.toggle("text-darkmode");
for (let i=0; i<bookmarkTexts.length; i++){
bookmarkTexts[i].classList.toggle("text-darkmode")
}
for (let i=0; i<imgIconWrappers.length; i++){
imgIconWrappers[i].classList.toggle("img-icon-wrapper-darkmode")
}
})
searchInput.addEventListener('keyup', function(e){
if(e.code === "Enter"){
if(e.target.value === ""){
alert("검색어를 입력하지 않으셨습니다.");
return;
}
alert(e.target.value + "검색하셨습니다.");
window.open(`https://www.google.com/search?q=${e.target.value}`, "_blank")
}
})
const bookmarkPlus = document.querySelector(".bookmark-plus")
bookmarkPlus.addEventListener("click", function(){
const bookmarkItem = document.querySelectorAll(".bookmark-item");
//console.log(bookmarkItem);
const item = bookmarkItem[bookmarkItem.length -1];
const clone = item.cloneNode(true);
item.after(clone);
})
'WEB > Javascript' 카테고리의 다른 글
[21.08.11] 비동기 프로그래밍2 (0) | 2021.08.11 |
---|---|
[21.08.10] 비동기 프로그래밍1 (0) | 2021.08.10 |
[21.07.21] Javascript 실습 - 영화 정보 수집 (0) | 2021.07.21 |
[21.07.20] Javascript기본 (0) | 2021.07.21 |