media를 사용하여 Navigation SideMenu 구현

13177 단어 HTMLCSS

입문


사고 지도의 서비스는 개인이 개발한 것이다.
이 웹 응용 프로그램에서는 화면 크기가 작은 상황에서Side Menu를 자동으로 닫아 응답하는 UI를 실현합니다.

이것은 CSS의 미디어 조회를 사용하면 간단하게 실현할 수 있기 때문에 방법을 소개하겠습니다.

미디어


CSS의 미디어를 지정하면 하나 이상의 미디어 조회 결과에 따라 적용되는 스타일시트를 변경할 수 있습니다.
예를 들어 화면 크기가 600px 이하일 때 배경색을 바꾸려면 다음과 같이 지정합니다.
@media screen and (max-width: 600px) {
    body {background-color: #99cc00;}
}

Navigation Side Menu 만드는 법


우선, 전체 HTML을 세 부분으로 나눈다.
  • main: 구성 내용의 영역
  • topnav: 네비게이션 표시줄
  • sidenav: 측면 메뉴

  • 점, topnav는main의 하위 요소로 배치하고main은sidenav의width의 몫인 left-margin만 가져옵니다.
    <html>
    <head>
    <style>
    .main {
      margin-left: 160px;
    }
    .sidenav {
      width: 160px;
    }
    </style>
    </head>
    <body>
    <div class="sidenav"></div>
    <div class="main">
      <div class="topnav" id="myTopnav"></div>
    </div>
    </body>
    </html>
    
    다음은 미디어를 지정합니다.
    하고 싶은 일은 화면 크기가 600px 이하일 때sidenav를 숨기고main을sidenav 크기로 확대하는 것입니다.
    구체적으로 다음 CSS를 지정합니다.
  • 숨기기 → display: none;
  • 크기 조정 → margin-left: 0px
  • @media screen and (max-width: 600px) {
      .sidenav {display: none;}
      .main {margin-left: 0px;}
    }
    

    최종 코드 예

    <!DOCTYPE html>
    <html>
    <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
    <style>
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    
    .topnav a {
      float: left;
      display: block;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    
    .topnav a.active {
      background-color: #4CAF50;
      color: white;
    }
    
    .topnav .icon {
      display: none;
    }
    
    .main {
      margin-left: 160px; /* Same as the width of the sidenav */
      font-size: 28px; /* Increased text to enable scrolling */
      padding: 0px;
    }
    
    .sidenav {
      height: 100%;
      width: 160px;
      position: fixed;
      z-index: 1;
      top: 0;
      left: 0;
      background-color: #111;
      overflow-x: hidden;
      padding-top: 20px;
    }
    
    .sidenav a {
      padding: 6px 8px 6px 16px;
      text-decoration: none;
      font-size: 25px;
      color: #818181;
      display: block;
    }
    
    .sidenav a:hover {
      color: #f1f1f1;
    }
    
    @media screen and (max-width: 600px) {
      .topnav a.icon {
        float: right;
        display: block;
      }
      .sidenav {display: none;}
      .main {margin-left: 0px;}
    }
    </style>
    </head>
    <body>
    <div class="sidenav">
      <a href="#about">About</a>
      <a href="#services">Services</a>
      <a href="#clients">Clients</a>
      <a href="#contact">Contact</a>
    </div>
    <div class="main">
      <div class="topnav" id="myTopnav">
        <a href="#home" class="active">Home</a>
        <a href="javascript:void(0);" class="icon" onclick="myFunction()">
          <i class="fa fa-bars"></i>
        </a>
      </div>
      <div style="padding-left:16px">
        <h2>Responsive Topnav Example</h2>
        <p>Resize the browser window to see how it works.</p>
      </div>
    </div>
    </body>
    </html>
    
    상기 코드여기 있다는 즉시 시도할 수 있습니다.

    좋은 웹페이지 즐겨찾기