안녕하세요

이번 포스팅은 제이쿼리를 사용해서 드롭다운메뉴가 부드럽게 움직이도록 만들어보려고 합니다.


↑드롭다운메뉴가 뭔지 모르시는분은 이거 보시면 아마 바로 아~하실듯




우선 HTML부터 써봅시다



   <header>

      <div class="container">

        <ul class="nav">

          

          <li><a href="">메뉴1</a>

            <ul class="sub sub1">

              <li><a href="#">메뉴1-1</a></li>

              <li><a href="#">메뉴1-2</a></li>

              <li><a href="#">메뉴1-3</a></li>

            </ul>

          </li>

          

          <li><a href="">메뉴2</a>

            <ul class="sub sub2">

              <li><a href="#">메뉴2-1</a></li>

              <li><a href="#">메뉴2-2</a></li>

              <li><a href="#">메뉴2-3</a></li>

            </ul>

          </li>

          

          <li><a href="">메뉴3</a>

            <ul class="sub sub3">

              <li><a href="#">메뉴3-1</a></li>

              <li><a href="#">메뉴3-2</a></li>

              <li><a href="#">메뉴3-3</a></li>

            </ul>

          </li>

          

          <li><a href="">메뉴4</a>

            <ul class="sub sub4">

              <li><a href="#">메뉴4-1</a></li>

              <li><a href="#">메뉴4-2</a></li>

              <li><a href="#">메뉴4-3</a></li>

            </ul>

          </li>

          

        </ul>

      </div>

    </header>




원래 저렇게 안쓰는데 보기 편하시라고 덩어리별로 쪼개놔봤습니다.


ul과 li를 이해하고 계신분들이라면 그냥 보셔도 알거라 생각하고 설명 패스하겠습니다.








다음은 css


* {margin: 0;padding: 0;}

li {list-style: none}

a{text-decoration: none}

header {

  width: 100%;

  height: 50px;

  background-color: skyblue;

}

.container {

  width: 1200px;

  height: 50px;

  margin: 0 auto;

  position: relative;

}

.nav {

  float: left;

  width: 100%;

  overflow: hidden;

}

.nav>li {

  float: left;

  width: 25%;

  box-sizing: border-box;

}

.nav>li>a {

  display: block;

  width: 100%;

  text-align: center;

  line-height: 3.4;

  color: #fcfcfc;

  font-size: 15px;

}

.nav>li>a:hover{

  background-color: #3DB7CC;

}

.sub {

  width: 300px;

  margin: 0 auto;

  position: absolute;

  top: 50px;

  left: 0;

  z-index: 1;

  display: none;

}

.sub2 {

  left: 300px;

}

.sub3 {

  left: 600px;

}

.sub4 {

  left: 900px;

}

.sub>li {

  width: 300px;

  height: 50px;

  border-bottom: 1px solid #000;

  color: #fff;

  background-color: #FFD8D8;

  box-sizing: border-box;

}

.sub>li:last-child {

  border: 0;

}

.sub>li>a:hover {

  background-color: #FFA7A7;

  color: #fff;

}

.sub>li>a {

  display: block;

  width: 100%;

  text-align: center;

  line-height: 3.4;

  font-size: 15px;

  font-weight: 500;

}





크기는 제 마음대로 메뉴당 넓이 300 높이 50으로 맞췄습니다.

물론 색깔도 제맘대로입니다


그대로 복붙하셔서 크기 바꾸실때에는 


.sub의 top값, .sub2, sub3, sub4의 left값, .nav>li>a과 .sub>li>a의 line-height값만 수정해주시면 됩니다.


선 빼고싶은분들은 border 빼시면되고.....이런건 설명 안해드려도되겠죠???




이제 기본 와꾸는 잡혔습니다.


이제 기다리고 기다리던 제이쿼리 입니다.



$(".nav li").hover(function() {

        $(this).children("ul").stop().slideToggle(500)

      })



짧으니까 주석 없이 설명으로 쓰겠습니다.


.nav li에 마우스를 올렸을때 실행되는 함수{


이것에 마우스를 올리면 자녀속성인 ul가 튀어나와라(0.5초에걸쳐서)


}


라는 뜻입니다.


중간에 들어간 stop()는 써도되고 안써도 됩니다.

저게 들어가면 올렸다가 마우스를 바로떼면 바로 다시 사라지고,

저게 안들어가면 일단 마우스를 올리면 무조건 메뉴 전체가 나왔다가 다시 사라집니다.


제 설명이 이해가 안되시면 직접 한번 지워서 실행시켜보시면 바로 아실겁니다.






 



'코딩 > jQuery' 카테고리의 다른 글

jQuery로 이미지 슬라이드 만들기  (1) 2018.08.06

+ Recent posts