ホームページ  >  記事  >  ウェブフロントエンド  >  効果を実現するための jQuery および CSS3 折りたたみカード ドロップダウン リスト ボックス

効果を実現するための jQuery および CSS3 折りたたみカード ドロップダウン リスト ボックス

不言
不言オリジナル
2018-06-25 15:16:082272ブラウズ

これは、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要素は、ドロップダウンリストの開閉状態を切り替えるために使用されます。クリックしたときにカードがめくられる効果を作成するには、transform-style:preserve-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 を使用して、top、width、margin-left プロパティを変更して、それらを表示または非表示にします。また、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 中国語 Web サイトをご覧ください。

関連する推奨事項:

jQuery プラグインについて Timelinr でタイムライン効果を実装する

マウスが上を通過したときにバッファリングされたアニメーション グラデーション効果を備えた DIV ボックスをポップアップする JS と CSS

方法JavaScript+CSS3ミニゲームでバルーニングを実装するには

以上が効果を実現するための jQuery および CSS3 折りたたみカード ドロップダウン リスト ボックスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。