如何使用 CSS 创建一个带有渐变颜色的 3D 长方体
How to create a 3D cuboid with gradient color in it with CSS
我对HTML、CSS有基本的了解。我想用这 3 个 3D 长方体创建一个 HTML 页面
上图中的 3D 长方体对我来说看起来很复杂。那么有人可以建议如何使用 HTML 和 CSS
创建这个 3D 长方体吗
为了创建第一个长方体,我试过这个:
<div class="box1">
<div>step 1</div>
<div>Your Title</div>
<div></div>
</div>
我在 main 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);
}
但是无法对齐长方体底部
你好,我只是做了一个小例子,让你知道如何在 css html 中使用透视。
https://jsfiddle.net/ty820kbh/1
您可以更改 CSS 中每个面的宽度和高度(保持连贯)并添加所需的样式,然后您可以修改 .wrapper
的视角以在视图中显示您的长方体你愿意。
您可以通过透视和变换来创建这样的形状。
这是第二个框的示例:
.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>
对于第一个和第三个,您可以考虑使用伪元素来获得第三个面,并添加一些 skew
变换以获得完美的形状。
这是第三个框的示例
.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有基本的了解。我想用这 3 个 3D 长方体创建一个 HTML 页面
为了创建第一个长方体,我试过这个:
<div class="box1">
<div>step 1</div>
<div>Your Title</div>
<div></div>
</div>
我在 main 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);
}
但是无法对齐长方体底部
你好,我只是做了一个小例子,让你知道如何在 css html 中使用透视。
https://jsfiddle.net/ty820kbh/1
您可以更改 CSS 中每个面的宽度和高度(保持连贯)并添加所需的样式,然后您可以修改 .wrapper
的视角以在视图中显示您的长方体你愿意。
您可以通过透视和变换来创建这样的形状。
这是第二个框的示例:
.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>
对于第一个和第三个,您可以考虑使用伪元素来获得第三个面,并添加一些 skew
变换以获得完美的形状。
这是第三个框的示例
.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>