프론트엔드/컴포넌트

자바스크립트없이 드롭다운 메뉴 만들기 (2)

syleemomo 2023. 4. 14. 20:01
728x90
<!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>design practice</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" integrity="sha512-iecdLmaskl7CVkqkXNQ/ZH/XLlvWZOJyj7Yy7tcenmpD1ypASozpmT/E0iPtmFIB46ZmdtAc9eNBvH0H/ZpiBw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <a href="#" class="nav-menu">home</a>
  <div class="dropdown-menu">
    <ul>
      <li class="sub-menu">Social Media</li>
      <ul>
        <li><a href="https://instagram.com"><i class="fa-brands fa-instagram"></i>instagram</a></li>
        <li><a href="https://google.com"><i class="fa-brands fa-google"></i>google</a></li>
        <li><a href="https://github.com"><i class="fa-brands fa-github"></i>github</a></li>
      </ul>

      <li class="sub-menu">Big companies</li>
      <ul>
        <li><a href="https://instagram.com"><i class="fa-brands fa-instagram"></i>instagram</a></li>
        <li><a href="https://google.com"><i class="fa-brands fa-google"></i>google</a></li>
        <li><a href="https://github.com"><i class="fa-brands fa-github"></i>github</a></li>
      </ul>

      <li class="sub-menu">Places</li>
      <ul>
        <li><a href="https://instagram.com"><i class="fa-brands fa-instagram"></i>instagram</a></li>
        <li><a href="https://google.com"><i class="fa-brands fa-google"></i>google</a></li>
        <li><a href="https://github.com"><i class="fa-brands fa-github"></i>github</a></li>
      </ul>
    </ul>
    
  </div>
  
  <script src="app.js"></script>
</body>
</html>
a{
  text-decoration: none;
  color: #333;
}
ul{
  padding: 0; margin: 0;
}
li{
  list-style: none;
}
.dropdown-menu{
  display: none;
  width: 20rem;
  padding: .5rem;
  background: #eee;
  z-index: 1;
  box-shadow: .3rem .3rem .5rem rgba(0,0,0,.3);
}
.dropdown-menu .sub-menu{
  font-weight: bold;
  font-size: 1.2rem;
  margin-top: 0.5rem;
  border-bottom: 1px solid #ccc;
  color: #333;
}
.dropdown-menu .sub-menu::selection{ /* 드래그하는 글자의 배경색 변경 */
  background: #333;
}
.dropdown-menu a{
  display: block;
  transition: .3s;
}
.dropdown-menu a:hover{
  background: #ccc;
}
.dropdown-menu a i{
  margin-right: .5rem;
}

/* 드롭다운 메뉴중 하나를 선택하면 nav-menu 링크의 포커스가 사라지면서
드롭다운 메뉴가 보이지 않으므로 a 태그도 함께 사라져서 동작하지 않음 */
.nav-menu:focus + .dropdown-menu{
  display: block;
}

/* 드롭다운 메뉴중 하나를 선택할때는 nav-menu 링크의 포커스가 사라지더라도
드롭다운 메뉴 영역 내부를 클릭했을때 드롭다운 메뉴가 사라지지 않게 해서 a 태그가 동작할 수 있게 함 */
.dropdown-menu:active{ 
  display: block;
}
728x90