html - 制作一个立方体填满整个屏幕

标签 html css css-transforms

我想要实现的是像这个网页上的页面转换 - http://ejosue.com/ .

到目前为止,我所做的是创建一个具有悬停效果的立方体,其工作方式与在网站上非常相似。但是,现在我在让立方体填满整个屏幕时遇到了问题(就像在引用的网页上一样)。

这是 JSfiddle - https://jsfiddle.net/definaly/31zr05y7/48/

以及本页的代码

body { font-family: sans-serif; }

.scene {
  width: 200px;
  height: 200px;
}

.cube {
  width: 100%;
  height: 100%;
  position: relative;
  transform-style: preserve-3d;
  transition: transform 1s;
}

.cube:hover{
  animation: pageDown 1.5s linear forwards;
}

@keyframes pageDown{
  25%{
    transform: scale(0.8);
  }
  75%{
    transform: rotateX(90deg);
  }
  100%{
    transform: scale(1);
    transform: rotateX(90deg);
  }
}

.cube__face {
  position: absolute;
  width: 100%;
  height: 100%;
  border: 2px solid black;
  
  /* Optional Styling */
  line-height: 200px;
  font-size: 30px;
  font-weight: bold;
  color: white;
  text-align: center;
}

.cube__face--front  {
  background: hsla(  0, 100%, 50%, 1);
}

.cube__face--bottom {
  background: hsla(300, 100%, 50%, 1);
}



.cube__face--front  {
  transform: rotateY(0deg) translateZ(100px);
}

.cube__face--bottom {
  transform: rotateX(-90deg) translateZ(100px);
  }
<div class="scene">

  <div class="cube">
    <div class="cube__face cube__face--front">entry page</div>
    <div class="cube__face cube__face--bottom">extra page</div>
  </div>
  
</div>

最佳答案

只需将场景元素设为 100vh 并在翻译中考虑 50vh。同时删除宽度以具有默认的全宽:

body { font-family: sans-serif;margin:0; } /* Remove the default margin */

* {
  box-sizing:border-box; /* to make sure there is no overflow*/
}

.scene {
  height: 100vh;
}

.cube {
  height: 100%;
  position: relative;
  transform-style: preserve-3d;
  transition: transform 1s;
}

.cube:hover{
  animation: pageDown 1.5s linear forwards;
}

@keyframes pageDown{
  25%{
    transform: scale(0.8);
  }
  75%{
    transform: rotateX(90deg);
  }
  100%{
    transform: scale(1);
    transform: rotateX(90deg);
  }
}

.cube__face {
  position: absolute;
  width: 100%;
  height: 100%;
  border: 2px solid black;
  
  /* Optional Styling */
  line-height: 200px;
  font-size: 30px;
  font-weight: bold;
  color: white;
  text-align: center;
}

.cube__face--front  {
  background: hsla(  0, 100%, 50%, 1);
}

.cube__face--bottom {
  background: hsla(300, 100%, 50%, 1);
}



.cube__face--front  {
  transform: rotateY(0deg) translateZ(50vh);
}

.cube__face--bottom {
  transform: rotateX(-90deg) translateZ(50vh);
  }
<div class="scene">

  <div class="cube">
    <div class="cube__face cube__face--front">entry page</div>
    <div class="cube__face cube__face--bottom">extra page</div>
  </div>
  
</div>

关于html - 制作一个立方体填满整个屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57064885/

相关文章:

CSS 改变性能

css - 特定于浏览器的前缀与转换时的 CSS 转换

css - RotateX 停止并 overflow hidden

javascript - 使下拉菜单在单击 JavaScript 时消失

html - Border 和 Baseline 没有对齐

javascript - Jquery 不允许在日期选择器上选择以前的日期

html - 如何在响应式跨浏览器安全的图像网格上精确弹出气球?

html - 如何在不使用 Javascript 的情况下跟踪有多少用户点击了我网站上的特定按钮?

HTML5 的新 &lt;header&gt; 元素

html - 在固定高度的容器中垂直居中元素