0
点赞
收藏
分享

微信扫一扫

CSS-3D转换模块

2D 和 3D

  • 2D 就是一个平面, 只有宽度和高度, 没有厚度
  • 3D 就是一个立体, 有宽度和高度, 还有厚度
  • 默认情况下所有的元素都是呈 2D 展现的

让某个元素呈 3D 展现

和透视属性一样, 想看到某个元素的 3d 效果, 只需要给他的父元素添加一个 ​​transform-style​​​ 属性, 然后设置为 ​​preserve-3d​​ 即可

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>3D 转换模块</title>
<style>
* {
margin: 0;
padding: 0;
}

.father {
width: 200px;
height: 200px;
background-color: red;
border: 1px solid #000;
margin: 100px auto;
perspective: 500px;
transform-style: preserve-3d;
transform: rotateY(0deg);
}

.son {
width: 100px;
height: 100px;
background-color: blue;
border: 1px solid #000;
margin: 0 auto;
margin-top: 50px;
transform: rotateY(45deg);
}
</style>
</head>
<body>
<div class="father">
<div class="son"></div>
</div>
</body>
</html>

正方体

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>3D转换模块-正方体</title>
<style>
* {
margin: 0;
padding: 0;
}

ul {
width: 200px;
height: 200px;
border: 1px solid #000;
box-sizing: border-box;
margin: 100px auto;
position: relative;
transform: rotateY(0deg) rotateX(0deg);
transform-style: preserve-3d;
}

ul li {
list-style: none;
width: 200px;
height: 200px;
font-size: 60px;
text-align: center;
line-height: 200px;
position: absolute;
left: 0;
top: 0;
}

ul li:nth-child(1) {
background-color: red;
transform: translateX(-100px) rotateY(90deg);
}

ul li:nth-child(2) {
background-color: green;
transform: translateX(100px) rotateY(90deg);
}

ul li:nth-child(3) {
background-color: blue;
transform: translateY(-100px) rotateX(90deg);
}

ul li:nth-child(4) {
background-color: yellow;
transform: translateY(100px) rotateX(90deg);
}

ul li:nth-child(5) {
background-color: purple;
transform: translateZ(-100px);
}

ul li:nth-child(6) {
background-color: pink;
transform: translateZ(100px);
}
</style>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</body>
</html>

正方体终极

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>3D转换模块-正方体终极</title>
<style>
* {
margin: 0;
padding: 0;
}

ul {
width: 200px;
height: 200px;
border: 1px solid #000;
box-sizing: border-box;
margin: 100px auto;
position: relative;
transform: rotateY(0deg) rotateX(0deg);
transform-style: preserve-3d;
}

ul li {
list-style: none;
width: 200px;
height: 200px;
font-size: 60px;
text-align: center;
line-height: 200px;
position: absolute;
left: 0;
top: 0;
}

ul li:nth-child(1) {
background-color: red;
transform: rotateX(90deg) translateZ(100px);
}

ul li:nth-child(2) {
background-color: green;
transform: rotateX(180deg) translateZ(100px);
}

ul li:nth-child(3) {
background-color: blue;
transform: rotateX(270deg) translateZ(100px);
}

ul li:nth-child(4) {
background-color: yellow;
transform: rotateX(360deg) translateZ(100px);
}

ul li:nth-child(5) {
background-color: purple;
transform: translateX(-100px) rotateY(90deg);
}

ul li:nth-child(6) {
background-color: pink;
transform: translateX(100px) rotateY(90deg);
}
</style>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</body>
</html>

长方体

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>3D转换模块-长方体</title>
<style>
* {
margin: 0;
padding: 0;
}

ul {
width: 200px;
height: 200px;
border: 1px solid #000;
box-sizing: border-box;
margin: 100px auto;
position: relative;
transform: rotateY(0deg) rotateX(0deg);
transform-style: preserve-3d;
}

ul li {
list-style: none;
width: 200px;
height: 200px;
font-size: 60px;
text-align: center;
line-height: 200px;
position: absolute;
left: 0;
top: 0;
}

ul li:nth-child(1) {
background-color: red;
transform: rotateX(90deg) translateZ(100px) scale(2, 1);
}

ul li:nth-child(2) {
background-color: green;
transform: rotateX(180deg) translateZ(100px) scale(2, 1);
}

ul li:nth-child(3) {
background-color: blue;
transform: rotateX(270deg) translateZ(100px) scale(2, 1);
}

ul li:nth-child(4) {
background-color: yellow;
transform: rotateX(360deg) translateZ(100px) scale(2, 1);
}

ul li:nth-child(5) {
background-color: purple;
transform: translateX(-200px) rotateY(90deg);
}

ul li:nth-child(6) {
background-color: pink;
transform: translateX(200px) rotateY(90deg);
}
</style>
</head>
<body>
<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</body>
</html>




举报

相关推荐

CSS3之3D转换

CSS3 2D 转换

css3 2D转换

css3之2D转换transform

CSS | 2D转换

css 2D转换

0 条评论