如何仅在div上应用JavaScript

时间:2018-08-14 15:13:50

标签: javascript html three.js

我只想在一个DIV中(不是在所有页面上)应用脚本(来自javascript)。可能吗? (我认为如果我们修改div的高度可以部分调整大小,但是宽度不受更改的影响(我说的是div),这是一个调整大小的问题。) 这是我的脚本:

var camera2, scene2;
    function init2() {
        var container, stats;

        container = document.createElement( 'div' );
        document.body.appendChild( container );
        camera2 = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 2000 );
        camera2.position.z = 250;

        scene2 = new THREE.Scene();
        var ambientLight = new THREE.AmbientLight( 0xcccccc, 0.4 );
        scene2.add( ambientLight );
        var pointLight = new THREE.PointLight( 0xffffff, 0.8 );
        camera2.add( pointLight );
        scene2.add( camera2 );

        var loader = new THREE.OBJLoader();

        var mtlLoader = new THREE.MTLLoader();

        mtlLoader.load( "3d_models/OBJ/ano/ano.mtl", function( materials ) {
            materials.preload();
            console.log(materials);
            var objLoader = new THREE.OBJLoader();
            objLoader.setMaterials( materials );
            objLoader.load("3d_models/OBJ/ano/ano.obj", function ( object ) {
                console.log(object.children[0])
                scene2.add( object );
                onRenderFcts.push(function(){
                            object.rotation.y += 0.03;
                })
            });
        },
        function ( xhr ) {
            console.log( 'OBJ ' + ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
        },
        function ( error ) {
            console.log(error);
        });
        renderer = new THREE.WebGLRenderer();
        renderer.setPixelRatio( window.devicePixelRatio );
        renderer.setSize( window.innerWidth, window.innerHeight );
        container.appendChild( renderer.domElement );
    }

并且可以更改背景,实际上是黑色背景,我只想要透明背景。 编辑:这是屏幕截图:金色的rign是我的3d对象,绿色的正方形是我的div image EDIT2:为了澄清问题,我有一个页面,并且页面上有一个div,只想在此div上应用three.js函数。所以最后,我只能在div中看到我的金戒指

1 个答案:

答案 0 :(得分:0)

我摸索得到“正确”的结果。这是我修改的代码:

container = document.createElement( 'div' );
            var att = document.createAttribute("class");
            att.value = "test";
            container.setAttributeNode(att);
            document.body.appendChild( container );

这是CSS中的test和canvas类:

.test{
    width:100px;
    height:100px;
    position: fixed;
    top: 50%;
    left: 50%;
    margin-top: -100px;
    margin-left: -100px;
}

canvas{
    width:500px;
    height:500px;
    margin-top: -275px;
    margin-left: -630px;
}

但是现在还有另一个问题。如果我尝试在更复杂的代码上调用脚本,它将无法正常工作!控制台没有注意到错误。这是描述情况的图片:img 因此,金戒指应该在标记上(左侧的徽标),并且在黑色区域中,通常金戒指可以正常旋转。 Blackzone也可以通过我的第一篇文章com中的技巧进行修复。