javascript – 如何在three.js上叠加HTML文本/按钮?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 如何在three.js上叠加HTML文本/按钮?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2769字,纯文字阅读大概需要4分钟。
内容图文
好的,这里的three.js非常新,但我正在尝试用https://beinternetawesome.withgoogle.com/interland来实现谷歌
看 – 他们有他们的FULL SCREEN Three.js场景和他们的文本,按钮(显然是HTML div,不是通过JS生成的)完全覆盖在顶部.
我看过了
https://discourse.threejs.org/t/trying-to-overlay-a-button-and-text-on-top-of-a-three-js-scene/390/2
和类似的问题,但无法理解这样做的正确方法.我不想在Three.js中生成我的UI元素 – 我只想使用HTML.
到目前为止,我生成了我的Three.js画布并将其添加到我的文档中,以便它获取并保持窗口的整个宽度/高度:
var controls, camera, renderer, scene, container, w, h;
renderer = new THREE.WebGLRenderer()
// container = document.getElementById('canvas');
container = window;
w = container.innerWidth;
h = container.innerHeight;
renderer.setSize(w, h)
renderer.setPixelRatio( window.devicePixelRatio );
document.body.appendChild(renderer.domElement);
然后使用我现有的HTML:
<body>
<div id="ui">
<p id="message">Test to change</p>
</div>
无论我如何使用CSS div或UI div的z索引,我都会将UI div卡在最上面:
如何通过覆盖在我的three.js场景上的HTML来实现Google效果?我究竟做错了什么?
我需要我的画布像Google一样填充整个窗口,并且无法实现预先制作画布HTML元素并尝试在JS中附加所有内容.
解决方法:
创造力取决于你,因为有很多方法可以达到预期的效果.
您可以从Three.js的官方网站查看examples的源代码开始.在那里,您可以看到示例的信息部分如何在网页上设置.
var buttons = document.getElementsByTagName("button");
for (let i = 0; i < buttons.length; i++) {
buttons[i].addEventListener("click", onButtonClick, false);
};
function onButtonClick(event) {
alert(event.target.id);
}
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
var controls = new THREE.OrbitControls(camera, renderer.domElement);
var geometry = new THREE.BoxGeometry(1, 1, 1);
var material = new THREE.MeshBasicMaterial({
color: 0x00ff00,
wireframe: true
});
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);
camera.position.z = 5;
var animate = function() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
};
animate();
body {
overflow: hidden;
margin: 0;
}
.ui {
position: absolute;
}
button{
margin: 20px;
}
<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<div style="width:100%;height:50px;text-align: center; color:white;" class="ui">Info header</div>
<button style="top:0" id="fire" class="ui">Fire</button>
<button style="bottom:0" id="spell" class="ui">Spell</button>
<button style="right:0" id="health" class="ui">Health</button>
<button style="right:0; bottom:0;" id="shield" class="ui">Shield</button>
内容总结
以上是互联网集市为您收集整理的javascript – 如何在three.js上叠加HTML文本/按钮?全部内容,希望文章能够帮你解决javascript – 如何在three.js上叠加HTML文本/按钮?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。