- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读this answer但所提出的方法纯粹是理论上的。在我的 HTML5 代码中,我尝试过这样的操作:
<div id='gameCanvas'>
<div id="insideText">First trial</div>
</div>
我在 CSS 中添加了以下内容:
#insideText{
background-color: transparent;
}
当涉及到 HTML/CSS 时,我是个新手,所以我可能会犯一些简单的错误,但这样我的 Canvas 上方会出现一条黑线,并且文本会出现在该黑线上。我希望文本出现在 Canvas 上而没有这条黑线,并且我还想知道如何在 Canvas 的不同区域上放置一些文本(我的 Canvas 不是全屏的)。
编辑:如果我输入 <div>
在 Canvas 元素之外,它确实具有透明背景,但始终作为 Canvas 的单独元素。
最佳答案
您的问题并不特定于三个或 Canvas 。这只是一个基本的 HTML/CSS 问题,我确信这个网站上已经回答了 1000 次,但由于搜索很糟糕,我会再次回答,并将其留给更有耐心的人来关闭作为一个骗子
要使 2 个或更多元素重叠,通常需要一个父元素。该元素必须具有 css position: relative;
或position:absolute;
。这使其成为其子项的 anchor /起源/基础。注:<body>
已经这样标记了。
然后对于所有 child ,您可以使用 position:absolute
并用left
设置他们的位置, top
, right
,或bottom
示例
const ctx = document.querySelector('canvas').getContext('2d');
ctx.fillStyle = 'yellow';
ctx.fillRect(0, 0, 300, 150);
ctx.fillStyle = 'red';
ctx.arc(150, 75, 125, 0, Math.PI * 2, true);
ctx.fill();
<h1>Some text</h1>
<div style="position: relative; display: inline-block;">
<canvas></canvas>
<div style="position: absolute; left: 1em; top: 1em;">foo</div>
<div style="position: absolute; right: 1em; bottom: 1em;">bar</div>
</div>
注意:display: inline-block;
是使外部元素适合内容而不是拉伸(stretch)到其父元素(在本例中为主体)的宽度。还有数百种其他方法来设置元素的大小。
请注意,元素默认是透明的,因此无需将背景颜色设置为透明,除非您将其在其他地方设置为不透明
const renderer = new THREE.WebGLRenderer();
document.querySelector('#gameCanvas').appendChild(renderer.domElement);
const scene = new THREE.Scene();
scene.add(
new THREE.Mesh(
new THREE.SphereGeometry(1),
new THREE.MeshBasicMaterial({color:'red'})
)
);
scene.background = new THREE.Color('yellow');
const camera = new THREE.PerspectiveCamera(45, 2, .1, 10);
camera.position.z = 2;
renderer.render(scene, camera);
#gameCanvas {
position: relative;
}
#insideText {
position: absolute;
left: 20px;
top: 20px;
}
<h1>some text</h1>
<div id='gameCanvas'>
<div id="insideText">First trial</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/95/three.min.js"></script>
关于html - 如何在具有透明背景的 Three.js Canvas 上绘制 <div> 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52068814/
我是一名优秀的程序员,十分优秀!