javascript - CSS 旋转 Cube UI

标签 javascript html css

我正在尝试创建像立方体一样旋转的 3d 菜单 ui,我正在努力实现 3d 旋转效果。 2 个元素在旋转,但我不知道如何显示 3d 立方体效果。任何关于如何让它像立方体一样旋转的建议

http://jsfiddle.net/dfw3vLag/

    <style>
    body
    {
      background: #333;
      font-family: sans-serif;
      color: #333333;
    }

    ul.list
    {
      list-style-type: none;
      margin: 50px auto;
      padding: 0;
      width: 300px;
    }

    ul.list li
    {
      position: relative;
      height: 40px;
      line-height: 40px;
      margin-bottom: 2px;
    }

    ul.list li div.front
    {
        position:absolute;
        transform: rotateX( 0deg );
        -webkit-transform-style: preserve-3d;
        z-index:2;
        transform-origin: top right;
        background:#FC0; 
        width:90%; 
        height:100%; 
        padding: 0 10px;
        backface-visibility: hidden;
        transition: transform 2s linear 0s;
    }

    ul.list li div.back
    {
        position:absolute;
        transform:  rotateY( -90deg );
        -webkit-transform-style: preserve-3d;
        z-index:1;
        transform-origin: top left;
        background:#FC0345; 
        width:90%; 
        height:100%; 
        padding: 0 10px;
        backface-visibility: hidden;
        transition: transform 2s linear 0s;
    }

    ul.list li:hover
    {
      cursor: pointer;
    }

    ul.list li:hover div.front
    {
      transform:  rotateY( 90deg );
    }
    ul.list li:hover div.back
    {
      transform:   rotateY( 0deg );
    }

    </style>


    <ul class="list">
      <li>
        <div class="back"></div>
        <div class="front">list A</div>
      </li>
      <li>
        <div class="back"></div>
        <div class="front">list B</div>
      </li>
      <li>
        <div class="back"></div>
        <div class="front">list C</div>
      </li>
      <li>
        <div class="back"></div>
        <div class="front">list D</div>
      </li>
    </ul>

最佳答案

不确定您期望它看起来像什么,但在 here 的帮助下,我能够将您的 fiddle 更新为 this .

li 本身在 hover 上旋转,而不是分别在 div.frontdiv.back 上旋转——它们'最初只是定位和旋转。

在 Chrome v39 上测试。

宽度和填充值导致旋转的脸有点偏离,所以我改变了它们。

body {
  background: #333;
  font-family: sans-serif;
  color: #333333;
}
ul.list {
  list-style-type: none;
  margin: 50px auto;
  padding: 0;
  width: 300px;
}
ul.list li {
  position: relative;
  height: 40px;
  line-height: 40px;
  margin-bottom: 2px;
  transition: transform 1s linear 0s;
  transform-style: preserve-3d;
  transform-origin: left left -145px;
}
ul.list li div.front {
  position: absolute;
  background: #FC0;
  width: 100%;
  height: 100%;
  /* padding: 0 10px; */
  transform: translateZ(145px);
  box-sizing: border-box;
}
ul.list li div.back {
  position: absolute;
  background: #FC0345;
  width: 100%;
  height: 100%;
  /* padding: 0 10px; */
  transform: rotateY(90deg) translateZ(-145px);
}
ul.list li:hover {
  cursor: pointer;
  transform: rotateY(90deg);
}
<body>
  <ul class="list">
    <li>
      <div class="back"></div>
      <div class="front">list A</div>
    </li>
    <li>
      <div class="back"></div>
      <div class="front">list B</div>
    </li>
  </ul>
</body>

关于javascript - CSS 旋转 Cube UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27583393/

相关文章:

css - "clear: both"+ "height: 100%"越过页面底部

javascript - Pick CSS for IE8 可在模拟器中运行但不能直接在 IE8 上运行

javascript - 在overlayImage中应用滤镜的方法在哪里?

javascript - select col2 from TABLE 其中 col1 值是从多个选择下拉列表中选择的

javascript - 如何从嵌套函数中中断 JavaScript for 循环

php - 一页中的三个 HTML 标记

javascript - 如何查找三维数组的索引

html - 为什么这个跨度不继承其父级的填充?

javascript - 如何区分原生 HTMLElement 和创建/自定义的 HTMLElement?

html - CSS 网格,其中一列缩小以适合内容,另一列填充剩余空间