Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Webmasters - Développement Web > Javascript

Javascript Forum programmation JavaScript. Lire Cours JavaScript, FAQ JavaScript et Sources JavaScript

Réponse
 
Outils de la discussion
Vieux 11/10/2008, 14h01   #1 (permalink)
Modérateur
 
Avatar de HiRoN
 
Date d'inscription: août 2007
Localisation: Aix-en-Provence
Messages: 794
Envoyer un message via MSN à HiRoN Envoyer un message via Yahoo à HiRoN
Par défaut Afficher / Cacher Div + Effet sur Texte

Bonjour,

A partir d'un script que j'ai repris & amélioré, j'affiche ou cache un div en cliquant sur un lien (a href). J'ai ajouté un effet sur la taille de la police pour qu'elle grossisse (ou se réduise) "proportionnellement" à la taille du block.

J'ai donc tenté de rendre le block plus ou moins "générique" de façon à ce que peut importe la taille de mon block, la taille du texte soit toujours la même.

Un petit exemple de mon script en ligne : ici (voir la source pour afficher l'intégralité du code)

Plusieurs problèmes :

1 - Sous IE, on peut ouvrir / fermer le Div mais 1 seule fois (après ça plante, la page contient une erreur mais je n'arrive pas à la corriger).
2 - sous IE un espace se crée sous le div (+ il est grand, + l'écart est important).
3 - Sous IE, il ne me prend pas en compte le CSS (qui est correctement compris sous Firefox).

4 (Bonus) - Je donne en paramètre le nombre de ligne (je calcule avec le script grossièrement la taille totale du block en fonction = police 13px + marge 5px x nbre de ligne), comment mieu ajuster cette taille ?

N'étant pas un expert en Javascript, je me tourne vers vous en espérant finaliser correctement mon script
Je suis preneur de toutes corrections sur les 4 points énoncés + haut (surtout la 1ere, afin que l'ouverture / fermeture soit correctement exécuté)

Cordialement,
__________________
Pensez à utiliser les ressources disponibles en Dev. Web :
(x)HTML : Cours (X)HTML / FAQ (X)HTML
CSS : Cours CSS / FAQ CSS / Galerie CSS
Javascript : Cours / FAQ / Sources
We live, we learn...

Dernière modification par HiRoN ; 11/10/2008 à 14h40
HiRoN est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/10/2008, 14h15   #2 (permalink)
Rédacteur/Modérateur
 
Avatar de Bovino
 
Date d'inscription: juin 2008
Localisation: Bordeaux
Âge: 38
Messages: 2 070
Par défaut

Bonjour,
Désolé, j'ai pas trop le temps de regarder ton code en détail, mais j'avais créé une petite fonction similaire il y a quelque temps, donc tu peux l'adapter et l'utiliser.
En revanche, elle n'ouvre et ferme que verticalement, mais ça doit pas être trop compliqué de faire un effet horizontal en parallèle...
Code :
var restaure = new Array;
window.onload=function(){
	restaure['zone2'] = document.getElementById('zone2').offsetHeight;
	document.getElementById('zone2').style.height = '0px';
	document.getElementById('zone2').style.overflow = 'hidden';
	document.getElementById('zone2').style.display = 'none';
}
function swap(elmt){
	elt=document.getElementById(elmt);
	if(elt.style.display=='none'){
		var taille = restaure[elmt];
		elt.style.display = '';
		var timer = setInterval(function(){
			if(taille>elt.offsetHeight){elt.style.height=(elt.offsetHeight+5)+'px'}
			else{elt.style.height='auto';clearInterval(timer)}
		},1);
	}
	else{
		var taille = elt.offsetHeight;
		restaure[elmt] = taille;
		elt.style.overflow='hidden';
		var timer = setInterval(function(){
			if(taille>=5){elt.style.height=taille+'px';taille-=5;}
			else{elt.style.display='none';clearInterval(timer)}
		},1);
	}
}
 
Explications :
Tu initialises d'abord un tableau élément/taille pour stocker les dimensions initiales de tes éléments.
Dans le onload, tu stockes les tailles des éléments que tu souhaites cacher par défaut.
Tu appelles la fonction swap(element) avec comme paramètre l'id de l'élément que tu veux afficher/masquer.

Voilà, si tu as des questions, n'hésites pas
__________________
quand on me parle de confiance, je crie "Au voleur !!!"
Code :
#Bovino{
   chambreur: max;
   cassant: repeatedly;
   mechant: never;
   competent: none !important;
}
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 11/10/2008, 14h18   #3 (permalink)
Modérateur
 
Avatar de HiRoN
 
Date d'inscription: août 2007
Localisation: Aix-en-Provence
Messages: 794
Envoyer un message via MSN à HiRoN Envoyer un message via Yahoo à HiRoN
Par défaut

Salut Bovino et merci pour ta réactivité.
Je vais analyser ton script dès que j'ai un moment
__________________
Pensez à utiliser les ressources disponibles en Dev. Web :
(x)HTML : Cours (X)HTML / FAQ (X)HTML
CSS : Cours CSS / FAQ CSS / Galerie CSS
Javascript : Cours / FAQ / Sources
We live, we learn...
HiRoN est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/10/2008, 14h30   #4 (permalink)
Modérateur
 
Avatar de HiRoN
 
Date d'inscription: août 2007
Localisation: Aix-en-Provence
Messages: 794
Envoyer un message via MSN à HiRoN Envoyer un message via Yahoo à HiRoN
Par défaut

@Bovino : En effet script sympa. Mais, lors de la 1ere ouverture (autant sous FF que IE), l'effet "progressif" ne se fais pas. Une idée ?

Néanmoins, fonctionne très bien sous sous FF & IE avec de multiples ouvertures à la différence du mien

Je vais voir pour rajouter mon effet sur le grossissement / réduction des lettres en même temps, mais bon, j'ai bien galéré pour réussir sur le mien

EDIT : J'ai peut-être mal fais quelque chose, serait-il possible d'avoir l'intégralité du code ? (avec appel côté HTML)
__________________
Pensez à utiliser les ressources disponibles en Dev. Web :
(x)HTML : Cours (X)HTML / FAQ (X)HTML
CSS : Cours CSS / FAQ CSS / Galerie CSS
Javascript : Cours / FAQ / Sources
We live, we learn...
HiRoN est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/10/2008, 14h44   #5 (permalink)
Rédacteur/Modérateur
 
Avatar de Bovino
 
Date d'inscription: juin 2008
Localisation: Bordeaux
Âge: 38
Messages: 2 070
Par défaut

Oui, si tu as mis un display:'none' en css, du coup, à l'ouverture de la page, la hauteur enregistrée est 0px, donc à la 1re ouverture, c'est uniquement le height auto qui s'affiche j'imagine...
__________________
quand on me parle de confiance, je crie "Au voleur !!!"
Code :
#Bovino{
   chambreur: max;
   cassant: repeatedly;
   mechant: never;
   competent: none !important;
}
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 11/10/2008, 14h49   #6 (permalink)
Modérateur
 
Avatar de HiRoN
 
Date d'inscription: août 2007
Localisation: Aix-en-Provence
Messages: 794
Envoyer un message via MSN à HiRoN Envoyer un message via Yahoo à HiRoN
Par défaut

Citation:
Envoyé par Bovino Voir le message
Oui, si tu as mis un display:'none' en css, du coup, à l'ouverture de la page, la hauteur enregistrée est 0px, donc à la 1re ouverture, c'est uniquement le height auto qui s'affiche j'imagine...
C'était en effet cela le problème, j'avais capté entre temps.
Reste à adapter mon effet sur la police. Si tu as des idées, je suis preneur
__________________
Pensez à utiliser les ressources disponibles en Dev. Web :
(x)HTML : Cours (X)HTML / FAQ (X)HTML
CSS : Cours CSS / FAQ CSS / Galerie CSS
Javascript : Cours / FAQ / Sources
We live, we learn...
HiRoN est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/10/2008, 15h02   #7 (permalink)
Rédacteur/Modérateur
 
Avatar de Bovino
 
Date d'inscription: juin 2008
Localisation: Bordeaux
Âge: 38
Messages: 2 070
Par défaut

Je pense que tu peux reprendre le même principe d'un tableau stockant les valeurs par défaut, ensuite, quand tu lances la fonction, tu affecte un facteur proportionnel de la diminution de la taille de la fenêtre sur la police...
En résumé (pour la disparition), tu crée la variable
Code :
rapport=5*taille_police/taille_div
(le 5*, c'est la valeur du pas que j'ai donné), puis dans la fonction, tu affectes
Code :
elt.style.fontSize-=rapport
__________________
quand on me parle de confiance, je crie "Au voleur !!!"
Code :
#Bovino{
   chambreur: max;
   cassant: repeatedly;
   mechant: never;
   competent: none !important;
}
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 26/11/2008, 21h31   #8 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: novembre 2008
Localisation: Nancy
Messages: 22
Par défaut

pouvez vous me dire ce qu'il faut modifier pour que a la première visualisation il n'y ai pas ce problème d'agrandissement non progressif.

J'ai regardé du coté du diplay:none mais rien n'a faire

En faite lors du premier clique j'ai l'impression qu'il commence bien au début a ouvrir le Div pendant 1/2 seconde puis il affiche tout.
Par contre ensuite sa passe nickel.

Merci !!
madmax54 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/11/2008, 21h41   #9 (permalink)
Rédacteur/Modérateur
 
Avatar de Bovino
 
Date d'inscription: juin 2008
Localisation: Bordeaux
Âge: 38
Messages: 2 070
Par défaut

Tu peux n'affecter le display: none qu'après le stockage de la page, mais du coup, à l'affichage, ton élément est affiché furtivement puis caché, du coup, pour parer aussi à cela, tu peux affecter un z-index (si c'est possible) négatif au départ puis le remettre à une valeur 'visible' après avoir affecté le display none.
__________________
quand on me parle de confiance, je crie "Au voleur !!!"
Code :
#Bovino{
   chambreur: max;
   cassant: repeatedly;
   mechant: never;
   competent: none !important;
}
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation
NEWS JAVASCRIPTF.A.Q JAVASCRIPTTUTORIELS JAVASCRIPTSSOURCES JAVASCRIPTLIVRESAJAX

Réponse

Précédent   Forum des développeurs > Webmasters - Développement Web > Javascript

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide