darkoli Le Petit Dinosaure Bleu | Voila deux exemple qui prouvent que tu peux faire bouger ce que tu veux !!!
Darg & Drop d'objet (div, bouton, textarea)
Code :
- <html>
- <head>
- <title>Drag & Drop</title>
- </head>
- <body>
- <script language="javascript">
- var dx=0;
- var dy=0;
- var objet=null;
- var mv=0;
- function md() {
- if (event.srcElement.tagName!="BODY" ) {
- objet=event.srcElement;
- }
- dx=event.offsetX;
- dy=event.offsetY;
- mv=0;
- }
- function mm() {
- if (objet!=null) {
- objet.style.left=event.clientX-dx;
- objet.style.top=event.clientY-dy;
- }
- document.all.z.value="Ecran : "+event.screenX+","+event.screenY+"\nFenêtre : "+event.clientX+","+event.clientY+"\nObjet : "+event.offsetX+","+event.offsetY+" => "+event.srcElement.tagName+" ["+event.srcElement.name+"]";
- mv=1;
- }
- function mu() {
- objet=null;
- }
- function cb() {
- if (mv==0) {
- alert("evenement \"onClic\" sur le bouton \""+event.srcElement.name+"\"." );
- }
- }
- document.onmousedown=md;
- document.onmousemove=mm;
- document.onmouseup=mu;
- </script>
- <textarea name="z" rows="3" cols="40" style="position:absolute;left:102px;top:0px">Vous pouvez déplacer tous les éléments présents sur cette page.</textarea>
- <input name="bouton de toto" type="button" value="Le Drag & Drop c'est génial" style="position:absolute;left:102px;top:55px" onClick="cb()">
- <div name="coucou" style="position:absolute;left:0px;top:0px;width:100px;height:200px;background-color:C0C0C0"></div>
- </body>
- </html>
|
Déplacement de Div pour donner l'impression d'une rotation autour d'un axe (à l'aide des quaternions)
Code :
- <html>
- <head><title>Javascript 3D by Oli</title></head>
- <body>
- <div id="fond" style="position:absolute;left:0px;top:0px;width:e
- xpression(document.body.clientWidth);height:expres
- sion(document.body.clientHeight);background-color:
- F7F7F7;border-width:3px;border-style:solid;border-
- color:80C0FF;z-index:0"></div>
- <script language="javascript">
- // structures utilisées
- var rss="";
-
- function rotation(n) {
- this.x=0;
- this.y=0;
- this.z=0;
- this.t=new Array(16);
- this.q=null;
- this.pos=Math.PI;
- this.pas=0;
- this.d=new Array(4);
- for (var k=0;k<4;k++) rss=rss+"<div id=\"o"+n+k+"\" style=\"position:absolute;left:0px;top:0px;width
- :20px;height:20px;background-color:80C0FF;font-siz
- e:0px;z-index:1;border-width:1px;border-color:60A0
- FF;border-style:solid\"></div>";
- }
- function quaternion() {
- this.w=0;
- this.x=1;
- this.y=0;
- this.z=0;
- }
- // variables
- var mt1=new Array(16);
- var mt2=new Array(16);
- var angle=0;
- var cx=document.body.clientWidth>>1;
- var cy=document.body.clientHeight>>1;
- var rp=0;
- var rnb=10;
- var r=new Array(rnb);
- // fonctions
- function am(t) {
- var s="<table><tr><td collspan=\"4\">Matrice</td>";
- for (var i=0;i<16;i++) {
- if ((i&3)==0) s=s+"</tr><tr>";
- s=s+"<td>"+t[i]+"</td>";
- }
- document.all.fond.innerHTML=document.all.fond.innerHTML+s+"</tr></table>";
- }
- function rx(t,a) {
- // | 1 0 0 0 |
- // | 0 cos(A) -sin(A) 0 |
- // | 0 sin(A) cos(A) 0 |
- // | 0 0 0 1 |
- t[0]=t[15]=1
- t[1]=t[2]=t[3]=t[4]=t[7]=t[8]=t[11]=t[12]=t[13]=t[14]=0;
- t[5]=t[10]=Math.cos(a);
- t[9]=Math.sin(a);
- t[6]=-t[9];
- }
- function qm(mat,q) {
- var xx = q.x * q.x;
- var xy = q.x * q.y;
- var xz = q.x * q.z;
- var xw = q.x * q.w;
- var yy = q.y * q.y;
- var yz = q.y * q.z;
- var yw = q.y * q.w;
- var zz = q.z * q.z;
- var zw = q.z * q.w;
- mat[0] = 1 - 2 * ( yy + zz );
- mat[1] = 2 * ( xy - zw );
- mat[2] = 2 * ( xz + yw );
- mat[4] = 2 * ( xy + zw );
- mat[5] = 1 - 2 * ( xx + zz );
- mat[6] = 2 * ( yz - xw );
- mat[8] = 2 * ( xz - yw );
- mat[9] = 2 * ( yz + xw );
- mat[10] = 1 - 2 * ( xx + yy );
- mat[3] = mat[7] = mat[11] = mat[12] = mat[13] = mat[14] = 0;
- mat[15] = 1;
- }
- function nq(q_) {
- var l=Math.sqrt(q_.w*q_.w + q_.x*q_.x + q_.y*q_.y + q_.z*q_.z);
- l=1/l;
- q_.w=q_.w*l;
- q_.x=q_.x*l;
- q_.y=q_.y*l;
- q_.z=q_.z*l;
- }
- function rq(_q,a,x,y,z) {
- var sin_a = Math.sin(a/2);
- var cos_a = Math.cos(a/2);
- _q.x = x * sin_a;
- _q.y = y * sin_a;
- _q.z = z * sin_a;
- _q.w = cos_a;
- nq(_q);
- }
- function mm(ma,mb,mr) {
- mr[ 0]=ma[ 0]*mb[ 0] + ma[ 1]*mb[ 4] + ma[ 2]*mb[ 8] + ma[ 3]*mb[12];
- mr[ 1]=ma[ 0]*mb[ 1] + ma[ 1]*mb[ 5] + ma[ 2]*mb[ 9] + ma[ 3]*mb[13];
- mr[ 2]=ma[ 0]*mb[ 2] + ma[ 1]*mb[ 6] + ma[ 2]*mb[10] + ma[ 3]*mb[14];
- mr[ 3]=ma[ 0]*mb[ 3] + ma[ 1]*mb[ 7] + ma[ 2]*mb[11] + ma[ 3]*mb[15];
- mr[ 4]=ma[ 4]*mb[ 0] + ma[ 5]*mb[ 4] + ma[ 6]*mb[ 8] + ma[ 7]*mb[12];
- mr[ 5]=ma[ 4]*mb[ 1] + ma[ 5]*mb[ 5] + ma[ 6]*mb[ 9] + ma[ 7]*mb[13];
- mr[ 6]=ma[ 4]*mb[ 2] + ma[ 5]*mb[ 6] + ma[ 6]*mb[10] + ma[ 7]*mb[14];
- mr[ 7]=ma[ 4]*mb[ 3] + ma[ 5]*mb[ 7] + ma[ 6]*mb[11] + ma[ 7]*mb[15];
- mr[ 8]=ma[ 8]*mb[ 0] + ma[ 9]*mb[ 4] + ma[10]*mb[ 8] + ma[11]*mb[12];
- mr[ 9]=ma[ 8]*mb[ 1] + ma[ 9]*mb[ 5] + ma[10]*mb[ 9] + ma[11]*mb[13];
- mr[10]=ma[ 8]*mb[ 2] + ma[ 9]*mb[ 6] + ma[10]*mb[10] + ma[11]*mb[14];
- mr[11]=ma[ 8]*mb[ 3] + ma[ 9]*mb[ 7] + ma[10]*mb[11] + ma[11]*mb[15];
- mr[12]=ma[12]*mb[ 0] + ma[13]*mb[ 4] + ma[14]*mb[ 8] + ma[15]*mb[12];
- mr[13]=ma[12]*mb[ 1] + ma[13]*mb[ 5] + ma[14]*mb[ 9] + ma[15]*mb[13];
- mr[14]=ma[12]*mb[ 2] + ma[13]*mb[ 6] + ma[14]*mb[10] + ma[15]*mb[14];
- mr[15]=ma[12]*mb[ 3] + ma[13]*mb[ 7] + ma[14]*mb[11] + ma[15]*mb[15];
- }
- function ts() {
- for (var i=0;i<rnb;i++) {
- rq(r[i].q,r[i].pos,r[i].x,r[i].y,r[i].z);
- qm(mt1,r[i].q);
- mm(mt1,r[i].t,mt2);
- for (var j=0;j<4;j++) {
- rp=(mt2[8+j]+100)/4;
- if (rp<5) rp=5;
- r[i].d[j].style.width=rp;
- r[i].d[j].style.height=rp;
- rp=rp>>1;
- r[i].d[j].style.left=cx+mt2[0+j]-rp;
- r[i].d[j].style.top=cy+mt2[4+j]-rp;
- r[i].d[j].style.zIndex=mt2[8+j]+150;
- }
- r[i].pos+=r[i].pas;
- }
- }
-
- function ri() {
- var rtt=0;
- for (var i=0;i<rnb;i++) {
- r[i]=new rotation(i);
- for (var j=0;j<12;j++) r[i].t[j]=(Math.random()*400)-200;
- r[i].t[12]=1;
- r[i].t[13]=1;
- r[i].t[14]=1;
- r[i].t[15]=1;
- r[i].q=new quaternion();
- rtt=Math.floor(Math.random()*7)+1;
- r[i].x=rtt&1;
- r[i].y=(rtt>>1)&1;
- r[i].z=(rtt>>2)&1;
- r[i].pos=Math.random()*Math.PI*2;
- r[i].pas=Math.random()*Math.PI/32;
- }
- fond.innerHTML=fond.innerHTML+rss;
- for (var i=0;i<rnb;i++) {
- for (var k=0;k<4;k++) {
- eval("r[i].d[k]=document.all.o"+i+k);
- }
- }
- }
-
- // instructions
- ri();
- setInterval("ts()",1);
- </script>
- </body>
- </html>
|
Tout ceci fonctionne avec IE ---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
|