Salut à tous,
je reviens avec mon histoire de div repositionnés en cascade.
Suite à renouvellement de contenus via Ajax,ou simple drag and drop, je redimensionne mes div et les reposionne en cascade en fonction de leurs offsetHeight.
Tout se passe bien sauf pour les modules composés de gif animés.
ca marche impécable pour IE, mais le seul cas ou ca foire c'est si le module est composé de gif animés sous Firefox .
OffsetHeight semble impuissant à donner une valeur correcte pour le style.height de sorte que le contenu d'un div ne déborde pas, et que ma fonction de repositionnment en cascade fonctionne correctement.
le résultat c'est un léger débordement et chevauchement des modules de gifs animés sur le module du dessous.
en parlant de la fonction la voici :
Je tiens a repréciser que je travaille avec des positions absolute, car j'implémente un systeme de drag & drop dans la verticalité où les modules sont en colonne et peuvent swapper.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 /** * etalonne le positions des blocks, suite a changement de contenus ou drag de l'un eux (si nécessaire) * * @author chuuuuut!!! * @return néant */ function reset_position() { var a = aElts.length; var temp_h; var current_pos = parseInt(document.getElementById("card_header").offsetTop) + parseInt(document.getElementById("card_header").offsetHeight) + 50; var browser = navigator.appName; for(i = 0;i < a;i++) { // replace le module courant aElts[i].moveTo(margLeft, current_pos); // récupère sa hauteur réelle temp_h = parseInt(document.getElementById(aElts[i].name).offsetHeight); // relève le top du prochain module (hauteur du courant + marge de 10) current_pos += (temp_h + 10); // affecte la taille d'affichage du module courant document.getElementById(aElts[i].name).style.height = temp_h + 'px'; } // réaffecte la hauteur de toute la card + le top du div qui produit la marge du bas document.getElementById("ma_page").style.height = parseInt(current_pos) - 20; document.getElementById("space").style.top = (parseInt(current_pos) + 20) + 'px'; // enfin vérifie si la liste des modules à été modifiée (ordre/efectif des modules) //appelle éventuellement la fonction d'update en base var new_mod_list = implode(',', mod_tab); if(new_mod_list != mod_list) { mod_list = new_mod_list; update_mod_list(); } }
(c'est une IHM, génératrice de page wap)
donc précisément je vous demande si vous avez déja été confrontés a des offsetHeight farfelus pour des blocs contenant des gifs animés?
ou si il y a mieux a faire dans ma fonction pour ce reposionnement en cascade avec des tailles 'affichages en accord avec le contenus des blocs?
par avance merci.
Partager