CSS3 3 рдбреА рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдореЗрд╢рди рдХреНрд▓рд╛рдЙрдбреНрд╕

CSS 3D рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реБрдВрджрд░ 3D рдмрд╛рджрд▓реЛрдВ рдХреЛ рдХреИрд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг



рдореИрдВ рдЧрд▓рддреА рд╕реЗ рдЖрдЬ рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рднрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд▓реЗрдЦ рднрд░ рдЖрдпрд╛ рдФрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдореБрдЭреЗ, рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рд╣рд╛рдмрд░рд╛ рджрд░реНрд╢рдХреЛрдВ рдХреЛ рднреА рджрд┐рд▓рдЪрд╕реНрдкреА рджреЗ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдВрдЧреНрд░реЗрдЬреА рдЙрдХреНрд░реЗрди рдЙрд░реЛрдЬрд╝реЛрд╡ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдиреБрд╡рд╛рдж рд▓реЗрдЦрдХ рд╣реЛрдЧрд╛ред

рдЕрдзреАрд░ рдХреЗ рд▓рд┐рдП: рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реЛрдЧрд╛

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐


рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд▓реЗрдЦрдХ рдиреЗ CSS3 рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реБрдВрджрд░ 3 рдбреА рдХреНрд▓рд╛рдЙрдб рдмрдирд╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрддрд╛рдиреЗ рдФрд░ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд▓реЗрдЦрдХ рдХрд╛ рдпрд╣ рднреА рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпреЗ CSS 3 рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдореЗрд╢рди рдХрд╛рдо рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╢рд╛рдирджрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧреАред рдпрд╣рд╛рдБ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ

рдпрд╣ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрдИ рд╕рд░рд▓ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рдХреЛрдб рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рд╣реЛрддреЗ рд╣реИрдВред

рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдХрд░реЛ!



Poooeehaaali!



1. рдПрдХ рджреБрдирд┐рдпрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдПрдХ рдХреИрдорд░рд╛ рдЬреЛрдбрд╝реЗрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рджреЛ рджрд┐рд╡реНрдп рддрддреНрд╡ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ: рджреГрд╖реНрдЯрд┐рдХреЛрдг (рдХреИрдорд░рд╛) рдФрд░ рджреБрдирд┐рдпрд╛ред рд╣рдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреНрдп рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдПрдВрдЧреЗред

рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреВрд░реЗ рджреГрд╢реНрдп рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдХреИрдорд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рд╕реАрдПрд╕рдПрд╕ 3 рдбреА рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХреИрдорд░рд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреИрдорд░рд╛ рдЧреНрд▓рд╛рд╕ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдо рдЙрд╕ рджреБрдирд┐рдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдмрдирд╛рдпрд╛ рд╣реИред рдмрд╛рджрд▓ рд╣рдо рдЕрдкрдиреА рджреБрдирд┐рдпрд╛ рдХреЗ рдЕрдВрджрд░ рд▓рд╛рдареА рд╕реЗ рдкреИрджрд╛ рдХрд░реЗрдВрдЧреЗ рдФрд░тАжред

рджреБрдирд┐рдпрд╛ рдПрдХ рдбрд┐рд╡ рдмреНрд▓реЙрдХ рд╣реИ рдЬреЛ рдХреИрдорд░рд╛ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рд╣реИ рдФрд░ рдЬрд┐рд╕рдореЗрдВ рдмрд╛рджрд▓ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреЗред

рдпрд╣ HTML рдорд╛рд░реНрдХрдЕрдк рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

<div id="viewport" > <div id="world" ></div> </div> 


рдФрд░ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рдФрд░ рдХреИрдорд░реЗ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред рдХреИрдорд░реЗ рдХреЗ рдЕрдВрджрд░ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп (рджреБрдирд┐рдпрд╛) рд╡рд╛рд▓реЗ рдмреНрд▓реЙрдХ рдХреЛ рд░рдЦрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдЕрдиреНрдпрдерд╛ рдкреВрд░реЗ рджреГрд╢реНрдп рдХреЛ рдПрдХ рдСрдлрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ред

 #viewport { bottom: 0; left: 0; overflow: hidden; perspective: 400; position: absolute; right: 0; top: 0; } #world { height: 512px; left: 50%; margin-left: -256px; margin-top: -256px; position: absolute; top: 50%; transform-style: preserve-3d; width: 512px; } 


рдФрд░ рдХреЛрдб рдХрд╛ рдПрдХ рд╕рд╛: рд╣рдо рдЕрдкрдиреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдореВрд╕рдореЛрд╡ рдЗрд╡реЗрдВрдЯ рдкрд░ рд╣реБрдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрдкрдбреЗрдЯ рд╡реНрдпреВ () рд╡рд┐рдзрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ

 /*   world  viewport  DOM  worldXAngle  worldYAngle   ,       d ,         */ var world = document.getElementById( 'world' ), viewport = document.getElementById( 'viewport' ), worldXAngle = 0, worldYAngle = 0, d = 0; /*         ,       -180  180 ,    */ window.addEventListener( 'mousemove', function( e ) { worldYAngle = -( .5 - ( e.clientX / window.innerWidth ) ) * 180; worldXAngle = ( .5 - ( e.clientY / window.innerHeight ) ) * 180; updateView(); } ); /* ,          d */ window.addEventListener( 'mousewheel', onContainerMouseWheel ); window.addEventListener( 'DOMMouseScroll', onContainerMouseWheel ); function onContainerMouseWheel( event ) { event = event ? event : window.event; d = d - ( event.detail ? event.detail * -5 : event.wheelDelta / 8 ); updateView(); } /*  CSS3  transform   Changes the transform property of world to be  Z    d   X  worldXAngle     Y  worldYAngle  */ function updateView() { world.style.transform = 'translateZ( ' + d + 'px ) \ rotateX( ' + worldXAngle + 'deg) \ rotateY( ' + worldYAngle + 'deg)'; } 


рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рд▓рд╛рд▓ рд╣реЛ рдЬрд╛рдПрдЧреАред рдФрд░ рдХреИрдорд░реЗ рдореЗрдВ рдПрдХ рдврд╛рд▓ рд╣реЛрдЧреА рдЬреЛ рд╕реНрд╡рд░реНрдЧ рдХреА рддрд┐рдЬреЛрд░реА рд╣реИред
рд╣рдо рдорд╛рдЙрд╕ рдХреА рдЪрд╛рд▓ рдХрд╛ рднреА рдкрд╛рд▓рди рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕ рдорд╛рдЙрд╕ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рджреЗрдЦрдиреЗ рдХреЗ рдХреЛрдг рдФрд░ рдХреИрдорд░реЗ рдФрд░ рджреБрдирд┐рдпрд╛ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗред
% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдЖрдкрдХрд╛ рдорд╛рдЙрд╕ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рджреБрдирд┐рдпрд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЕрдкрдиреЗ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рдХреЛ рдмрджрд▓рддреА рд╣реИ

рдЙрджрд╛рд╣рд░рдг

2. рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ

рдЕрдм рд╣рдореЗрдВ рдЙрди рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬрд┐рдирдХреЗ рдЕрдВрджрд░ рд╣рдорд╛рд░реЗ рдмрд╛рджрд▓реЛрдВ рдХреЛ рдЦреАрдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛ рдмреНрд▓реЙрдХ рдПрдХ рдирдпрд╛ рдХреНрд▓рд╛рдЙрдб рд╣реИред рд╣рдо рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдмрд┐рд▓реНрдХреБрд▓ рддреИрдирд╛рдд рдмреНрд▓реЙрдХ рдмрдирд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдмрд╛рдПрдВ рдФрд░ рдКрдкрд░ рдХреЗ рдмрдЬрд╛рдп CSS3 рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпреЗ рд╕рднреА рд╡рд╕реНрддреБрдПрдВ рджреБрдирд┐рдпрд╛ рдХреЗ рдХреЗрдВрджреНрд░ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрдВрдЧреАред рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЖрдХрд╛рд░ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдмрд╛рджрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдЖрд╡рд░рдг рд╣реИрдВред рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ (рдорд╛рд░реНрдЬрд┐рди-рд▓реЗрдлреНрдЯ рдФрд░ рдорд╛рд░реНрдЬрд┐рди-рдЯреЙрдк рдХреЛ рдШрдЯрд╛рдХрд░ рдЖрдзреА рдКрдВрдЪрд╛рдИ рдФрд░ рдЪреМрдбрд╝рд╛рдИ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ)ред

 .cloudBase { height: 20px; left: 256px; margin-left: -10px; margin-top: -10px; position: absolute; top: 256px; width: 20px; } 


рдФрд░ рд╣рдо createCloud () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ рдХреНрд▓рд╛рдЙрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдмрдирд╛рдПрдЧрд╛ рдФрд░ рдЗрд╕реЗ DOM рдФрд░ createCloud () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдИ рдХреНрд▓рд╛рдЙрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред
рд╣рдо рдкреА рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рднреА рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдЬреЛ рдХреИрдорд░реЗ рдХреЗ рдкрд░рд┐рдкреНрд░реЗрдХреНрд╖реНрдп рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ (рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рддреА рд╣реИ рдЬреЛ рдХреИрдорд░реЗ рд╕реЗ рдЖрдЧреЗ рд╣реИрдВ рдЖрдХрд╛рд░ рдореЗрдВ рдЫреЛрдЯреЗ рджрд┐рдЦрддреЗ рд╣реИрдВ)

  d = 0, p = 400, //  worldXAngle = 0, worldYAngle = 0; viewport.style.webkitPerspective = p; viewport.style.MozPerspective = p; viewport.style.oPerspective = p; /* objects      layers     (  a  ) */ var objects = [], layers = []; /*        */ function generate() { objects = []; layers = []; if ( world.hasChildNodes() ) { while ( world.childNodes.length >= 1 ) { world.removeChild( world.firstChild ); } } for( var j = 0; j <; 5; j++ ) { objects.push( createCloud() ); } } /*  placeholder              -256  256  */ function createCloud() { var div = document.createElement( 'div' ); div.className = 'cloudBase'; var x = 256 - ( Math.random() * 512 ); var y = 256 - ( Math.random() * 512 ); var z = 256 - ( Math.random() * 512 ); var t = 'translateX( ' + x + 'px ) translateY( ' + y + 'px ) translateZ( ' + z + 'px )'; div.style.webkitTransform = t; div.style.MozTransform = t; div.style.oTransform = t; world.appendChild( div ); return div; } 


.cloudBase рдХреНрд▓рд╛рдЙрдб рдХрдВрдЯреЗрдирд░ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд░рд▓ рдЧреБрд▓рд╛рдмреА рдЖрдпрддрд╛рдХрд╛рд░ рд╣реИрдВред

рдЯрд┐рдВрдЯ рдЙрджрд╛рд╣рд░рдг

3. рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЛ рдмрд╛рджрд▓реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

рдЬрдВрдЧрд▓ рдореЗрдВ рджреВрд░, рдФрд░ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк! рд╣рдо рдХреБрдЫ рдмрд┐рд▓реНрдХреБрд▓ рддреИрдирд╛рдд .cloudLayer рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рджрд▓реЛрдВ рдореЗрдВ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╣реИрдВред

 .cloudLayer { height: 256px; left: 50%; margin-left: -128px; margin-top: -128px; position: absolute; top: 50%; width: 256px; } 


рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдЬреЗрдирд░реЗрдЯрдХреНрд▓рд╛рдЙрдб () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓реЗрдВ, рдЕрдм рдпрд╣ рдмрд╛рджрд▓реЛрдВ рдХреЗ рдЕрдВрджрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рднреА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред

 function createCloud() { var div = document.createElement( 'div' ); div.className = 'cloudBase'; var x = 256 - ( Math.random() * 512 ); var y = 256 - ( Math.random() * 512 ); var z = 256 - ( Math.random() * 512 ); var t = 'translateX( ' + x + 'px ) translateY( ' + y + 'px ) translateZ( ' + z + 'px )'; div.style.webkitTransform = t; div.style.MozTransform = t; div.style.oTransform = t; world.appendChild( div ); for( var j = 0; j < 5 + Math.round( Math.random() * 10 ); j++ ) { var cloud = document.createElement( 'div' ); cloud.className = 'cloudLayer'; var x = 256 - ( Math.random() * 512 ); var y = 256 - ( Math.random() * 512 ); var z = 100 - ( Math.random() * 200 ); var a = Math.random() * 360; var s = .25 + Math.random(); x *= .2; y *= .2; cloud.data = { x: x, y: y, z: z, a: a, s: s }; var t = 'translateX( ' + x + 'px ) translateY( ' + y + 'px ) translateZ( ' + z + 'px ) rotateZ( ' + a + 'deg ) scale( ' + s + ' )'; cloud.style.webkitTransform = t; cloud.style.MozTransform = t; cloud.style.oTransform = t; div.appendChild( cloud ); layers.push( cloud ); } return div; } 


рдЙрджрд╛рд╣рд░рдг

4. рдЬрд╛рджреВ

рдЕрдВрдд рдореЗрдВ рд╣рдо рдЬрд╛рджреВ рдХрд░реЗрдВрдЧреЗ! рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░рддреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ [], рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХрд╛ рд▓рд┐рдВрдХ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ worldXAngle рдФрд░ worldYAngle рднреА рд╣реИрдВред рдЕрдм рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЪреИрдореНрдмрд░ рдХреА рдЙрдирдХреА рд╕рддрд╣ рд╕реЗ рдХрдо рд▓рдВрдмрд╡рдд рднреА рд╣рдорд╛рд░реЗ рдХрд┐рд╕реА рднреА рдкреНрд░реЗрдд рдХреЗ рд▓рд┐рдП рд▓рдВрдмрд╡рдд рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рд╣рдореЗрд╢рд╛ рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рд╣реЛрдВрдЧреЗред

рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдЕрдкрдбреЗрдЯ () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ
 function update (){ for( var j = 0; j < layers.length; j++ ) { var layer = layers[ j ]; layer.data.a += layer.data.speed; var t = 'translateX( ' + layer.data.x + 'px ) translateY( ' + layer.data.y + 'px ) translateZ( ' + layer.data.z + 'px ) rotateY( ' + ( - worldYAngle ) + 'deg ) rotateX( ' + ( - worldXAngle ) + 'deg ) scale( ' + layer.data.s + ')'; layer.style.webkitTransform = t; layer.style.MozTransform = t; layer.style.oTransform = t; } updateView() ; } 


рдЙрджрд╛рд╣рд░рдг

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛

рдмрд╕ рдЗрддрдирд╛ рд╣реА, рдореБрдЦреНрдп рдХрд╛рдо рд▓рдЧрднрдЧ рдкреВрд░рд╛ рд╣реЛ рдЪреБрдХрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдореЗрдВ рдмрдирд╛рд╡рдЯ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ (рдкреГрд╖реНрдарднреВрдорд┐, рдлрд╝реНрд░реЗрдо рдЖрджрд┐ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ)
рдмрдирд╛рд╡рдЯ рдХреЛ рд╣рд░ рд╕реНрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдмрд╛рджрд▓, рдЧрдбрд╝рдЧрдбрд╝рд╛рд╣рдЯ, рдЯреЛрд╕реНрдЯрд░ ... рдпрджрд┐ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдмрдирд╛рд╡рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджрд┐рд▓рдЪрд╕реНрдк рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдХрджрдо рдФрд░ рдЕрдВрддрд┐рдо рд╕рд╛рдл рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ

рдЖрдк рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдореЗрдВ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рднреЗрдбрд╝ рдФрд░ рдЪрд░рд╡рд╛рд╣реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдмрд╛рджрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдХрд▓реНрдкрдирд╛ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИред

рдЗрд╕ рдкрд╛рда рдХреЗ рд▓реЗрдЦрдХ рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдирд╛ рд╕рдордп рд╡реНрдпрд░реНрде рдирд╣реАрдВ рдмрд┐рддрд╛рдпрд╛ред рдФрд░ рд╡рд╣ рдЖрдкрдХреЛ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рд╡рд╣ the.spite (at) gmail.com (рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ) рдХреЗ рдкрддреНрд░реЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд╣реАрдВ рд╣реИ

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдпрд╣ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓реЗрдЦрдХ requestAnimationFrame () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд▓реВрдк рдореЗрдВ рдПрдирд┐рдореЗрд╢рди рдЦреАрдВрдЪрдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИред

рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ, рдЬреИрд╕реЗ ...

рдкреБрдирд╢реНрдЪ: рдореИрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрд╡рд╛рджрдХ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдВред рд╕рднреА рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкреАрдПрдо рдХреЛ рднреЗрдЬрддреЗ рд╣реИрдВред

UPD1: рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрд╛рд░ Habr├й рдкрд░ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд▓рд┐рдВрдХ ред

Source: https://habr.com/ru/post/In168885/


All Articles