要使three.js场景在容器内居中显示,可以按照以下步骤进行操作:
Three.js是一个基于WebGL的JavaScript库,用于在浏览器中创建和显示3D图形。它提供了丰富的API来创建复杂的3D场景、模型和动画。
Three.js主要分为以下几个部分:
Three.js广泛应用于游戏开发、数据可视化、虚拟现实、教育应用等领域。
window.devicePixelRatio
,以确保在不同设备上显示效果一致。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Three.js Centered Scene</title>
<style>
body { margin: 0; }
canvas { display: block; }
</style>
</head>
<body>
<div id="container" style="width: 800px; height: 600px;"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
<script>
// 创建场景
const scene = new THREE.Scene();
// 创建相机
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;
// 创建渲染器
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
// 将渲染器添加到容器中
const container = document.getElementById('container');
container.appendChild(renderer.domElement);
// 获取容器的宽度和高度
const containerWidth = container.clientWidth;
const containerHeight = container.clientHeight;
// 设置渲染器的大小为容器的大小
renderer.setSize(containerWidth, containerHeight);
// 设置渲染器的像素比
renderer.setPixelRatio(window.devicePixelRatio);
// 使场景居中显示
renderer.domElement.style.position = 'absolute';
renderer.domElement.style.top = '50%';
renderer.domElement.style.left = '50%';
renderer.domElement.style.transform = 'translate(-50%, -50%)';
// 添加一个简单的立方体
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);
// 渲染循环
function animate() {
requestAnimationFrame(animate);
cube.rotation.x += 0.01;
cube.rotation.y += 0.01;
renderer.render(scene, camera);
}
animate();
</script>
</body>
</html>
领取专属 10元无门槛券
手把手带您无忧上云