Button Selection Interaction With jQuery & CSS3

Button Selection Interaction With jQuery & CSS3
File Size: 6.62 KB
Views Total: 249
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   

An animated button selection UI design concept that allows the user to switch between options by clicking/tapping the button.

See It In Action:

See the Pen UI // Button Selection Type by Cosimo Scarpa (@coswise) on CodePen.

How to use it:

1. Create the HTML for the button selection UI.

<div class="concept-wrap" id="mainWrap">
  <div class="tap">
    <div class="wave"></div>
  </div>
  <div class="btn-wrap" id="btn">
    <div class="btn-cnt" id="content">
      <div class="cnt cnt-1"><p class="text">jQuery</p>
        <i class="icon">Any Arrow Icon Here</i>
      </div>
      <div class="cnt cnt-2"><p class="text">Script</p>
        <i class="icon">Any Arrow Icon Here</i>
      </div>
      <div class="cnt cnt-3"><p class="text">Net</p>
        <i class="icon">Any Arrow Icon Here</i>
      </div>
      <div class="cnt cnt-4"><p class="text">Example</p>
        <i class="icon">Any Arrow Icon Here</i>
      </div>
    </div>
  </div>
</div>

2. The necessary CSS/CSS3 styles for the button selection interaction.

.cnt, .btn-cnt {
  display: flex;
  justify-content: center;
  align-items: center;
}

.cnt, .btn-wrap, .concept-wrap {
  width: 200px;
  height: 70px;
}

.concept-wrap {
  position: relative;
  cursor: pointer;
}

.btn-wrap {
  cursor: pointer;
  position: absolute;
  background: #1462ff;
  border-radius: 12px;
  box-shadow: 0 6px 30px -10px #4a74c9;
  overflow: hidden;
  transform: translateX(0);
}

.btn-cnt {
  position: absolute;
  top: 0;
  right: 0;
  flex-direction: row;
  height: 70px;
  width: 800px;
  z-index: 9;
}

.cnt {
  justify-content: space-around;
  box-sizing: border-box;
  padding: 0 25px;
}

.cnt .text {
  text-align: left;
  font-size: 1.4em;
  margin-right: auto;
  color: #fff;
}

.cnt .icon {
  margin-top: 3px;
  color: #fff;
}

.tap {
  width: 140px;
  height: 140px;
  position: absolute;
  background: transparent;
  opacity: 0.4;
  top: calc(50% - 69px);
  right: -32px;
  border-radius: 50%;
  z-index: 4;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 3;
}

.wave {
  width: 30px;
  height: 30px;
  background: #4784ff;
  border-radius: 50%;
  opacity: 0;
}

.wave-act {
  animation: t-wave 599ms cubic-bezier(0.77, 0.06, 0, 0.99) forwards;
}

@keyframes t-wave {
  0% {
    width: 50px;
    height: 50px;
    opacity: 0;
  }
  15% {
    opacity: 1;
  }
  20% {
    width: 40px;
    height: 40px;
  }
  50% {
    opacity: 0.9;
  }
  80% {
    opacity: 0;
  }
  100% {
    opacity: 0;
    width: 140px;
    height: 140px;
  }
}

3. Load the needed jQuery, jquery.transit, and jquery.bez libraries in the document.

<script src="/path/to/cdn/jquery.min.js"></script>
<script src="/path/to/cdn/jquery.transit.min.js"></script>
<script src="/path/to/cdn/jquery.bez.js"></script>

4. The JavaScript (jQuery script) to enable the button selection interaction.

// Variables
var btnSz = 200;
var c = 0;
var bezierEasing = 'cubic-bezier(.69,-0.49,0,1)';
var t1 = 299;
var t2 = 1198;

var bZ2 = 'cubic-bezier(.46,.56,0,.88)'

$('#mainWrap').on('click', function() {
  c++;
  console.log(c);
  
  // Lock
  $('.lock').addClass('lock-on');
  setTimeout(function() {
    $('.lock').removeClass('lock-on');
  }, 1200);
  
  // Wave
  $('.wave').addClass('wave-act');
  setTimeout(function() {
    $('.wave').removeClass('wave-act');
  }, 1000);

  // Move Button
  setTimeout(function() {
    $('#btn').transition({
      x: '+=10px'
    }, 289, bZ2, function() {
      $('#btn').transition({
        x: '0px'
      }, 289, bZ2);
    }); 
  }, 399);


  // Move Content
  setTimeout(function() {
    if (c <= 2) {
      $('#content').transition({
        x: '+=220px'
      }, t1, bezierEasing, function() {
        $('#content').transition({
          x: '-=20'
        }, 699, 'cubic-bezier(.25,.49,.2,1)');
      });

    } else if (c == 3) {
      $('#content').transition({
        x: '+=220px'
      }, t1, bezierEasing, function() {
        $('#content').transition({
          x: '-=20'
        }, 699, 'cubic-bezier(.25,.49,.2,1)');
      });
      setTimeout(function() {
        $('.cnt-1').css('order', '4');
        $('#content').transition({
          x: '0'
        }, 0);
      }, t2);
    } else if (c == 4) {
      $('#content').transition({
        x: '+=220px'
      }, t1, bezierEasing, function() {
        $('#content').transition({
          x: '-=20'
        }, 699, 'cubic-bezier(.25,.49,.2,1)');
      });
      setTimeout(function() {
        $('#content').transition({
          x: '0'
        }, 0);
        $('.cnt-1').css('order', '0');
      }, t2);
      c = 0;
    } 
  }, 399)
});

This awesome jQuery plugin is developed by coswise. For more Advanced Usages, please check the demo page or visit the official website.