fer博客
FERBLOG

本站当前定位为个人的知识库中心

如果有疑问,可发邮件至2305911934@qq.com

html5跟随鼠标3D波浪粒子特效

来源:网络收集分类:html2022-09-040

111
  • html编号:20220424164713
  • html分类:html
  • html格式:html/css
  • html关键词: html5 Canvas
  • index_html5跟随鼠标3D波浪粒子特效源代码<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>html53DЧ</title>
    <meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
    
    <style>
    body{background-color: #000000;margin: 0px;overflow: hidden;}
    a{color:#0078ff;}
    </style>
    
    </head>
    <body>
    
    <script type="text/javascript" src="js/three.min.js"></script>
    <script type="text/javascript">
    var SEPARATION = 100, AMOUNTX = 50, AMOUNTY = 50;
    
    var container;
    var camera, scene, renderer;
    
    var particles, particle, count = 0;
    
    var mouseX = 0, mouseY = 0;
    
    var windowHalfX = window.innerWidth / 2;
    var windowHalfY = window.innerHeight / 2;
    
    init();
    animate();
    
    function init() {
    
    	container = document.createElement( 'div' );
    	document.body.appendChild( container );
    
    	camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
    	camera.position.z = 1000;
    
    	scene = new THREE.Scene();
    
    	particles = new Array();
    
    	var PI2 = Math.PI * 2;
    	var material = new THREE.ParticleCanvasMaterial( {
    
    		color: 0xffffff,
    		program: function ( context ) {
    
    			context.beginPath();
    			context.arc( 0, 0, 1, 0, PI2, true );
    			context.fill();
    
    		}
    
    	} );
    
    	var i = 0;
    
    	for ( var ix = 0; ix < AMOUNTX; ix ++ ) {
    
    		for ( var iy = 0; iy < AMOUNTY; iy ++ ) {
    
    			particle = particles[ i ++ ] = new THREE.Particle( material );
    			particle.position.x = ix * SEPARATION - ( ( AMOUNTX * SEPARATION ) / 2 );
    			particle.position.z = iy * SEPARATION - ( ( AMOUNTY * SEPARATION ) / 2 );
    			scene.add( particle );
    
    		}
    
    	}
    
    	renderer = new THREE.CanvasRenderer();
    	renderer.setSize( window.innerWidth, window.innerHeight );
    	container.appendChild( renderer.domElement );
    
    	document.addEventListener( 'mousemove', onDocumentMouseMove, false );
    	document.addEventListener( 'touchstart', onDocumentTouchStart, false );
    	document.addEventListener( 'touchmove', onDocumentTouchMove, false );
    
    	//
    
    	window.addEventListener( 'resize', onWindowResize, false );
    
    }
    
    function onWindowResize() {
    
    	windowHalfX = window.innerWidth / 2;
    	windowHalfY = window.innerHeight / 2;
    
    	camera.aspect = window.innerWidth / window.innerHeight;
    	camera.updateProjectionMatrix();
    
    	renderer.setSize( window.innerWidth, window.innerHeight );
    
    }
    
    //
    
    function onDocumentMouseMove( event ) {
    
    	mouseX = event.clientX - windowHalfX;
    	mouseY = event.clientY - windowHalfY;
    
    }
    
    function onDocumentTouchStart( event ) {
    
    	if ( event.touches.length === 1 ) {
    
    		event.preventDefault();
    
    		mouseX = event.touches[ 0 ].pageX - windowHalfX;
    		mouseY = event.touches[ 0 ].pageY - windowHalfY;
    
    	}
    
    }
    
    function onDocumentTouchMove( event ) {
    
    	if ( event.touches.length === 1 ) {
    
    		event.preventDefault();
    
    		mouseX = event.touches[ 0 ].pageX - windowHalfX;
    		mouseY = event.touches[ 0 ].pageY - windowHalfY;
    
    	}
    
    }
    
    //
    
    function animate() {
    
    	requestAnimationFrame( animate );
    
    	render();
    
    
    }
    
    function render() {
    
    	camera.position.x += ( mouseX - camera.position.x ) * .05;
    	camera.position.y += ( - mouseY - camera.position.y ) * .05;
    	camera.lookAt( scene.position );
    
    	var i = 0;
    
    	for ( var ix = 0; ix < AMOUNTX; ix ++ ) {
    
    		for ( var iy = 0; iy < AMOUNTY; iy ++ ) {
    
    			particle = particles[ i++ ];
    			particle.position.y = ( Math.sin( ( ix + count ) * 0.3 ) * 50 ) + ( Math.sin( ( iy + count ) * 0.5 ) * 50 );
    			particle.scale.x = particle.scale.y = ( Math.sin( ( ix + count ) * 0.3 ) + 1 ) * 2 + ( Math.sin( ( iy + count ) * 0.5 ) + 1 ) * 2;
    
    		}
    
    	}
    
    	renderer.render( scene, camera );
    
    	count += 0.1;
    
    }
    </script>
    
    <div style="text-align:center;margin:1px 0; font:normal 14px/24px 'MicroSoft YaHei';color:#ffffff">
    <p>360FireFoxChromeSafariOperaΡѹ֮. ֧IE8</p>
    <p>Դ<a href="http://sc.chinaz.com/" target="_blank">վز</a></p>
    </div>
    </body>
    </html>4348                                

特别说明:

1.如有链接无法下载、失效或广告,请联系QQ:2305911934 处理!

2.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!

3.本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!

4.本站所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!

5.该模板为静态页面,没有后台,大部分未经测试可用,并不保证百分百无误及完整

如有侵犯您的版权,请及时联系2305911934#qq.com(#换@),我们将尽快处理。

相关文章
HTML模板