Paramètres height/width variables + limite de la fenêtre sous Mozilla

Paramètres height/width variables + limite de la fenêtre sous Mozilla - HTML/CSS - Programmation

Marsh Posté le 20-09-2004 à 16:25:10    

(Le problème actuel s'est tellement écarté du sujet de départ que j'en crée un nouveau.)
 
J'essaie d'améliorer le javascript suivant sur deux points:
1°- J'aimerais que les paramètres DOTSIZEHEIGTH et DOTSIZEWIDTH puissent varier en fonction des dimensions des différents objet qu'on traite indiquées dans le <div>.
 
J'avais pensé à quelque chose du genre "DOTSIZEHEIGTH = dots[i].obj.height;"à placer dans le for{} concerné ... mais cela ne marche pas ... (éventuellement en faisant de DOTSIZEHEIGTH et DOTSIZEWIDTH)...  enfin, je suis sur qu'il doit y avoir une solution à ce problème.
 
2°-Sous Mozilla/Netscape et compagnie, les images ne rebondissent pas sur le côté droit ni sur le bas de la fenêtre (ni sur le haut mais là c'est normal)
 
Vous pouvez voir fonctionner ce javascript ici:
http://www.webisdead.net/xhtml-index-test.html
(page d'acceuil en reconstruction
 
et là (objets volontairement mal dimensionné, peut provoquer des étirements de la fenêtre ...):
 
http://www.webisdead.net/megaptere
 

Code :
  1. voir plus bas


Message édité par Ludwig von 97 le 20-09-2004 à 23:47:00

---------------
http://www.webisdead.net http://videos.webisdead.net http://folding.webisdead.net
Reply

Marsh Posté le 20-09-2004 à 16:25:10   

Reply

Marsh Posté le 20-09-2004 à 21:13:15    

Citation :

2°-Sous Mozilla/Netscape et compagnie, les images ne rebondissent pas sur le côté droit ni sur le bas de la fenêtre (ni sur le haut mais là c'est normal)


 
Résolu en remplacant (Sauf que maintenant ça ne rebondit plus sur le bas de Opera :o ) :  
 
if (isNetscape) {  
height = window.innerHeight + document.scrollTop;  
width = window.innerWidth + document.scrollLeft;  
} else {  
height = document.documentElement.clientHeight + document.documentElement.scrollTop;  
width = document.documentElement.clientWidth + document.documentElement.scrollLeft;  
}  
 
par
 
height = document.documentElement.clientHeight + document.documentElement.scrollTop;  
width = document.documentElement.clientWidth + document.documentElement.scrollLeft;  
 
:D
 
Reste problème 1°


Message édité par Ludwig von 97 le 20-09-2004 à 21:15:44

---------------
http://www.webisdead.net http://videos.webisdead.net http://folding.webisdead.net
Reply

Marsh Posté le 21-09-2004 à 00:06:19    

Version finale actuelle de ce javascript pour le moment en ce qui me concerne:
 
demo: http://www.webisdead.net/xhtml-index-test.html
(index.html en reconstruction lente et pas définitive du tout)
 
nouveautés par rapport au début:
 
- compatible XHTML (re-compatible HTML en remplaçant un "documentElement" par "body" )
- compatible avec Netscape/Mozilla/FireFox ... (défaut restant: les éléments ne rebondissent pas sur le bord en bas d'Opera)
- définition de tailles différentes, séparément pour chaque élément
 
 

Code :
  1. <div id="dot9" style="width:384; height:204; position:absolute; top:0; left:0;"><img src="megaptere/megaptere.gif"alt="Baleine" /></div>
  2. <div id="dot8" style="width:1; height:1; position:absolute; top:0; left:0; text-align:left; font-weight:bold"><a href="http://folding.webisdead.net">Folding@Home</a></div>
  3. <div id="dot7" style="width:1; height:1; position:absolute; top:0; left:0;  visibility: hidden;"><img src="images/penguin01.gif"alt="Pingouin" /></div>
  4. <div id="dot6" style="width:1; height:1; position:absolute; top:0; left:0;  visibility: hidden;"><img src="images/penguin01.gif" alt="Pingouin" /></div>
  5. <div id="dot5" style="width:51; height:52; position:absolute; top:0; left:0; "><img src="images/penguin05.gif" alt="Pingouin" /></div>
  6. <div id="dot4" style="width:35; height:60; position:absolute; top:0; left:0; "><img src="images/penguin04.gif" alt="Pingouin" /></div>
  7. <div id="dot3" style="width:28; height:60; position:absolute; top:0; left:0; "><img src="images/penguin03.gif" alt="Pingouin" /></div>
  8. <div id="dot2" style="width:32; height:60; position:absolute; top:0; left:0; "><img src="images/penguin02.gif" alt="Pingouin" /></div>
  9. <div id="dot1" style="width:32; height:60; position:absolute; top:0; left:0; "><img src="images/penguin01.gif" alt="Pingouin" /></div>
  10. <div id="dot0" style="width:1; height:1; position:absolute; top:0; left:0; visibility: hidden;"><img src="images/penguin01.gif" alt="Pingouin" /></div>
  11. <script language="JavaScript" type="text/javascript">
  12. <!-- Original: Philip Winston (pwinston@yahoo.com) Web Site: <http://members.xoom.com/ebullets> -->
  13. <!-- 'Scrolling Fix' by Troels Jakobsen <tjak@get2net.dk> -->
  14. <!-- 'Two dimensions DOTSIZE adaptable element by element' by Ludwig von 97 (http://www.webisdead.net) (!!! DOTSIZEHEIGHT and DOTSIZEWIDTH arrays must be filled manually for now.)  -->
  15. <!-- Adapted for XTHML + Netscape/Mozilla/FireFox/... by GhislainLavoie on <http://www.editeurjavascript.com/forum>, vwphillips on <http://js-x.com/forum> and Ludwig von 97 (http://www.webisdead.net) , thanks to Willy Duitt too -->
  16. <!-- To use in HTML instead of XHTML, replace "documentElements" by "body". Last update 21st September 2004 by Ludwig von 97 (http://www.webisdead.net) -->
  17. <!--
  18. var nDots = 10; // must be equal to the number of elements (including "dot0" )
  19. var Xpos = 0;
  20. var Ypos = 0;
  21. var Ypos = 0;
  22. var DELTAT = .01;
  23. var SEGLEN = 5;
  24. var SPRINGK = 6;
  25. var MASS = 2;
  26. var GRAVITY = 0;
  27. var RESISTANCE = 10;
  28. var STOPVEL = 0.1;
  29. var STOPACC = 0.1;
  30. var BOUNCE = 0.60;
  31. var DOTSIZEHEIGHT = new Array(1,60,60,60,60,52,1,1,10,204); // two dimensions dotsize, must be equal to respective elements height (LV97)
  32. var DOTSIZEWIDTH = new Array(1,32,32,28,35,51,1,1,1,384); // two dimensions dotsize, must be equal to respective elements width (LV97)
  33. var isNetscape = navigator.appName=="Netscape";
  34. var followmouse = true;
  35. var dots = new Array();
  36. init();
  37. function init() {
  38. var i = 0;
  39. for (i = 0; i < nDots; i++) {
  40. dots[i] = new dot(i);
  41. }
  42. if (!isNetscape) {
  43. // I only know how to read the locations of the  
  44. // <LI> items in IE
  45. // skip this for now
  46. // setInitPositions(dots)
  47. }
  48. for (i = 0; i < nDots; i++) {
  49. dots[i].obj.left = dots[i].X+"px"; // "+"px"" (XHTML related) suggested by GhislainLavoie
  50. dots[i].obj.top = dots[i].Y+"px"; // "+"px"" (XHTML related) suggested by GhislainLavoie
  51. }
  52. if (isNetscape) {startanimate();}
  53. else {
  54. // let dots sit there for a few seconds
  55. // since they're hiding on the real bullets
  56. setTimeout("startanimate()", 3000);}}
  57. function dot(i) {this.X = Xpos; this.Y = Ypos; this.dx = 0; this.dy = 0;
  58. this.obj = eval("document.getElementById('dot'+" + i + " ).style" );} // previously "if (isNetscape) {this.obj = eval("document.dot" + i);}" (GhislainLavoie)
  59.                                                                     // previously "else {this.obj = eval("dot" + i + ".style" );}}" (GhislainLavoie)
  60. function startanimate() {setInterval("animate()", 20);}
  61. function setInitPositions(dots) {
  62. var startloc = document.all.tags("LI" );
  63. var i = 0;
  64. for (i = 0; i < startloc.length && i < (nDots - 1); i++) {
  65. dots[i+1].X = startloc[i].offsetLeft
  66. startloc[i].offsetParent.offsetLeft - DOTSIZEWIDTH[i]; // two dimension dotsize + adaptable width (LV97)
  67. dots[i+1].Y = startloc[i].offsetTop +
  68. startloc[i].offsetParent.offsetTop + 2*DOTSIZEHEIGHT[i]; // two dimension dotsize + adaptable height (LV97)
  69. }
  70. dots[0].X = dots[1].X;
  71. dots[0].Y = dots[1].Y - SEGLEN;
  72. }
  73. function MoveHandler(e) {
  74. Xpos = e.pageX;
  75. Ypos = e.pageY;  
  76. return true;
  77. }
  78. function MoveHandlerIE() {
  79. Xpos = window.event.x + document.documentElement.scrollLeft; // previously "documentElement" --> "body" (LV97)
  80. Ypos = window.event.y + document.documentElement.scrollTop; // previously "documentElement" --> "body" (LV97)
  81. }
  82. if (isNetscape) {
  83. // "document.captureEvents(Event.MOUSEMOVE);" <-- removed by GhislainLavoie
  84. document.onmousemove = MoveHandler;
  85. } else {
  86. document.onmousemove = MoveHandlerIE;
  87. }
  88. function vec(X, Y)
  89. {this.X = X;
  90. this.Y = Y;}
  91. // adds force in X and Y to spring for dot[i] on dot[j]
  92. function springForce(i, j, spring)
  93. {
  94. var dx = (dots[i].X - dots[j].X);
  95. var dy = (dots[i].Y - dots[j].Y);
  96. var len = Math.sqrt(dx*dx + dy*dy);
  97. if (len > SEGLEN) {
  98. var springF = SPRINGK * (len - SEGLEN);
  99. spring.X += (dx / len) * springF;
  100. spring.Y += (dy / len) * springF;
  101. }}
  102. function animate(){
  103. var start = 0;
  104. if (followmouse){
  105. dots[0].X = Xpos;
  106. dots[0].Y = Ypos;
  107. start = 1;
  108. }
  109. for (i = start ; i < nDots; i++ ) {
  110. var spring = new vec(0, 0);
  111. if (i > 0) {
  112. springForce(i-1, i, spring);
  113. }
  114. if (i < (nDots - 1)) {
  115. springForce(i+1, i, spring);
  116. }
  117. var resist = new vec(-dots[i].dx * RESISTANCE, -dots[i].dy * RESISTANCE);
  118. var accel = new vec((spring.X + resist.X)/ MASS, (spring.Y + resist.Y)/ MASS + GRAVITY);
  119. dots[i].dx += (DELTAT * accel.X);
  120. dots[i].dy += (DELTAT * accel.Y);
  121. if (Math.abs(dots[i].dx) < STOPVEL &&
  122. Math.abs(dots[i].dy) < STOPVEL &&
  123. Math.abs(accel.X) < STOPACC &&
  124. Math.abs(accel.Y) < STOPACC) {
  125. dots[i].dx = 0;
  126. dots[i].dy = 0;
  127. }
  128. dots[i].X += dots[i].dx;
  129. dots[i].Y += dots[i].dy;
  130. var height, width;
  131. height = document.documentElement.clientHeight + document.documentElement.scrollTop;
  132. width = document.documentElement.clientWidth + document.documentElement.scrollLeft;
  133. // the two above lines: previously "if (isNetscape) {height = window.innerHeight + document.scrollTop; width = window.innerWidth + document.scrollLeft;} else {height = document.body.clientHeight + document.body.scrollTop; width = document.body.clientWidth + document.body.scrollLeft;}" (LV97 & vwphillips)
  134. if (dots[i].Y >=  height - DOTSIZEHEIGHT[i] - 1) { // two dimensions dotsize adapted + adaptable height (LV97)
  135. if (dots[i].dy > 0) {
  136. dots[i].dy = BOUNCE * -dots[i].dy;
  137. }
  138. dots[i].Y = height - DOTSIZEHEIGHT[i] - 1; // two dimensions dotsize adapted + adaptable height (LV97)
  139. }
  140. if (dots[i].X >= width - DOTSIZEWIDTH[i] - 1) { // two dimensions dotsize adapted + adaptable width (LV97)
  141. if (dots[i].dx > 0) {
  142. dots[i].dx = BOUNCE * -dots[i].dx;
  143. }
  144. dots[i].X = width - DOTSIZEWIDTH[i] - 1; // two dimensions dotsize adapted + adaptable width (LV97)
  145. }
  146. if (dots[i].X < 0) {
  147. if (dots[i].dx < 0) {
  148. dots[i].dx = BOUNCE * -dots[i].dx;
  149. }
  150. dots[i].X = 0;
  151. }
  152. dots[i].obj.left = dots[i].X+"px"; // "+"px"" (XHTML related) suggested by GhislainLavoie    
  153. dots[i].obj.top = dots[i].Y+"px"; // "+"px"" (XHTML related) suggested by GhislainLavoie
  154. }}
  155. --></script>


---------------
http://www.webisdead.net http://videos.webisdead.net http://folding.webisdead.net
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed