CSS转换和背面问题

时间:2014-11-22 11:12:09

标签: css3

一直坚持这个css问题,尝试寻找答案但得出2个结论。无论是css3浏览器故障还是某个地方,我都写了一些错误的代码。

我目前正在使用本教程的一些变体:http://css3.bradshawenterprises.com/flip/

我要做的是创建一个首先显示为空的菜单,并在翻转时显示翻转变换,然后显示完整的菜单项。正面和背面都包裹在容器中。只有你无法在下面看到的东西是有一个按钮我嵌在正面,背面也有一个ul。我认为他们可能没有必要包括在内。

以下是我目前编写的CSS。非常感谢,如果有人可以帮助清除这一点,我在这里写了一些错误的代码,或者我的浏览器有问题。使用chrome并在检查后有最新版本。版本38.0.2125.122。我还是很新的编码,刚刚完成了codecademy和codeschool html / css课程,所以非常感谢任何指针。谢谢 ! :)

.nav-container {
height: 100px;
width: 62.58692629%;
position: fixed;
display: block;
margin: 0 auto 0 auto;
left: 0;
right: 0;
-webkit-perspective: 1000;
perspective: 1000;
-webkit-z-index: 1;
}
.face {
height: 100px;
width: 100%;
background: url(logro.png) top no-repeat;
background-size: 100% 200px;
background-color: #fff;
margin: 0 auto 0 auto;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
position: absolute;
backface-visibility: hideen;
transition: all 1.0s linear;
transform-style: preserve-3d;
-webkit-backface-visibility: hidden;
-webkit-transition: all 1.0s linear;
-webkit-transform-style: preserve-3d;
}
.nav-container:hover .front.face {
transform: rotateX(180deg);
}
.face.back {
width: 100%;
height: 100px;
margin: 0 auto 0 auto;
display: block;
left: 0;
right: 0;
background-color: #fff;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
background: url(logro.png);
background-size: 100% 200px;
background-position: 0 -200px;
box-sizing: border-box;
transform: rotateX(180deg);
}

下面的html

<nav class="nav-container">
        <div class="face front menu">
            <div class="menu-btn">
                <p>menu</p>
            </div>
        </div>
        <div class="face back menu">
            <ul class="nav-inner">
                <li><p>Item 1</p></li>
                <li><p>Item 2</p></li>
                <li><p>Item 3</p></li>
                <li><p>Item 4</p></li>
                <li><p>Item 5</p></li>
            </ul>
        </div>          
    </nav>

谢谢!

1 个答案:

答案 0 :(得分:1)

正如您所看到的,在您的教程中,转换是在包裹正面和背面的div上运行的,当您只将转换放在正面时。

在纠正这个问题时,一切似乎都能正常运作:

.nav-container {
  height: 100px;
  width: 62.58692629%;
  position: fixed;
  display: block;
  margin: 0 auto 0 auto;
  left: 0;
  right: 0;
  -webkit-perspective: 1000;
  perspective: 1000;
  -webkit-z-index: 1;
  -webkit-transition: all 1.0s linear;
  -webkit-transform-style: preserve-3d;
  transition: all 1.0s linear;
  transform-style: preserve-3d;
}
.face {
  height: 100px;
  width: 100%;
  background: url(logro.png) top no-repeat;
  background-size: 100% 200px;
  background-color: #fff;
  margin: 0 auto 0 auto;
  border-bottom-left-radius: 10px;
  border-bottom-right-radius: 10px;
  position: absolute;
  backface-visibility: hideen;
  transform-style: preserve-3d;
  -webkit-backface-visibility: hidden;
}
.nav-container:hover {
  transform: rotateX(180deg);
}
.face.back {
  width: 100%;
  height: 100px;
  margin: 0 auto 0 auto;
  display: block;
  left: 0;
  right: 0;
  background-color: #fff;
  border-bottom-left-radius: 10px;
  border-bottom-right-radius: 10px;
  background: url(logro.png);
  background-size: 100% 200px;
  background-position: 0 -200px;
  box-sizing: border-box;
  transform: rotateX(180deg);
}
<nav class="nav-container">
  <div class="face front menu">
    <div class="menu-btn">
      <p>menu</p>
    </div>
  </div>
  <div class="face back menu">
    <ul class="nav-inner">
      <li>
        <p>Item 1</p>
      </li>
      <li>
        <p>Item 2</p>
      </li>
      <li>
        <p>Item 3</p>
      </li>
      <li>
        <p>Item 4</p>
      </li>
      <li>
        <p>Item 5</p>
      </li>
    </ul>
  </div>
</nav>

PS:当您想要将几个元素设置为单个对象的动画时,我会说最好的解决方案几乎总是将所有元素包装在容器中,并为该容器设置动画。