大致思路:

1、首先建立出一个圆作为主菜单

2、其次实现出十个子菜单元素,并且给它们绝对定位和一个圆心(transform-origin: 100px 100px;),以保证它们是围绕着这个圆心出现的

3、为每个元素设立动效实践,当鼠标悬停时,该li元素旋转角度

<div class="container">
  <div class="navbar">主菜单 <ul class="menu">
      <li><a class="fa fa-facebook" href=""></a></li>
      <li><a class="fa fa-google-plus" href=""></a></li>
      <li><a class="fa fa-twitter" href=""></a></li>
      <li><a class="fa fa-linkedin" href=""></a></li>
      <li><a class="fa fa-pinterest" href=""></a></li>
      <li><a class="fa fa-rss" href=""></a></li>
      <li><a class="fa fa-instagram" href=""></a></li>
      <li><a class="fa fa-skype" href=""></a></li>
      <li><a class="fa fa-github" href=""></a></li>
    </ul>
  </div>
</div>

css:

* {
  margin: 0;
  padding: 0;
}

body {
  background-color: #262626;
}

.container {
  padding: 2em 0;
  transform: translate3d(0, 0, 0);
}

.navbar {
  width: 150px;
  height: 150px;
  line-height: 150px;
  background-color: #fff;
  border-radius: 50%;
  margin: 70px auto;
  /* 相对定位 */
  position: relative;
  cursor: pointer;
  text-align: center;
  font-size: 1.75em;
  font-weight: bold;
  color: #383838;
  /* transition: 0.24s 0.2s; */
  transition-property: initial;
  transition-duration: 0.24s;
  transition-timing-function: initial;
  transition-delay: 0.2s;
}

.navbar:hover {
  background: rgba(41, 193, 219, 0.75);
  transform: scale(0.8);
}

.navbar .menu {
  list-style: none;
  margin: 0;
  padding: 0;
  border: 150px solid transparent;
  border-radius: 50%;
  cursor: default;
  position: absolute;
  top: -75px;
  left: -75px;
  z-index: -1;
  transform: scale(0);
  transition: transform 1.4s 0.07s;
}

.navbar:hover .menu {
  transition: transform 0.4s 0.08s, z-index 0s 0.5s;
  transform: scale(1);
  z-index: 1;
}

.navbar .menu li {
  /* 绝对定位 */
  position: absolute;
  top: -100px;
  left: -100px;
  transform-origin: 100px 100px;
  transition: all 0.5s 0.1s;
}

.navbar:hover .menu li {
  transition: all 0.6s;
}

.navbar .menu li a {
  display: inline-block;
  width: 45px;
  height: 45px;
  line-height: 45px;
  background-color: #fff;
  border-radius: 50%;
  color: #99b977;
  text-decoration: none;
  position: absolute;
  transform: all 0.4s ease 0s;
  transition: 0.6s;
}

.navbar .menu li a:hover {
  background-color: #2860f8;
  color: #fff;
}

.navbar:hover .menu li:nth-child(1) {
  transition-delay: 0.02s;
  transform: rotate(85deg);
}

.navbar:hover .menu li:nth-child(2) {
  transition-delay: 0.04s;
  transform: rotate(125deg);
}

.navbar:hover .menu li:nth-child(3) {
  transition-delay: 0.06s;
  transform: rotate(165deg);
}

.navbar:hover .menu li:nth-child(4) {
  transition-delay: 0.08s;
  transform: rotate(205deg);
}

.navbar:hover .menu li:nth-child(5) {
  transition-delay: 0.1s;
  transform: rotate(245deg);
}

.navbar:hover .menu li:nth-child(6) {
  transition-delay: 0.12s;
  transform: rotate(285deg);
}

.navbar:hover .menu li:nth-child(7) {
  transition-delay: 0.14s;
  transform: rotate(325deg);
}

.navbar:hover .menu li:nth-child(8) {
  transition-delay: 0.16s;
  transform: rotate(365deg);
}

.navbar:hover .menu li:nth-child(9) {
  transition-delay: 0.18s;
  transform: rotate(405deg);
}

.navbar:hover .menu li:nth-child(1) a {
  transition-delay: 0.04s;
  transform: rotate(635deg);
}

.navbar:hover .menu li:nth-child(2) a {
  transition-delay: 0.08s;
  transform: rotate(595deg);
}

.navbar:hover .menu li:nth-child(3) a {
  transition-delay: 0.12s;
  transform: rotate(555deg);
}

.navbar:hover .menu li:nth-child(4) a {
  transition-delay: 0.16s;
  transform: rotate(515deg);
}

.navbar:hover .menu li:nth-child(5) a {
  transition-delay: 0.2s;
  transform: rotate(475deg);
}

.navbar:hover .menu li:nth-child(6) a {
  transition-delay: 0.24s;
  transform: rotate(435deg);
}

.navbar:hover .menu li:nth-child(7) a {
  transition-delay: 0.28s;
  transform: rotate(395deg);
}

.navbar:hover .menu li:nth-child(8) a {
  transition-delay: 0.32s;
  transform: rotate(355deg);
}

.navbar:hover .menu li:nth-child(9) a {
  transition-delay: 0.36s;
  transform: rotate(315deg);
}

代码演示:

202103041614848755777519