生成3D多棱柱的方法(3D立体图片)
先上一个效果图
主要运用的技术点就是
确认基点,确认每个盒子旋转的度数
3D变换 transform: rotateY(-360deg);
景深 perspective
3D舞台 transform-style: preserve-3d;
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>生成任意棱柱的方法</title>
<style>
*{
margin: 0;
padding: 0;
}
#wrap{
position: relative;
height: 600px;
width: 600px;
border: 1px solid;
margin: 20px auto;
perspective: 900px;
}
#main{
position: absolute;
height: 400px;
width: 200px;
/*border: 1px solid;*/
left: 0;
right: 0;
bottom: 0;
top: 0;
margin: auto;
transform-style: preserve-3d;
transition: 6s transform;
}
.div{
position: absolute;
height: 400px;
width: 200px;
/*border: 1px solid;*/
background-color: #1c86e5;
text-align: center;
font-size: 30px;
line-height: 400px;
}
#wrap:hover #main{
transform: rotateY(-360deg);
}
</style>
</head>
<body>
<div id="wrap">
<div id="main"></div>
</div>
<script>
window.onload=function () {
let boxNode=document.getElementById('main');
addLZ(8)
function addLZ(n) {
let deg=Math.tan((((180*(n-2))/n)/2)*(Math.PI/180)); let nodeStr=''
for (let i=0;i<n;i++){
nodeStr+=`<div class="div"></div>`;
}
boxNode.innerHTML=nodeStr;
let divNode=document.getElementsByClassName('div');
let width= parseFloat(window.getComputedStyle(divNode[0]).width);
let lenth=-(parseFloat(width/2)*deg);
let spend=360/n
boxNode.style.transformOrigin='center center'+' '+lenth+'px';
for (let i=0;i<n;i++){
divNode[i].style.transformOrigin='center center'+' '+lenth+'px';
divNode[i].style.transform=`rotateY(${i*spend}deg)`;
divNode[i].style.backgroundSize='100% 100%'
divNode[i].style.backgroundImage=`url(img/仁煌${i+1}.jpg)`;
} }
}
</script>
</body>
</html>
调用add函数就可以生成你想要的的多棱柱了 ,插入图片就是3D立体图咯。
有一个小细节就是,js语言中没有度数的小句号 所以度数要转成弧度。
生成3D多棱柱的方法(3D立体图片)的更多相关文章
- Discovery直播 | 3D“模”术师,还原立体世界——探秘3D建模服务
通过多张普通的照片重建一个立体逼真的3D物体模型,曾经靠想象实现的事情,现在, 使用HMS Core 3D建模服务即可实现! 3D模型作为物品在数字世界中的孪生体,用户可以自己拍摄.建模并在终端直观感 ...
- WPF 3D 小小小小引擎 - ·WPF 3D变换应用
原文:WPF 3D 小小小小引擎 - ·WPF 3D变换应用 WPF可以提供的3D模型使我们可以轻松地创建3D实体,虽然目前来看还很有一些性能上的问题,不过对于一些简单的3D应用应该是可取的,毕竟其开 ...
- python快速生成注释文档的方法
python快速生成注释文档的方法 今天将告诉大家一个简单平时只要注意的小细节,就可以轻松生成注释文档,也可以检查我们写的类方法引用名称是否重复有问题等.一看别人专业的大牛们写的文档多牛多羡慕,不用担 ...
- sublime text 乱码生成.dump问题的解决方法
title: sublime text 乱码生成.dump问题的解决方法 tags: sublime text,sublime text 3,.dump,乱码 grammar_cjkRuby: tru ...
- C#生成二维码的方法
本文实例讲述了C#生成二维码的方法.分享给大家供大家参考.具体实现方法如下: 首先引用ThoughtWorks.QRCode.dll 具体代码如下: 复制代码 代码如下: using System; ...
- Mybatis Generator自动生成的mapper只有insert方法
– Mybatis Generator 生成的mapper只有insert方法 – 首先检查generatorConfig.xml中table项中的属性 enableSelectByPrimaryKe ...
- javascript生成对象的三种方法
/** js生成对象的三种方法*/ // 1.通过new Object,然后添加属性 示例如下: var people1 = new Object(); people1.name = 'xiaohai ...
- [转][Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法
转自:http://blog.csdn.net/qiujuer/article/details/39754517?utm_source=tuicool [Android][Android Studi ...
- php生成随机数的三种方法
php生成随机数的三种方法 如何用php生成1-10之间的不重复随机数? 例1,使用shuffle函数生成随机数. <?php$arr=range(1,10);shuffle($arr);for ...
随机推荐
- iOS包重签名工具,ipa文件重签名,快速签名,SignTool签名工具,好用的签名工具,App重签名
新工具 ProjectTool 已上线 这是一款快速写白包工具,秒级别写H5游戏壳包,可视化操作,极易使用,支持Swift.Objecive-C双语言 QQ交流群:811715780 进入 Proje ...
- Kubernetes中Pod健康检查
目录 1.何为健康检查 2.探针分类 2.1.LivenessProbe探针(存活性探测) 2.2.ReadinessProbe探针(就绪型探测) 3.探针实现方法 3.1.Container Exe ...
- c# Dictionary<string, object> 转JSON字符串
JavaScriptSerializer jss = new JavaScriptSerializer(); Dictionary<string, object> dict = new D ...
- hdu1015+hdu1016 都是十分钟以内的深搜题
hdu1015:给定一串可用序列值,每个字符映射到一个1-26之间的整数,选择五个有序数使得满足 a-b2+c3-d4+e5=target. #include<iostream> #inc ...
- [set]Codeforces 830B-Cards Sorting
Cards Sorting time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- CSAPP-bomblab
DO NOT READ THIS ARTICLE. I wrote bullshit in English. This lab I have finished once, so this articl ...
- OpenCV-Python 特征匹配 | 四十四
目标 在本章中, 我们将看到如何将一个图像中的特征与其他图像进行匹配. 我们将在OpenCV中使用Brute-Force匹配器和FLANN匹配器 Brute-Force匹配器的基础 蛮力匹配器很简单. ...
- OpenCV-Python 读取显示视频 | 六
目标 学习读取视频,显示视频和保存视频. 学习从相机捕捉并显示它. 你将学习以下功能:cv.VideoCapture(),cv.VideoWriter() 从相机中读取视频 通常情况下,我们必须用摄像 ...
- 五大经典卷积神经网络介绍:LeNet / AlexNet / GoogLeNet / VGGNet/ ResNet
欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习.深度学习的知识! LeNet / AlexNet / GoogLeNet / VGG ...
- React入门(2)
承接上次学习的react,今天继续学习react 划重点!!! 今天学习的全是react的核心概念:①props②ref③state 一.核心概念---props 作用:主要用来实现父子组件通信 1. ...