September 15, 2022

Pie Menu Material Design With jQuery and CSS3

Pie menu is a Google Material Design-style navigation button that expands to a semi-circular/circular/half-circle menu with submenus when clicked or tapped, created with jQuery and CSS3 transitions and transitions.

material design menu, material dropdown menu, material ui dropdown menu example, dropdown material design, material dropdown android, material ui charts

How to make use of it:

1. Include Font Awesome Icon Font for navigation icons.

<link href="//netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">

2. Create radial navigation with submenus using the included HTML.

<nav class="radialnav">
  <a href="#" class="ellipsis"><i class="fa fa-bars"></i></a>
  <ul class="menu">
    <li data-submenu="home"><a href="#"><i class="fa fa-home"></i></a></li>
    <li><a href="#"><i class="fa fa-database"></i></a></li>
    <li><a href="#"><i class="fa fa-desktop"></i></a></li>
    <li><a href="#"><i class="fa fa-cubes"></i></a></li>
    <li><a href="#"><i class="fa fa-envelope"></i></a></li>
  </ul>
  <ul data-submenuId="home" class="submenu">
    <li><a href="#"><i class="fa fa-user"></i></a></li>
    <li><a href="#"><i class="fa fa-users"></i></a></li>
    <li><a href="#"><i class="fa fa-car"></i></a></li>
    <li><a href="#"><i class="fa fa-save"></i></a></li>
    <li><a href="#"><i class="fa fa-plus"></i></a></li>
  </ul>
  <ul data-submenuId="database" class="submenu">
    <li><a href="#"><i class="fa fa-user"></i></a></li>
    <li><a href="#"><i class="fa fa-users"></i></a></li>
    <li><a href="#"><i class="fa fa-car"></i></a></li>
    <li><a href="#"><i class="fa fa-save"></i></a></li>
    <li><a href="#"><i class="fa fa-plus"></i></a></li>
  </ul>
</nav>

3. Basic CSS/CSS3 Styles for Radial Navigation.

.radialnav {
  position: fixed;
  bottom: 6%;
  right: 9%;
  display: block;
  width: 26em;
  height: 26em;
  font: 500 14px/14px arial normal;
}
.radialnav .ellipsis {
  position: absolute;
  right: 40%;
  bottom: 0;
  z-index: 2;
  width: 60px;
  height: 60px;
  border-radius: 100%;
  background: #2980b9;
  color: white;
  text-align: center;
  box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.44);
  -webkit-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}
.radialnav .ellipsis i {
  position: absolute;
  top: 50%;
  left: 50%;
  margin: -7px 0 0 -7px;
}
.radialnav .ellipsis:active, .radialnav .ellipsis:hover {
  box-shadow: 0px 4px 7px 0px rgba(0, 0, 0, 0.44);
  background: #2e8ece;
}
.radialnav a {
  color: white;
  text-decoration: none;
}
.radialnav.active .ellipsis {
  box-shadow: 0px 4px 7px 0px rgba(0, 0, 0, 0.44);
  background: #2e8ece;
}
.radialnav.active .menu {
  pointer-events: auto;
  -webkit-transform: scale(1);
  -moz-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
}

.menu, .submenu {
  position: absolute;
  top: 50%;
  right: 8%;
  z-index: 0;
  width: 300px;
  height: 300px;
  -webkit-transform: scale(0.1);
  -ms-transform: scale(0.1);
  -moz-transform: scale(0.1);
  transform: scale(0.1);
  pointer-events: none;
  -webkit-transition: all .15s ease;
  -moz-transition: all .15s ease;
  transition: all .15s ease;
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box;
  box-sizing: content-box;
}
.menu > li:nth-of-type(1), .submenu > li:nth-of-type(1) {
  -moz-transform: rotate(0deg) skew(50deg);
  -ms-transform: rotate(0deg) skew(50deg);
  -webkit-transform: rotate(0deg) skew(50deg);
  transform: rotate(0deg) skew(50deg);
}
.menu > li:nth-of-type(2), .submenu > li:nth-of-type(2) {
  -moz-transform: rotate(35deg) skew(50deg);
  -ms-transform: rotate(35deg) skew(50deg);
  -webkit-transform: rotate(35deg) skew(50deg);
  transform: rotate(35deg) skew(50deg);
}
.menu > li:nth-of-type(2) > a, .submenu > li:nth-of-type(2) > a {
  background-color: #4aa3df;
}
.menu > li:nth-of-type(3), .submenu > li:nth-of-type(3) {
  -moz-transform: rotate(70deg) skew(50deg);
  -ms-transform: rotate(70deg) skew(50deg);
  -webkit-transform: rotate(70deg) skew(50deg);
  transform: rotate(70deg) skew(50deg);
}
.menu > li:nth-of-type(4), .submenu > li:nth-of-type(4) {
  -moz-transform: rotate(105deg) skew(50deg);
  -ms-transform: rotate(105deg) skew(50deg);
  -webkit-transform: rotate(105deg) skew(50deg);
  transform: rotate(105deg) skew(50deg);
}
.menu > li:nth-of-type(4) > a, .submenu > li:nth-of-type(4) > a {
  background-color: #4aa3df;
}
.menu > li:nth-of-type(5), .submenu > li:nth-of-type(5) {
  -moz-transform: rotate(140deg) skew(50deg);
  -ms-transform: rotate(140deg) skew(50deg);
  -webkit-transform: rotate(140deg) skew(50deg);
  transform: rotate(140deg) skew(50deg);
}
.menu > li, .submenu > li {
  position: absolute;
  bottom: 50%;
  right: 50%;
  font-size: 1.5em;
  width: 10em;
  height: 10em;
  -webkit-transform-origin: 100% 100%;
  -moz-transform-origin: 100% 100%;
  -ms-transform-origin: 100% 100%;
  transform-origin: 100% 100%;
  overflow: hidden;
  margin-top: -1.3em;
  margin-left: -10em;
  -webkit-transition: all .3s ease;
  -moz-transition: all .3s ease;
  transition: all 0.3s ease;
}
.menu > li a, .submenu > li a {
  position: absolute;
  bottom: -7.25em;
  right: -7.25em;
  display: block;
  height: 14.5em;
  width: 14.5em;
  border-radius: 50%;
  text-decoration: none;
  color: #fff;
  padding-top: 0em;
  text-align: center;
  font-size: 1.18em;
  -webkit-transform: skew(-50deg) rotate(-70deg) scale(1);
  -ms-transform: skew(-50deg) rotate(-70deg) scale(1);
  -moz-transform: skew(-50deg) rotate(-70deg) scale(1);
  transform: skew(-50deg) rotate(-70deg) scale(1);
  -webkit-backface-visibility: hidden;
  -webkit-transition: opacity 0.3s, color 0.3s;
  -moz-transition: opacity 0.3s, color 0.3s;
  transition: opacity 0.3s, color 0.3s;
  background-color: #3498db;
}
.menu > li a i, .submenu > li a i {
  padding: 20px 15px 0 0;
}
.menu > li a:active, .menu > li a:hover, .submenu > li a:active, .submenu > li a:hover {
  background-color: #8bc4ea;
}

4. CSS/CSS3 Styles Required for Submenus.

.submenu {
  position: absolute;
  z-index: 1;
  -moz-box-sizing: content-box;
  -webkit-box-sizing: content-box;
  box-sizing: content-box;
}
.submenu > li:nth-of-type(1) {
  -moz-transform: rotate(0deg) skew(50deg);
  -ms-transform: rotate(0deg) skew(50deg);
  -webkit-transform: rotate(0deg) skew(50deg);
  transform: rotate(0deg) skew(50deg);
}
.submenu > li:nth-of-type(2) {
  -moz-transform: rotate(35deg) skew(50deg);
  -ms-transform: rotate(35deg) skew(50deg);
  -webkit-transform: rotate(35deg) skew(50deg);
  transform: rotate(35deg) skew(50deg);
}
.submenu > li:nth-of-type(2) > a {
  background-color: #2cc36b;
}
.submenu > li:nth-of-type(3) {
  -moz-transform: rotate(70deg) skew(50deg);
  -ms-transform: rotate(70deg) skew(50deg);
  -webkit-transform: rotate(70deg) skew(50deg);
  transform: rotate(70deg) skew(50deg);
}
.submenu > li:nth-of-type(4) {
  -moz-transform: rotate(105deg) skew(50deg);
  -ms-transform: rotate(105deg) skew(50deg);
  -webkit-transform: rotate(105deg) skew(50deg);
  transform: rotate(105deg) skew(50deg);
}
.submenu > li:nth-of-type(4) > a {
  background-color: #2cc36b;
}
.submenu > li:nth-of-type(5) {
  -moz-transform: rotate(140deg) skew(50deg);
  -ms-transform: rotate(140deg) skew(50deg);
  -webkit-transform: rotate(140deg) skew(50deg);
  transform: rotate(140deg) skew(50deg);
}
.submenu > li {
  background: red;
  width: 6.5em;
  height: 4.1em;
  border-top-left-radius: 100%;
  border-top-right-radius: 0;
}
.submenu > li a {
  height: 13.5em;
  width: 13em;
  background-color: #27ae60;
}
.submenu > li a i {
  padding: 30px 0 0 0;
}
.submenu > li a:active, .submenu > li a:hover {
  background-color: #60db94;
}
.submenu.active {
  pointer-events: auto;
  -webkit-transform: scale(1);
  -moz-transform: scale(1);
  -ms-transform: scale(1);
  transform: scale(1);
}

5. JavaScript to enable radial navigation.

var thisButton,
    thisMenuItem,
    thisSubmenuItem,
    pieMenu = $('.radialnav'),
    menuItems  = $('.menu li'),
    submenuItems = $('.submenu'),
    submenuId = '';

function openMenu (thisButton) {
  if(!thisButton.hasClass('active'))
    thisButton.addClass('active');
  else
    $('.radialnav, .submenu').removeClass('active');
}

/* On click of the ellipsis */
$('.ellipsis').click(function (event) {
  event.preventDefault();
  
  openMenu($('.radialnav'));
});

menuItems.find('a').each(function (index) {
  thisMenuItem = $(this);
  
  thisMenuItem.hover(function () {
    // Hover over
    submenuId = menuItems.eq(index).attr('data-submenu');
    $('.submenu[data-submenuId="'+submenuId+'"]').addClass('active');
  }, function () {
    // Hover out
    // submenuItem.removeClass('active');
  });
});

submenuItems.find('a').hover(function () {
  console.log(1);
}, function () {
  console.log(0);
  submenuItems.hover(function () {
    console.log(2);
  }, function () {
    console.log(3);
  })
})

Material Design Styled Pie Menu with jQuery, material design pie menu Plugin/Github, material design select dropdown


See Demo And Download

Official Website(wbarahona): Click Here

This superior jQuery/javascript plugin is developed by wbarahona. For extra Advanced usage, please go to the official website.

Share

You may also like...

Leave a Reply

Your email address will not be published.