Cara Membuat Menu Accordion Dengan CSS

Cara Membuat Menu Accordion Dengan CSS Animated - Tutorial blogger-Untuk membuat menu accordion dengan animasi diperlukan sebuah elemen pendukung seperti CSS dan javascrip
Accordion Menu With Font Awesome

Pada kesempatan kali ini, saya akan membagikan tutorial tentang blogging yang berjudul Cara Membuat Menu Accordion Dengan Font Awesome. Untuk membuatnya diperlukan elemen khusus untuk membuat tampilan menu accordion menjadi lebih menarik dan indah dilihat. Di dalam tutorial kali ini, saya akan mencoba mengulas 2 variasi dalam menu accordion. Versi pertama hanya menggunakan CSS, sedangkan versi yang kedua menggunakan gabungan antara CSS dan Font Aweosme. Baiklah, mari kita simak langkah-langkah untuk membuatnya.

  1. Login ke akun blogger sobat. Jika belum login klik tautan berikut: Login Page.
  2. Pada menu Dashboard, Pilih Template --> Edit HTML.
  3. Cari kode ]]></b:skin> dengan cara 
    Ctrl
    +
    F
    .
  4. Kemuadian salin kode dibwah ini tepat dibawahnya.
  5. /* CSS Responsive Animated Accordion */
    
    .accordion dl {
      border: 1px solid #ddd;
    }
    .accordion dl:after {
      content: "";
      display: block;
      height: 1em;
      width: 100%;
      background-color: #2ba659;
    }
    .accordion dt > a {
      text-align: center;
      font-weight: 700;
      padding: 2em;
      display: block;
      text-decoration: none;
      color: #fff;
      -webkit-transition: background-color 0.5s ease-in-out;
    }
    .accordion dd {
      background-color: #eee;
      font-size: 1em;
      line-height: 1.5em;
    }
    .accordion dd > p {
      padding: 1em 2em 1em 2em;
    }
    
    .accordion {
      position: relative;
      background-color: #eee;
    }
    
    .container {
      max-width: 960px;
      margin: 0 auto;
      padding: 2em 0 2em 0;
    }
    
    .accordionTitle {
      background-color: #38cc70;
      border-bottom: 1px solid #30bb64;
    }
    .accordionTitle:before {
      content: "+";
      font-size: 1.5em;
      line-height: 0.5em;
      float: left;
      -moz-transition: -moz-transform 0.3s ease-in-out;
      -o-transition: -o-transform 0.3s ease-in-out;
      -webkit-transition: -webkit-transform 0.3s ease-in-out;
      transition: transform 0.3s ease-in-out;
    }
    .accordionTitle:hover {
      background-color: #2ba659;
    }
    
    .accordionTitleActive {
      background-color: #2ba659;
    }
    .accordionTitleActive:before {
      -webkit-transform: rotate(-225deg);
      -moz-transform: rotate(-225deg);
      transform: rotate(-225deg);
    }
    
    .accordionItem {
      height: auto;
      overflow: hidden;
    }
    @media all {
      .accordionItem {
        max-height: 50em;
        -moz-transition: max-height 1s;
        -o-transition: max-height 1s;
        -webkit-transition: max-height 1s;
        transition: max-height 1s;
      }
    }
    @media screen and (min-width: 48em) {
      .accordionItem {
        max-height: 15em;
        -moz-transition: max-height 0.5s;
        -o-transition: max-height 0.5s;
        -webkit-transition: max-height 0.5s;
        transition: max-height 0.5s;
      }
    }
    
    .accordionItemCollapsed {
      max-height: 0;
    }
    
    .animateIn {
      -webkit-animation-name: accordionIn;
      -webkit-animation-duration: 0.65s;
      -webkit-animation-iteration-count: 1;
      -webkit-animation-direction: normal;
      -webkit-animation-timing-function: ease-in-out;
      -webkit-animation-fill-mode: both;
      -webkit-animation-delay: 0s;
      -moz-animation-name: normal;
      -moz-animation-duration: 0.65s;
      -moz-animation-iteration-count: 1;
      -moz-animation-direction: alternate;
      -moz-animation-timing-function: ease-in-out;
      -moz-animation-fill-mode: both;
      -moz-animation-delay: 0s;
      animation-name: accordionIn;
      animation-duration: 0.65s;
      animation-iteration-count: 1;
      animation-direction: normal;
      animation-timing-function: ease-in-out;
      animation-fill-mode: both;
      animation-delay: 0s;
    }
    
    .animateOut {
      -webkit-animation-name: accordionOut;
      -webkit-animation-duration: 0.75s;
      -webkit-animation-iteration-count: 1;
      -webkit-animation-direction: alternate;
      -webkit-animation-timing-function: ease-in-out;
      -webkit-animation-fill-mode: both;
      -webkit-animation-delay: 0s;
      -moz-animation-name: accordionOut;
      -moz-animation-duration: 0.75s;
      -moz-animation-iteration-count: 1;
      -moz-animation-direction: alternate;
      -moz-animation-timing-function: ease-in-out;
      -moz-animation-fill-mode: both;
      -moz-animation-delay: 0s;
      animation-name: accordionOut;
      animation-duration: 0.75s;
      animation-iteration-count: 1;
      animation-direction: alternate;
      animation-timing-function: ease-in-out;
      animation-fill-mode: both;
      animation-delay: 0s;
    }
    
    @-webkit-keyframes accordionIn {
      0% {
        opacity: 0;
        -webkit-transform: scale(0.8);
      }
      100% {
        opacity: 1;
        -webkit-transform: scale(1);
      }
    }
    @-moz-keyframes accordionIn {
      0% {
        opacity: 0;
        -moz-transform: scale(0.8);
      }
      100% {
        opacity: 1;
        -moz-transform: scale(1);
      }
    }
    @keyframes accordionIn {
      0% {
        opacity: 0;
        transform: scale(0.8);
      }
      100% {
        opacity: 1;
        transform: scale(1);
      }
    }
    @-webkit-keyframes accordionOut {
      0% {
        opacity: 1;
        -webkit-transform: scale(1);
      }
      100% {
        opacity: 0;
        -webkit-transform: scale(0.8);
      }
    }
    @-moz-keyframes accordionOut {
      0% {
        opacity: 1;
        -moz-transform: scale(1);
      }
      100% {
        opacity: 0;
        -moz-transform: scale(0.8);
      }
    }
    @keyframes accordionOut {
      0% {
        opacity: 1;
        transform: scale(1);
      }
      100% {
        opacity: 0;
        transform: scale(0.8);
      }
    }

  6. Cari kode </body> dengan cara 
    Ctrl
    +
    F
    . Dan letakkan kode dibawah ini tepat diatasnya.
  7. /*!
     * classie - class helper functions
     * from bonzo https://github.com/ded/bonzo
     * 
     * classie.has( elem, 'my-class' ) -> true/false
     * classie.add( elem, 'my-new-class' )
     * classie.remove( elem, 'my-unwanted-class' )
     * classie.toggle( elem, 'my-class' )
     */
    
    /*jshint browser: true, strict: true, undef: true */
    /*global define: false */
    
    ( function( window ) {
    
    'use strict';
    
    // class helper functions from bonzo https://github.com/ded/bonzo
    
    function classReg( className ) {
      return new RegExp("(^|\\s+)" + className + "(\\s+|$)");
    }
    
    // classList support for class management
    // altho to be fair, the api sucks because it won't accept multiple classes at once
    var hasClass, addClass, removeClass;
    
    if ( 'classList' in document.documentElement ) {
      hasClass = function( elem, c ) {
        return elem.classList.contains( c );
      };
      addClass = function( elem, c ) {
        elem.classList.add( c );
      };
      removeClass = function( elem, c ) {
        elem.classList.remove( c );
      };
    }
    else {
      hasClass = function( elem, c ) {
        return classReg( c ).test( elem.className );
      };
      addClass = function( elem, c ) {
        if ( !hasClass( elem, c ) ) {
          elem.className = elem.className + ' ' + c;
        }
      };
      removeClass = function( elem, c ) {
        elem.className = elem.className.replace( classReg( c ), ' ' );
      };
    }
    
    function toggleClass( elem, c ) {
      var fn = hasClass( elem, c ) ? removeClass : addClass;
      fn( elem, c );
    }
    
    var classie = {
      // full names
      hasClass: hasClass,
      addClass: addClass,
      removeClass: removeClass,
      toggleClass: toggleClass,
      // short names
      has: hasClass,
      add: addClass,
      remove: removeClass,
      toggle: toggleClass
    };
    
    // transport
    if ( typeof define === 'function' && define.amd ) {
      // AMD
      define( classie );
    } else {
      // browser global
      window.classie = classie;
    }
    
    })( window );
    
    //fake jQuery
    var $ = function(selector){
      return document.querySelector(selector);
    }
    var accordion = $('.accordion');
    
    
    
    
    
    //add event listener to all anchor tags with accordion title class
    accordion.addEventListener("click",function(e) {
      e.stopPropagation();
      e.preventDefault();
      if(e.target && e.target.nodeName == "A") {
        var classes = e.target.className.split(" ");
        if(classes) {
          for(var x = 0; x < classes.length; x++) {
            if(classes[x] == "accordionTitle") {
              var title = e.target;
    
              //next element sibling needs to be tested in IE8+ for any crashing problems
              var content = e.target.parentNode.nextElementSibling;
              
              //use classie to then toggle the active class which will then open and close the accordion
             
              classie.toggle(title, 'accordionTitleActive');
              //this is just here to allow a custom animation to treat the content
              if(classie.has(content, 'accordionItemCollapsed')) {
                if(classie.has(content, 'animateOut')){
                  classie.remove(content, 'animateOut');
                }
                classie.add(content, 'animateIn');
    
              }else{
                 classie.remove(content, 'animateIn');
                 classie.add(content, 'animateOut');
              }
              //remove or add the collapsed state
              classie.toggle(content, 'accordionItemCollapsed');
    
    
    
              
            }
          }
        }
        
      }
    });
  8. Kemudian Simpan Template
Untuk sobat yang menginginkan menu accordion dengan Font Awesome, Sobat bisa masuk ke link berikut ini: