Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EFFET DOCK MAC OS POUR VOS MENUS


Information sur la source

Catégorie :Menu & Co Classé sous : dock, mac, os, icon Niveau : Débutant Date de création : 22/09/2004 Date de mise à jour : 17/01/2007 16:28:36 Vu / téléchargé: 23 916 / 3 234

Note :
9,25 / 10 - par 16 personnes
9,25 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (31)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Plutot qu'un menu déroulant à la windows, je vous propose un barre de menu (un dock comme on dit dans le jargon) à la MacOS.
En gros l'effet est le suivant : quand on passe la souris sur les images, ces dernières grossissent plus ou moins en fonction de la position de la souris.
Compatible IE 5.5 et Mozilla/Netscape 7
Puissance recommendée : 1Ghz

Il y a 3 fichiers HTML car 3 méthodes différentes.
Une linéraire (la plus belle et plus simple).
Demo : http://www.3dxmakina.fr/demo/dock_macos/dock_lineaire.html

Une verticale (pour les menus verticaux).
Demo : http://www.3dxmakina.fr/demo/dock_macos/dock_verticale.html

Une sinuzoïdale (moins jolie à mon gout).
Demo : http://www.3dxmakina.fr/demo/dock_macos/dock_sinuzoide.html

Une qui n'agit que sur l'icon selectionné (un autre style).
Demo : http://www.3dxmakina.fr/demo/dock_macos/dock_icon.html

 

Source

  • Pour les codes HTML commentés : voir le ZIP
  • Je présente ici le code de la linéraire.
  • MIN = 33 ; // largeur minimum en pixel
  • MAX = 115 ; // largeur maximum en pixel
  • REACTION = 1.2 ; // réaction des icons par rapport à la souris. plus grand --> plus d'icons qui réagissent
  • A = ((MIN-MAX)/(MAX * REACTION)) ; // coef directeur de la droite d'agrandissement
  • IE = document.all ? 1 : 0 ;
  • img_tags = new Array();
  • function ouestmasouris(e)
  • {
  • var dock = document.getElementById('dock') ; // div qui contient la barre de menu.
  • var x = 0;
  • if (IE) x = e.clientX ; // coordonnées x et y de la souris sur IE 5.5
  • else x = e.pageX ; // coordonnées x de la souris sur Mozilla ou Netscape 7
  • x -= dock.offsetLeft ; // on modifie la coordonnée pour quelle soit relatif au div et non à la fenetre.
  • img_tags = dock.getElementsByTagName('img') ; // les images contenus dans le div
  • for(i=0 ; i<img_tags.length ; i++) // pour chaque images
  • {
  • millieu = img_tags[i].offsetLeft + parseInt(img_tags[i].style.width)/2 ;
  • delta = millieu - x ;
  • if (delta < 0) delta *= -1 ;
  • coef = A * delta + MAX ;
  • if (coef < MIN) coef = MIN ;
  • else if (coef > MAX) coef = MAX ;
  • img_tags[i].style.width=coef;
  • img_tags[i].style.height=coef;
  • }
  • }
Pour les codes HTML commentés : voir le ZIP
Je présente ici le code de la linéraire.


MIN = 33 ;  // largeur minimum en pixel
MAX = 115 ; // largeur maximum en pixel
REACTION = 1.2 ; // réaction des icons par rapport à la souris. plus grand --> plus d'icons qui réagissent

A = ((MIN-MAX)/(MAX * REACTION)) ; // coef directeur de la droite d'agrandissement
IE = document.all ? 1 : 0 ;
img_tags = new Array();

function ouestmasouris(e)
{
	var dock = document.getElementById('dock') ; // div qui contient la barre de menu.

	var x = 0;
	if (IE)	x = e.clientX ; // coordonnées x et y de la souris sur IE 5.5
	else	x = e.pageX ;  // coordonnées x de la souris sur Mozilla ou Netscape 7
		
	x -= dock.offsetLeft ; // on modifie la coordonnée pour quelle soit relatif au div et non à la fenetre.
	
	img_tags = dock.getElementsByTagName('img') ; // les images contenus dans le div

	for(i=0 ; i<img_tags.length ; i++) // pour chaque images
	{
		millieu = img_tags[i].offsetLeft + parseInt(img_tags[i].style.width)/2 ;
		delta = millieu - x ;

		if (delta < 0) delta *= -1 ;

		coef = A * delta + MAX ;

		if (coef < MIN) coef = MIN ;
		else if (coef > MAX) coef = MAX ;

		img_tags[i].style.width=coef;
		img_tags[i].style.height=coef;
	}	
}

Conclusion

C'est mon premier post.
L'effet est plus sympa sur Mozilla car il gere mieux la transparence des PNG de mon exemple.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

22 septembre 2004 17:51:23 :
22 septembre 2004 21:33:29 :
J'ai rajouté une méthode sinuzoidale qui modifie les icons a la droite et à la gauche de la souris. Voir docksin.html dans le zip
23 septembre 2004 09:56:01 :
J'ai rajouté la méthode "linéaire" que je trouve plus jolie personnelement.
21 août 2005 15:32:10 :
Rajout du menu verticale suite aux demandes des visiteurs.
17 janvier 2007 16:26:20 :
Ajout des démos
17 janvier 2007 16:28:36 :
demo

Commentaires et avis

signaler à un administrateur
Commentaire de ThunderPsycho le 23/09/2004 06:46:22

Mmmhhh Désolé, la source existe déja :

->   http://www.javascriptfr.com/code.aspx?ID=19298

signaler à un administrateur
Commentaire de ryosama le 23/09/2004 09:15:27

En effet je m'en suis aperçu apres coup.
Il y a 2 autres sources qui font la meme chose.

Mais nos 3 sources utilisent des algo différent pour l'effet de Zoom.

Je pense que ca vaut la peine de les laisser.

signaler à un administrateur
Commentaire de lumesh le 23/09/2004 16:58:27

superbe !

domage que IE n'aime pas les PNG mais bon le resultat est plutot bien reproduit (et à mon grand etonnement, pas de ralentissement ou autre !)

signaler à un administrateur
Commentaire de Kirua le 23/09/2004 22:11:55

du plus bel effet :) bravo, c'est très réussi

signaler à un administrateur
Commentaire de olid le 27/09/2004 12:52:19

Bon code, mais perso je m'en servirais pô pour faire un site...

Vouloir simuler des OS (Windows, Mac, Linux) pour un site est  un peu une mode "Site perso Kitch", et c'est aussi à mon sens du gachis... L'avantage du web est quand meme de donner une liberté totale pour ses GUI, alors autant en profiter bon sang !!! ;op

Enfin bon, ya eu de la recherche dans cette source, de bonnes astuces, et surement pas mal de boulot... 10 ;o)

signaler à un administrateur
Commentaire de lumesh le 28/09/2004 10:09:34

et par un moment ce fut les logiciels de se prendre pour des site web avec cette "sensation de liberté" au nvo du GUI (les skins).
Mais ou va le monde je vous le demande ! mais ou va t on ?! ;)

signaler à un administrateur
Commentaire de Kirua le 28/09/2004 16:43:39

l'art c'est toujours cyclique ;) tantôt la ligne, tantôt la courbe... donc d'une certaine manière, on va en arrière, mais pq pas? ça fait des millénaires qu'en allant tjs en arrière on avance, alors go :p

signaler à un administrateur
Commentaire de LiBe444 le 09/10/2004 21:45:18

Malgré le commentaire de ThunderPsycho, ce type de script est toujours bluffant.

Et la formulation algorithmique est si simple qu'elle en devient une vraie formule magique.

Bienvenue au club ryosama avec mes encouragements : 10/10.

signaler à un administrateur
Commentaire de dionysos6868 le 05/11/2004 16:57:27

Il marche super bien sous FIREFOX mais pas du tout sous IE .

sous ie le menu reste en haut de la page ce qui fait que quand je descend ma scrollbar le menu disparait.

quelqu'un a une idée?

signaler à un administrateur
Commentaire de ryosama le 08/11/2004 09:21:52

En effet sous IE pas moyen de faire tenir le menu en haut de page.
Normalement l'option "position:fixed" du menu permet de réaliser ce miracle mais IE et les Style CSS c'est un coup oui, un coup non.

Il a toujours moyen de capter le scroll de ta page et de faire descendre le menu en conséquence.  Je suis sûr que des scripts sur ce site le fond déjà.

Personnelement, j'ai la fleme ;-)

signaler à un administrateur
Commentaire de przelvis le 18/03/2005 16:39:58

féllicitation vraiment bien, bon code facile à utiliser.
Un problème, l'image reste grossie si on sort de la barre mais tant pis il est quand même super.
kariboo

signaler à un administrateur
Commentaire de daan53 le 18/05/2005 15:28:12

Ce code est exactement le code que je cherchais, mais j'aimerais l'avoir en vertical. Existe-t-il deja en vertical ou est il possible de le creer en vertical?
Moi je n'y arrive pas en tout cas.
Je suis utilisateur de mac.

Merci de me répondre.
Daan

signaler à un administrateur
Commentaire de TcHoUn le 21/08/2005 13:58:12

Super code... pareil je le cherchais depuis pas mal de temps... Par contre je relance la proposition de Daan53... J'ai beau chercher, j'arrive pas à trouver comment le foutre en vertical ?

Si quelqu'un pouvais passer en mode explication...

-Merci d'avance-

signaler à un administrateur
Commentaire de ryosama le 21/08/2005 15:33:54

Suite à 2 demandes, j'ai rajouté un menu verticale.

signaler à un administrateur
Commentaire de TcHoUn le 21/08/2005 16:09:56

Super ryosama .......Pour ne pas mourir idiot, je vais de ce pas voir ce que tu as modifier dans le code


Merci encore ;)

signaler à un administrateur
Commentaire de DJTIME le 13/01/2006 10:32:55

pas mal juste qu'il faudrait je penser utiliser quelques frames.iframes ca la fait pas a chaque fois que tu touche au mlenu t'as l'ecriture qui descend et remonte ca me donne le mal de mer :)
Bon c'est juste un plus que je remarque sinon ben pour le boulot 10/10

signaler à un administrateur
Commentaire de daan53 le 13/01/2006 16:53:15

C'est quoi des "frames.iframes"??
Merci pour le menu vertical aussi, RYOSAMA!

signaler à un administrateur
Commentaire de atlante34 le 16/05/2006 18:34:22

enorme ton code,
Ca fait trop style ...
Beau boulot,

Atlante34

signaler à un administrateur
Commentaire de baba0076 le 27/06/2006 22:20:29

Euh je ne comprends pas pourquoi lors d'un imbricaque assez complexe ou dans cetains cas, la souris ne fais rien ou ne bouge pas au bon endroit...

signaler à un administrateur
Commentaire de urbanrageisback le 05/06/2007 12:21:22

l algo est terrible
on trouvera pas mieux, simple et rapide
super boulot !!!

merci

signaler à un administrateur
Commentaire de Dark Silver le 20/06/2007 03:11:05

Il y a un problème avec FF, l'effet ne se limite pas au div donc meme si on se balade avec la souris quelque part dans la page en dessous de la barre dock, il y a quand meme un zoom sur les icones ce qui est très embétant :/.

signaler à un administrateur
Commentaire de Dark Silver le 20/06/2007 03:24:36

Ah non j'ai rien dit erreur de ma part désolé, si non l'effet est terrible !! Félicitation ;)

signaler à un administrateur
Commentaire de eltoad le 12/11/2007 22:23:56 10/10

Bonjour,

Je trouve votre script vraiment sympa. Mais par contre chez moi, si je quitte la liste d'icone un peu vite, l'icone ne revient pas à la taille original (tester sous safari et camino).
Suis je le seul à avoir cela ou d'autre on ça ?

Cordialement

Mayeu

signaler à un administrateur
Commentaire de ryosama le 13/11/2007 08:14:52

Vous n'êtes pas le seul. Le script n'a pas été conçu pour rendre sa taille initiale aux icones quand on quitte la liste.

signaler à un administrateur
Commentaire de eltoad le 13/11/2007 12:45:35

D'accord.
Y'a t'il un moyen de le faire ?
Je me pencherais peu être dessus, car j'aimerais vraiment que cela ce passe comme ça ^^

signaler à un administrateur
Commentaire de bambiseb le 17/12/2007 09:23:55

Salut,

Tout d'aborb, merci pour ce script qui est vraiment intéressant.

J'ai toutefois un petit souci et je voulais savoir si c'était volontaire et géré par le code.
Config: I.E 7
J'ai intégrer le dock dans une de mes applications. Lorsque l'on ouvre l'appli avec une résolution 1280 * 800 par ex, il n'y a aucune réaction. Par contre si je passe en 1024 * 768 alors cela fonctionne correctement et puis lorsque je repasse en 1280 et bien cela fonctionne toujours trés bien.

Avez-vous une idée la dessus?

Par avance merci

signaler à un administrateur
Commentaire de baroudbe le 11/05/2008 12:57:00

Il y a-t-il un moyen de faire en sorte que le dock reste en place danc IE 7? parce que j'arrive pas à ne plus le faire bouger.

Merci d'avance et félicitation!

signaler à un administrateur
Commentaire de shadow125 le 02/10/2008 14:37:00

Bonne source, néanmoins ne marche pas si on déclare un doctype, chose qui est pourtant indispensable.
Y a t-il un moyen de régler ce probleme pour une utilisation en html?

Sinon pour le fixer sous IE mettre un tableau pour bloquer la div, ensuite ça passe tout seul ;)

signaler à un administrateur
Commentaire de ryosama le 02/10/2008 18:48:39

En effet le script n'a pas été tester en précisant un DOCTYPE. Peut etre faut il mettre un doctype plus souple (éviter le xhtml). Je ne me suis pas encore pencher sur la question.

signaler à un administrateur
Commentaire de shadow125 le 02/10/2008 18:53:48

Il ne marche avec aucun des doctypes html, par contre quelqu'un sur un forum m'avait aidé à le rendre compatible xhtml, voici le code donc :
// <![CDATA[
MIN = 33 ;  // largeur minimum en pixel
MAX = 115 ; // largeur maximum en pixel
REACTION = 1.2 ; // réaction des icons par rapport à la souris. plus grand --> plus d'icons qui réagissent

A = ((MIN-MAX)/(MAX * REACTION)) ; // coef directeur de la droite d'agrandissement
IE = document.all ? 1 : 0 ;
img_tags = new Array();

function ouEstMaSouris(e)
{
    var dock = document.getElementById('dock') ; // div qui contient la barre de menu.

    var x = 0;
    if (IE)    x = e.clientX ; // coordonnées x de la souris sur IE 5.5
    else    x = e.pageX ;  // coordonnées x de la souris sur Mozilla ou Netscape 7
      
    x -= dock.offsetLeft ; // on modifie la coordonnée pour quelle soit relatif au div et non à la fenetre.
  
    img_tags = dock.getElementsByTagName('img') ; // les images contenus dans le div
  
    for(i=0 ; i<img_tags.length ; i++) // pour chaque images
    {
        millieu = img_tags[i].offsetLeft + parseInt(img_tags[i].style.width)/2 ;
        delta = millieu - x ;

        if (delta < 0) delta *= -1 ;

        coef = A * delta + MAX ;

        if (coef < MIN) coef = MIN ;
        else if (coef > MAX) coef = MAX ;

        img_tags[i].style.width=coef + "px";
        img_tags[i].style.height=coef + "px";
    }
}
// ]]>

signaler à un administrateur
Commentaire de olive85 le 16/11/2008 16:22:24

bonjour, j'ai utilsé ton code qui marche super bien avec fire fox mais avec IE sa me met mon corps en haut à gauche alors qu'avec firefox il ext bien centré!!
Aurais-tu une solution ??

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

mesurer image.. a l'aide !!! [ par klaus ] Heya..pplJe veux avoir les mesures d'une image et j'ai reussi d'avoir quelques scripts, mais le probleme c'est qu'ils ne passent pas sur le Mac. C'est IE Mac print() [ par BenLaKnet ] Comment est il possible d'imprimer une page tout ce qu'il y a de plus normal en Javascript.self.print() window.print ne marchent pas sur IE Mac 5.01 n récupération info user ! Poste,Nom,OS... [ par Xanders ] Bjr a vous!Je début en JS donc je sais pas si c'est possible mais j'aimerais récupéré des information sur le client et en priorité son OS puis eventue Sur un Mac , pourquoi ça ne marche pas focus()? [ par valtina ] Voici mon problème, quand on clique un lien dans un frame, le focus se cale sur l'image correspondante au lien dans un autre frame. Voici quelques fra Votre avis sur mon code Javascript ? [ par okin7 ] Bonjour, Je développe des pages en HTML/Javascript avec des fonctions évoluées comme un moteur de recherche. J'aurais besoin de feedback (OS, navigate script pour détecter et rediriger selon l'OS [ par sbailay ] quelqu'un connait-il un script permettant de détecter l'OS (PC ou MAC) et ensuite rediriger selon l'OS?mercisandra Contrôle d'une vidéo real video [ par tek77 ] Salut à vous,J'ai un problème de controle d'une vidéo sous macMa vidéo :&lt;object name="extrait1" width="244" height="183" id="extrait1"&gt;&lt;embed vidéo sur mac [ par mat10000 ] Mattbonsoir,j'ai une page web qui ouvre une popup contenant une vidéo wmv. Sur windows avec ie ça fonctionne. Sur windows avec netscape ça ne fonction utilisateurs de MAC + IE (problème de popup) [ par cyberbelette ] Si quelqu'un sait comment faire pour éviter, sur les popup, ces éternelles marges blanches A DROITE et EN BAS qu'on obtient exclusvement en utilisant innerHTML sous Mac [ par boin ] luss,voici un code classique : document.getElementById('id').innerHTML="&lt;input name='txt' type='text' size='20'&gt;";et je viens de remarquer


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.