html - 如何使用 CSS 创建一个带有渐变颜色的 3D 长方体

标签 html css css-transforms css-shapes

我有 HTML、CSS 的基本知识。我想用这些 3D 长方体创建一个 HTML 页面,如下所示

enter image description here 上图中的 3D 长方体对我来说看起来很复杂。那么有人可以建议如何使用 HTML 和 CSS 创建这个 3D 长方体

为了创建第一个长方体,我尝试了以下方法:

<div class="box1">
      <div>step 1</div>
      <div>Your Title</div>
      <div></div>                                                
</div>

我在主 div 内添加了 3 个 div 来表示长方体的面。下面是CSS:

.box1 {
  margin:50px;
  display:flex;
  width:300px;
  height:100px;
  perspective: 300px;
  font-size:30px;
  line-height:100px;
  color:#000;
  text-align:center;
  font-family:arial;
}
.box1 > div:first-child{
  width:30%;
  background:linear-gradient(to right,#008ec2b0,#085c6d);
  transform: rotateY(-30deg);
    transform-origin: right;
}
.box1 > div:last-child {
  width:60%;
  background:linear-gradient(to right,,#15a5c4,#4dca75);
  transform: rotateY(-30deg);
  transform-origin: right;
}

.box1 > div:not(:first-child):not(:last-child) {
  width:60%;
  background:linear-gradient(to right,#008ec2b0,#085c6d);
  border-left:1px solid #fff;
  transform-origin: left;
    transform: rotateY(180deg);
} 

但无法对齐长方体的底部

最佳答案

您可以使用透视和变换来创建此类形状。

这是第二个框的示例:

.box {
  margin:50px;
  display:flex;
  width:300px;
  height:100px;
  perspective: 300px;
  font-size:30px;
  line-height:100px;
  color:#fff;
  text-align:center;
  font-family:arial;
  
}
.box > div:first-child {
  width:60%;
  background:linear-gradient(to right,#f57300,orange);
  transform: rotateY(-30deg);
    transform-origin: right;
    
}
.box > div:last-child {
  width:40%;
  background:linear-gradient(to right,orange,#e53800);
  border-left:1px solid #fff;
  transform-origin: left;
    transform: rotateY(30deg);
}
<div class="box">
<div>Your Title</div>
<div>30</div>
</div>

对于第一个和第三个,您可以考虑使用伪元素来获得第三个面,并添加一些倾斜变换以获得完美的形状。

这是第三个框的示例

.box {
  margin:50px;
  display:flex;
  width:300px;
  height:100px;
  perspective: 300px;
  font-size:30px;
  line-height:100px;
  color:#fff;
  text-align:center;
  font-family:arial;
  position:relative;
  
}
.box > div:first-child {
  width:60%;
  background:linear-gradient(to right,#f57300,orange);
  transform: rotateY(-30deg) skewY(9deg);
    transform-origin: right;
    
}
.box > div:last-child {
  width:40%;
  background:linear-gradient(to right,orange,#e53800);
  border-left:1px solid #fff;
  transform-origin: left;
    transform: rotateY(30deg) skewY(-9deg);
}

.box:before {
    content: "";
    position: absolute;
    top: -27px;
    width: 41%;
    left: 50px;
    height: 16px;
    background: linear-gradient(to right,orange,#e53800);
    transform: rotate(4.6deg) skewX(-80deg);
    transform-origin: left bottom;
}
<div class="box">
<div>Your Title</div>
<div>30</div>
</div>

这是第一个示例

.box {
  margin:50px;
  display:flex;
  width:300px;
  height:100px;
  perspective: 300px;
  font-size:30px;
  line-height:100px;
  color:#fff;
  text-align:center;
  font-family:arial;
  position:relative;
  
}
.box > div:first-child {
  width:60%;
  background:linear-gradient(to right,#f57300,orange);
  transform: rotateY(-30deg) skewY(-9deg);
    transform-origin: right;
    
}
.box > div:last-child {
  width:40%;
  background:linear-gradient(to right,orange,#e53800);
  border-left:1px solid #fff;
  transform-origin: left;
    transform: rotateY(30deg) skewY(9deg);
}

.box:before {
        content: "";
    position: absolute;
    top: 91px;
    width: 29%;
    left: 50px;
    height: 22px;
    background: linear-gradient(to right,orange,#e53800);
    transform: rotate(4.6deg) skewX(-80deg);
    transform-origin: left bottom;
}
<div class="box">
<div>Your Title</div>
<div>30</div>
</div>

关于html - 如何使用 CSS 创建一个带有渐变颜色的 3D 长方体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50772429/

相关文章:

php - 如何制作一个表格,连续打印数据库中所有相同的列?

html - 如何布局一系列跨度,然后是换行符,然后是按钮?

javascript - localStorage setItem 不适用于 ipad

javascript - 在一个 html 文件中使用多个 CSS 样式表

html - CSS Pie 和 IE 元标记

javascript - ng-click 不适用于我的任何 div

javascript - 位置 :Absolute Not Respecting It's Elders

css - 使用 transform on scroll 将元素位置固定到父级

SVG 元素 IE9+ 上的 CSS 转换

CSS 转换不适用于内联元素