>  기사  >  웹 프론트엔드  >  효과를 얻기 위한 jQuery 및 CSS3 접이식 카드 드롭다운 목록 상자

효과를 얻기 위한 jQuery 및 CSS3 접이식 카드 드롭다운 목록 상자

不言
不言원래의
2018-06-25 15:16:082186검색

jQuery와 CSS3를 활용해 만든 아주 멋진 접이식 카드 스타일 드롭다운 목록 상자 효과입니다. 관심 있는 친구들이 참고해 보세요

jQuery 드롭다운 목록 상자 효과는 각 목록 항목을 카드 스타일로 만들고 열고 닫습니다. 블라인드를 열고 닫는 느낌이 있고 효과도 너무 좋아서 여러분과 공유하고 싶습니다.

간략한 튜토리얼
HTML 구조
이 드롭다운 목록 상자 효과의 목록 항목은 열린 상태와 닫힌 상태를 전환하기 위해 순서가 지정되지 않은 목록을 사용하여 만들어집니다. . 요소는 하이퍼링크 요소입니다.

<p class="container">
 <p class="card-drop">
  <a class=&#39;toggle&#39; href="#">
   <i class=&#39;fa fa-suitcase&#39;></i> 
   <span class=&#39;label-active&#39;>Everyting</span>
  </a>
  <ul>
   <li class=&#39;active&#39;>
    <a data-label="Everyting" href="#"><i class=&#39;fa fa-suitcase&#39;></i> Everyting</a>
   </li>
   ......
  </ul>
 </p>
</p>

CSS 스타일
a.toggle 요소는 드롭다운 목록의 열린 상태와 닫힌 상태를 전환하는 데 사용됩니다. 클릭 시 카드를 뒤집는 효과를 만들기 위해 변환 스타일: 보존-3d 속성으로 설정됩니다. 동시에 변환의 원점은Transform-Origin: 50% 0%;

.card-drop > a.toggle {
 position: relative;
 z-index: 100;
 -moz-backface-visibility: hidden;
 -webkit-backface-visibility: hidden;
 backface-visibility: hidden;
 -moz-transform-style: preserve-3d;
 -webkit-transform-style: preserve-3d;
 transform-style: preserve-3d;
 -moz-transform-origin: 50% 0%;
 -ms-transform-origin: 50% 0%;
 -webkit-transform-origin: 50% 0%;
 transform-origin: 50% 0%;
 -moz-transition: linear 0.1s;
 -o-transition: linear 0.1s;
 -webkit-transition: linear 0.1s;
 transition: linear 0.1s;
}

그러나 활성화되면 X축을 따라 회전하고 :before 및 :after 의사 요소를 사용하여 모서리 삼각형 효과를 만듭니다.

.card-drop > a.toggle:active {
 -moz-transform: rotateX(60deg);
 -webkit-transform: rotateX(60deg);
 transform: rotateX(60deg);
}
.card-drop > a.toggle:active:after {
 -moz-transform: rotateX(180deg);
 -webkit-transform: rotateX(180deg);
 transform: rotateX(180deg);
}
.card-drop > a.toggle:before, .card-drop > a.toggle:after {
 content: "";
 position: absolute;
}
.card-drop > a.toggle:before {
 right: 25px;
 top: 50%;
 margin-top: -2.5px;
 border-left: 6px solid transparent;
 border-right: 6px solid transparent;
 border-top: 6px solid rgba(0, 0, 0, 0.8);
}
.card-drop > a.toggle.active:before {
 transform: rotate(180deg);
}

목록 항목을 전환할 때 jQuery를 사용하여 상단, 너비 및 여백-왼쪽 속성을 수정하여 항목을 표시하거나 숨길 수 있습니다. 그리고 CSS 애니메이션 전환 효과로 이즈아웃을 사용하세요.

.card-drop ul {
 position: absolute;
 height: 100%;
 top: 0;
 display: block;
 width: 100%;
}
.card-drop ul li {
 margin: 0 auto;
 -moz-transition: all, ease-out 0.3s;
 -o-transition: all, ease-out 0.3s;
 -webkit-transition: all, ease-out 0.3s;
 transition: all, ease-out 0.3s;
 position: absolute;
 top: 0;
 z-index: 0;
 width: 100%;
}
.card-drop ul li a {
 border-top: none;
}
.card-drop ul li a:hover {
 background-color: #4aa3df;
 color: #f3f9fd;
}
.card-drop ul li.active a {
 color: #fff;
 background-color: #258cd1;
 cursor: default;
}
.card-drop ul li.closed a:hover {
 cursor: default;
 background-color: #3498db;
}

JavaScript

jQuery 코드에서 setClosed() 함수는 모든 목록 항목을 닫는 데 사용되며 기본적으로 닫혀 있습니다.

function setClosed() {
  li.each(function (index) {
    $(this).css(&#39;top&#39;, index * 4).css(&#39;width&#39;, width - index * 0.5 + &#39;%&#39;).css(&#39;margin-left&#39;, index * 0.25 + &#39;%&#39;);
  });
  li.addClass(&#39;closed&#39;);
  toggler.removeClass(&#39;active&#39;);
}
setClosed();

그런 다음 목록의 열린 상태와 닫힌 상태를 전환하는 .toggle 요소의 mousedown 이벤트를 수신합니다.

toggler.on(&#39;mousedown&#39;, function () {
  var $this = $(this);
  if ($this.is(&#39;.active&#39;)) {
    setClosed();
  } else {
    $this.addClass(&#39;active&#39;);
    li.removeClass(&#39;closed&#39;);
    li.each(function (index) {
      $(this).css(&#39;top&#39;, 60 * (index + 1)).css(&#39;width&#39;, &#39;100%&#39;).css(&#39;margin-left&#39;, &#39;0px&#39;);
    });
  }
});

마지막으로 각 목록 항목을 클릭하면 목록 항목의 내용이 첫 번째 항목으로 이동되고 전체 목록이 닫힙니다.

links.on(&#39;click&#39;, function (e) {
  var $this = $(this), label = $this.data(&#39;label&#39;);
  icon = $this.children(&#39;i&#39;).attr(&#39;class&#39;);
  li.removeClass(&#39;active&#39;);
  if ($this.parent(&#39;li&#39;).is(&#39;active&#39;)) {
    $this.parent(&#39;li&#39;).removeClass(&#39;active&#39;);
  } else {
    $this.parent(&#39;li&#39;).addClass(&#39;active&#39;);
  }
  toggler.children(&#39;span&#39;).text(label);
  toggler.children(&#39;i&#39;).removeClass().addClass(icon);
  setClosed();
  e.preventDefault;
});

위 내용은 모두의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

타임라인 효과를 구현하는 jQuery 플러그인 Timelinr 정보

마우스가 지나갈 때 버퍼링된 애니메이션 그라데이션 효과로 DIV 상자를 팝업하는 JS 및 CSS

방법 javascript+css3 미니 게임에서 풍선 구현

위 내용은 효과를 얻기 위한 jQuery 및 CSS3 접이식 카드 드롭다운 목록 상자의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:Vue에서 $refs 사용다음 기사:Vue에서 $refs 사용