如何创建圆形旋转导航栏

时间:2016-09-25 20:45:10

标签: css html5 css3 canvas svg

我在创建可以在CSS3和HTML中旋转的导航栏时遇到问题。我怎样才能做到这一点?下面是旧游戏的想法图片。我想要它使用的相同动画类型。当它在活动圆圈上时,将显示该页面。当您向左和向右移动时,页面将会改变。有没有办法实现这个目标?如何在CSS3和HTML5中创建它。

我添加了一个代码片段,其中包含了我迄今为止所做的基本想法。我需要两个按钮,允许动画向左或向右移动而不是1,2,3,4。

这个想法来自SliderDock。适用于Windows和MacOS的底座。 如果我没有弄错的话,CSS3应该能够完成这项任务。

http://img05.deviantart.net/d13f/i/2011/139/7/4/altimit_mine_os_by_tenshi_no_chi-d3gowsq.png

* {
  margin: 0;
  padding: 0;
  -webkit-backface-visibility: hidden;
}
/*HEADER*/

.header {
  height: 25px;
  background: #222;
  color: #eee;
  text-align: center;
  font: 10px/25px Helvetica, Verdana, sans-serif;
}
.header a {
  color: #999;
}
/*WRAPPER*/

.wrapper {
  position: relative;
  overflow: hidden;
  margin: 20px auto;
  width: 370px;
}
.menu a {
  margin-right: -4px;
  padding: 10px 30px;
  width: 50px;
  color: #333;
  text-decoration: none;
  font: 15px/25px Helvetica, Arial, sans-serif;
}
.menu a:hover {
  background: #eee;
}
/*INNER CIRCLE*/

.wrapper:before {
  content: "Menu";
  text-align: center;
  font: 30px/120px Georgia, Times, serif;
  color: #black;
  position: absolute;
  top: 140px;
  left: 110px;
  z-index: 10;
  width: 130px;
  height: 130px;
  border-radius: 50%;
  background: #fff;
  -webkit-box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.3);
  box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.3);
}
/*MAIN CIRCLE*/

.circle {
  position: relative;
  margin-top: 30px;
  margin-bottom: 20px;
  margin-left: 25px;
  width: 300px;
  height: 300px;
  border-radius: 50%;
  background: #white;
  box-shadow: inset 0px 0px 30px rgba(0, 0, 0, 0.3);
  -webkit-box-shadow: inset 0px 0px 30px rgba(0, 0, 0, 0.3);
  -webkit-transition: all 0.5s ease;
  -moz-transition: all 0.5s ease;
  -ms-transition: all 0.5s ease;
  -o-transition: all 0.5s ease;
  transition: all 0.5s ease;
}
/*LITTLE CIRCLES*/

.circle li {
  position: absolute;
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background: white;
  list-style-type: none;
  text-align: center;
  font: 20px/50px Helvetica, Arial, sans-serif;
  top: 0;
  left: 0;
}
.circle li:nth-child(1) {
  top: 15px;
  left: 125px;
}
.circle li:nth-child(2) {
  top: 125px;
  left: 235px;
  -webkit-transform: rotate(90deg);
  -moz-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  -o-transform: rotate(90deg);
  transform: rotate(90deg);
}
.circle li:nth-child(3) {
  top: 235px;
  left: 125px;
  -webkit-transform: rotate(180deg);
  -moz-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  -o-transform: rotate(180deg);
  transform: rotate(180deg);
}
.circle li:nth-child(4) {
  top: 125px;
  left: 15px;
  -webkit-transform: rotate(270deg);
  -moz-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  -o-transform: rotate(270deg);
  transform: rotate(270deg);
}
/*HOVER STATES*/

.menu > .one:hover ~ .circle {
  -webkit-transform: rotate(0deg);
  -moz-transform: rotate(0deg);
  -ms-transform: rotate(0deg);
  -o-transform: rotate(0deg);
  transform: rotate(0deg);
}
.menu > .two:hover ~ .circle {
  -webkit-transform: rotate(-90deg);
  -moz-transform: rotate(-90deg);
  -ms-transform: rotate(-90deg);
  -o-transform: rotate(-90deg);
  transform: rotate(-90deg);
}
.menu > .three:hover ~ .circle {
  -webkit-transform: rotate(-180deg);
  -moz-transform: rotate(-180deg);
  -ms-transform: rotate(-180deg);
  -o-transform: rotate(-180deg);
  transform: rotate(-180deg);
}
.menu > .four:hover ~ .circle {
  -webkit-transform: rotate(-270deg);
  -moz-transform: rotate(-270deg);
  -ms-transform: rotate(-270deg);
  -o-transform: rotate(-270deg);
  transform: rotate(-270deg);
}
<!DOCTYPE html>
<html>

<head>
  <meta charset=utf-8 />
  <meta name="description" content="description">

  <title>Nav Menu</title>

  <link rel="stylesheet" type="text/css" media="screen" href="style.css" />

</head>

<body>

  <div class="header"></div>

  <div class="wrapper">

    <div class="menu">
      <a href="#" class="one">1</a>
      <a href="#" class="two">2</a>
      <a href="#" class="three">3</a>
      <a href="#" class="four">4</a>

      <div class="circle">
        <ul>
          <li>Home</li>
          <li>World</li>
          <li>Games</li>
          <li>AboutUs</li>
        </ul>
      </div>

    </div>
  </div>

</body>

</html>

1 个答案:

答案 0 :(得分:0)

  1. 你也可以使用CSS3。为此,请使用动画旋转悬停该数字并旋转菜单图像。
  2. 你可以通过使用javascript与onmousehover和onmouseleave事件来实现。