效果

源码

import { useEffect, useRef } from 'react'
import * as T from 'three'
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'
import { CSS3DRenderer, CSS3DObject } from 'three/examples/jsm/renderers/CSS3DRenderer'const Demo12 = () => {let scene, camera, renderer, orbitControls, axesuseEffect(() => {init()}, [])const ThreeContainer = useRef()// 场景,作为容器,保存并跟踪所有渲染的物体const initScene = () => {scene = new T.Scene()}// 相机const initCamera = () => {// 透视相机,参数:视场,长宽比,近面,远面camera = new T.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000)camera.position.z = 150camera.lookAt(scene.position)}// 渲染器,计算指定相机角度下,浏览器中scene的样子const initRenderer = () => {// css 3d 渲染器renderer = new CSS3DRenderer()renderer.setSize(window.innerWidth, window.innerHeight)// 将render的输出挂载到HTML页面框架中的元素上ThreeContainer.current.append(renderer.domElement)}// 坐标轴const initAxes = () => {axes = new T.AxesHelper(20)scene.add(axes)}// 坐标格const initGridHelper = () => {// 参数:坐标格尺寸,坐标格细分次数,中线颜色,坐标格网格线颜色.const gridHelper = new T.GridHelper(100, 10, 0xff0000, 0x00ffff)scene.add(gridHelper)}// 轨道控制器const initOrbitControls = () => {orbitControls = new OrbitControls(camera, renderer.domElement)}// 创建iframeconst createCssObject = () => {const iframe = document.createElement('iframe')iframe.src = 'https://blog.csdn.net/weixin_43794073?type=blog'iframe.style.width = '1920px'iframe.style.height = '1080px'iframe.style.background = '#f00'iframe.style.border = '10px solid #1890ff'iframe.style.boxShadow = '0 0 20px #ff0000'// CSS3DObject 将dom元素转换为3d元素const cssObj = new CSS3DObject(iframe)cssObj.position.set(0, 0, 0)cssObj.scale.set(0.1, 0.1, 0.1)scene.add(cssObj)}// 渲染场景const renderScene = () => {requestAnimationFrame(renderScene)renderer.render(scene, camera)}const resize = () => {window.addEventListener('resize', () => {camera.aspect = window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()renderer.setSize(window.innerWidth, window.innerHeight)}, false)}// 初始化const init = () => {initScene()initCamera()initRenderer()initOrbitControls()initAxes()initGridHelper()createCssObject()renderScene()resize()}return (<div ref={ThreeContainer} />)
}export default Demo12

THREE--demo12(CSS 3D)相关推荐

  1. 【面试篇】前端点滴(css/css3)

    [面试篇]前端点滴(CSS/CSS3)---倾尽所有 面试小问答 css基础 css盒模型 css选择器 BFC css(float) css(position/z-index) css(displa ...

  2. 翻译 | CSS网格(CSS Grid)布局入门

    原文地址:Getting to know CSS Grid Layout 原文作者:Chris Wright 译者:华翔 校对者:珂珂.干干 翻译 | CSS网格(CSS Grid)布局入门 bann ...

  3. 一篇文章教你学会如何使用CSS中的雪碧图(CSS Sprite)

    一篇文章教你学会如何使用CSS中的雪碧图(CSS Sprite) 一.什么是雪碧图? 雪碧图(CSS Sprite)又叫CSS精灵图,是一种网页图片应用处理方式,他允许你将一个页面设计到 所有零星图片 ...

  4. 有趣的HTML实例(七) 注册登录界面Ⅱ(css+js)

    你知道,有些鸟儿是注定不会被关在牢笼里的,它们的每一片羽毛都闪耀着自由的光辉. --<肖申克的救赎> 目录 一.前言 二.往期作品回顾 三.作品介绍 四.本期代码介绍 五.效果显示 六.编 ...

  5. 有趣的HTML实例(十五) 注册登录界面(css+js)

    我并不是每次吃完饭就看电视,有时我边吃边看电视,生活中有些改变会增加乐趣. --<加菲猫> 目录 一.前言 二.往期作品回顾 三.作品介绍 四.本期代码介绍 五.效果显示 六.编码实现 i ...

  6. Java Swing中JFreeChart构建柱状图(非3D)时关于取消柱体的高亮问题的解决纪要?

    背景 项目应用中后期的用例Demo,特此纪要! 问题 Java Swing中JFreeChart构建的柱状图(非3D)如何取消柱体的高亮显示? 说明 此Demo中点题的代码就一行,其余的代码段在其他的 ...

  7. 有趣的HTML实例(十四) 窗边风景动画(css+js)

    不要憎恨你的敌人,那会影响你的判断力. --<教父> 目录 一.前言 二.往期作品回顾 三.作品介绍 四.本期代码介绍 五.效果显示 六.编码实现 index.html style.css ...

  8. 有趣的HTML实例(八) 一个很有趣的动态背景(css+js)

    小时候,谁都觉得自己的未来闪闪发光,不是吗?但是一旦长大,没有一件事会遂自己心愿. --<被嫌弃的松子的一生> 目录 一.前言 二.往期作品回顾 三.作品介绍 四.本期代码介绍 五.效果显 ...

  9. 盒子模型(CSS重点)-盒子边框(border)

    盒子模型(CSS重点)-盒子边框(border) 其实,CSS就三个大模块,盒子模型.浮动.定位,其余的都是细节.要求这三部分,无论如何也要学的非常精通. 所谓盒子模型就是把HTML页面中的元素看作是 ...

最新文章

  1. 基于RDKit探索DrugBank(demo)
  2. scrapy-1.2.1安装失败之解决方法
  3. 解密初、中、高级程序员的进化之路
  4. UEditor 百度富文本编辑器 .Net实例
  5. 汇编语言(二十六)之自然数求和
  6. linux mysql复制一个表结构图_详解Windows和Linux下从数据库导出表结构,以及Linux下如何导入.sql文件到MySQL数据库...
  7. 原创 通过PEB获得进程路径 (附完整工程)
  8. JavaScript RegExp(正则)
  9. iOS不再美好 安卓收入逼近千万
  10. 迪杰斯特拉模板-刘汝佳紫书
  11. 再也不用手写爬虫了!推荐5款自动爬取数据的神器!
  12. 知识图谱多跳问答推理研究进展、挑战与展望
  13. 公主与骑士-ZZUOJ
  14. 添加引用提示:未能找到引用的组件“XXX”。未能加载类型库。加载类型库/DLL 时出错。...
  15. caffe:最优化方法
  16. HDMI转MIPI CSI东芝转换芯片-TC358743XBG/TC358749XBG
  17. 1602液晶显示屏显示字符
  18. python遍历循环和无限循环结构_Python --- 程序的循环结构
  19. 解决error ‘XXX‘ is not defined no-undef且项目没有eslintrc.js文件问题
  20. 自动化测试效率提升方案

热门文章

  1. 在微信上搞色情?终于要凉了!
  2. 10个科学睡眠的小细节
  3. windows系统中使用cmd中type命令查看文件内容
  4. 文件转码(word、ppt、图片、Excal)
  5. 2021-06-21不惧怕改变,才能长期保持自己的价值
  6. vxe-table踩坑,表格操作列按钮不出现问题
  7. 几款实用的个人知识管理工具
  8. html gif无限循环播放,【GIF】无限循环GIF太神奇,有人知道这是怎么做的吗?
  9. Mac电脑一个应用程序多窗口切换
  10. 高效工作的法宝推荐,小小便签助你快人一步