L'éditeur JavaScript
Visiteur non-identifié | Identifiez-vous | Devenir membre
Code perdu ? | Combien de visiteurs sur votre site ?
Rechercher :
Page d'accueil
     Home Page

JavaScript
     Tous les scripts
     Proposer un script
     Recherche de script
     AJAX new!
     Cours de JavaScript
     Liste de discussion
     Forums

Services :
     CountUs
     myCircle

     Referencement
     Créat. de bannière

Trucs et astuces :
     HTML / CSS
     PHP / MySQL
     Réferencement
     Graph / Présentation
     Toutes les astuces
     Ajouter un article

MailingList :
100126 abonnés

Annuaire webmaster :      Hebergement web
     Referencement
     Sites webmasters
     XHTML - CSS2
     PHP
     Affiliation - Pub
     FAI

     Annuaire webmaster

Ressources pour webmasters :
     Kits graphiques

Plus :
     Comparateur de prix
     Foire aux questions
     Les membres
     Devenir annonceur
     Faire un lien
     Contact

Partenaire :
     Hebergement gratuit
     Le PHP facile
     Horoscope
     Comscripts
     WebmasterClub
     Activeartanima...
     Le village de ...
     L'écriteau
     Faro-dessing
     Images gifs an...
     Netsources
     Easy-script.com
     Création de site
     Créer son site...
     K i s s design
     Les autres
     Votre site ici ?


Le forum ] [ Préférences ] [ Nouveau sujet ] [ Répondre ] [ Recherche ] [ Vos sujets ] [ Tous lus ] [ Flux RSS ]


[ Forums >> JavaScript >> Problèmes de création JavaScript / DHTML >> zIndex très capricieux ]

> zIndex très capricieux
[ Posté par Minimus ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 26-04-2008 à 22:31 | 50 messages ]

Bonsoir tout le monde!
Après une longue époque morte en développement HTML, je reviens avec de nouveaux problèmes...

Ma copine m'a demandé de développer une page web pour son td, ce que j'ai fait à l'exception d'une fonction de son cahier des charges, que je ne maîtrise pas du tout. Je me suis aidé de SelfHTML 8.12, sans résultat.

Mon problème : Impossible de faire passer les images moyennes (lors du mouseover) au dessus des autres voisines dans le bandeau d'images.

Mon code :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >

<head>
<title>TD2 Exercice1</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
* {margin:0;padding:0}
body {margin-left:20px;}
#bandeauImages {
width:500px;
height:100px;
}

#divImages {
width:420px;
padding-left:20px;
height:85px;
overflow:hidden;
}

#divImages div {
width:80px;
position:relative;
top:20px;
left:0px;
z-index:1;
margin-bottom:30px;
}

#bandeauImages div {float:left;}

#arriere,#avant {position:relative; top:30px;}
</style>
<script language="javascript">

function DecallageGauche() {
image = new Array(7); // Création d'un tableau comprenant 7 variables
numero = new Array(7); // Idem
for(a=1;a<=7;a++) { // Boucle de 7 sauts
image[a] = document.getElementById("image" + a).src; // Exemple: image[3] = "file:///C:/SITES/td2/Mael/ikea/image3.png"
} // Fin de la boucle

for(a=1;a<=7;a++) { // Boucle de 7 sauts
numero[a] = parseInt(image[a].split("ikea/image")[1].split(".png")[0]) + 1; // Extraction des numéros d'images dans le tableau image, et soustraction de 1 à cette valeur.
if (numero[a]>= numero[a] = 1; // On force les variables du tableau numero à ne pas dépasser 7. Si la valeur est supérieure à 7, on la remet à 1 pour effectuer une 'boucle d'images' sur le bandeau.


/*

Note:

split() est expliqué plus bas.

parseInt() transforme une chaîne de caractères en nombre entier. Cette fonction est ici obligatoire car les variables du tableau image sont des
chaîne de caractères (Ex: "file:///C:/SITES/td2/Mael/ikea/image3.png"), et les variables du tableau numero doivent être des entiers
compris entre 1 et 7 (1 et 7 inclus), (d'où la présence de la fonction si).
En termes de Java, cette fonction permettrait de transformer une chaîne de caractères (string) en entier (int) par exemple:
"3" en 3. L'obligation de la présence de cette fonction est dûe au fait qu'on doit par la suite additionner 1 aux valeurs du tableau numero.

Sans parseInt(), la ligne de commande "image[a].split("ikea/image")[1].split(".png")[0] + 1" effecturait une concaténation de 2 chaîne des caractères,
par exemple l'opération suivante : "3" + 1 et donnerait "3" & "1", soit "31" et non pas 4.

En déclarant avant les valeurs du tableau numero en tant que nombres entiers avec parseInt(), l'opération effectue une addition par exemple 3 + 1, soit 4.

*/


document.getElementById("image" + a).src = ("ikea/image" + numero[a] + ".png") // Changement de l'URL des images.
}
}

function DecallageDroite() { // Même fonction que DecallageGauche() mais on décrémente les numéros des images.
image = new Array(7);
numero = new Array(7);
for(a=1;a<=7;a++) {
image[a] = document.getElementById("image" + a).src;
}
for(a=1;a<=7;a++) {
numero[a] = parseInt(image[a].split("ikea/image")[1].split(".png")[0]) - 1; // On effectue une soustraction de 1 au lieu d'une addition de 1.
if (numero[a]<=0) numero[a] = 7; // On force les variables du tableau numero à ne pas aller en dessous de 1. Si la valeur est inférieure à 1, on la remet à 7 pour effectuer une 'boucle d'images' sur le bandeau.
document.getElementById("image" + a).src = ("ikea/image" + numero[a] + ".png")
}
}


function Cliquer(img) {
var Numero=img.src.split("ikea/image")[1].split("Moyen.png")[0];


/*

Explications :

Split() Scinde des chaînes de caractères en plusieurs chaînes de caractères partielles.
Les chaînes de caractères crées sont sauvegardées dans un tableau (qui commence à [0] pour la partie 1).
Attend comme paramètre un caractère délimiteur ou une chaîne de caractères délimiteurs utilisés
comme séparation distinctive entre les chaînes de caractères partielles.

img, passé en variable dans la fonction, correspond à "this" (dans la partie HTML) et désigne donc l'objet <img>...</img> dont il est question.
img.src désigne la source de l'image.

Exemple: Pour l'image 1, son URL en local ici est: "file:///C:/SITES/td2/Mael/ikea/image1Moyen.png". (Moyen car quand on clique dessus, on a déjà
obligatoirement effecté le rollover qui a transformée l'URL de l'image)
La commande img.src.split("ikea/image") va couper l'URL en plusieurs parties, séparées par la chaîne de caractères "ikea/image", or cette occurence
n'est présente qu'une seule fois. Donc il va ressortir de cette commande 2 variables enregistrées dans un tableau:
variable[0]="file:///C:/SITES/td2/Mael/"
variable[1]="1Moyen.png"
La ligne de commande entière est img.src.split("ikea/image")[1].split("Moyen.png")[0]
Il reste à expliquer [1].split("Moyen.png")[0]
le [1] va sélectionner la seconde valeur du tableau c'est à dire "1.png" et split("Moyen.png") va scinder cette nouvelle chaîne en recherchant l'occurence
"Moyen.png" qui n'apparaît qu'une fois. Ainsi la première valeur de la variable est: variable[0]="1".

Donc cette commande permet simplement d'extraire le numéro de l'image sur laquelle on clique.

Remarque:
Nous avons dit que pour l'image 1, son URL en local ici est: "file:///C:/SITES/td2/Mael/ikea/image1Moyen.png".
Pour l'image 1, son URL relative est : "ikea/image1Moyen.png". (relative == du "point de vue" du fichier actuel.)
Et si cette page était distribuée, son URL hypertext serait de la forme : http://mon-site.com/dossier/td2/ikea/image1Moyen.png"

Donc dans les 3 cas, les deux chaîne de caractères "ikea/image" et ".png" sont présentes, et permettont donc au script de fonctionner correctement.

*/


document.getElementById("imgProduit").src=("ikea/image" + Numero + "Grand.png"); // La source de l'image du grand cadre va être modifée selon le numéro de l'image sur laquelle on a cliqué.
}


function MouseOver(img) {
img.style.border = "1px solid red"; // Création d'une bordure rouge
var Numero = img.src.split("ikea/image")[1].split(".png")[0]; // Extraction du numéro de l'image
img.src = ('ikea/image' + Numero + 'Moyen.png'); // Réatribution de l'URL de l'image de ikea/imageX.png en ikea/imageXMoyen.png
img.style.zindex = "5"; // Mise au premier plan (devant l'image mitoyenne)
}


function MouseOut(img) {
img.style.border = "1px solid white"; // Modification de la bordure en blanc
var Numero = img.src.split("ikea/image")[1].split("Moyen.png")[0]; // Extraction du numéro de l'image
img.src = ('ikea/image' + Numero + '.png'); // Réatribution de l'URL de l'image de ikea/imageXMoyen.png en ikea/imageX.png
img.style.zindex = "1"; // Mise au plan normal
}
</script>

</head>
<body bgcolor="lightblue">
<div id="bandeauImages">
<div>
<img src="ikea/arriere.png" id="arriere" alt="aller en arriere" onClick="DecallageDroite()"></img>
</div>
<div id="divImages">
<div id="ImageBandeau">
<img src="ikea/image1.png" id="image1" alt="image1" Name="image1" onClick="Cliquer(this)" onMouseOver="MouseOver(this)" onMouseOut="MouseOut(this)"></img>
</div>
<div>
<img src="ikea/image2.png" id="image2" alt="image2" Name="image2" onClick="Cliquer(this)" onMouseOver="MouseOver(this)" onMouseOut="MouseOut(this)"></img>
</div>
<div>
<img src="ikea/image3.png" id="image3" alt="image3" Name="image3" onClick="Cliquer(this)" onMouseOver="MouseOver(this)" onMouseOut="MouseOut(this)"></img>
</div>
<div>
<img src="ikea/image4.png" id="image4" alt="image4" Name="image4" onClick="Cliquer(this)" onMouseOver="MouseOver(this)" onMouseOut="MouseOut(this)"></img>
</div>
<div>
<img src="ikea/image5.png" id="image5" alt="image5" Name="image5" onClick="Cliquer(this)" onMouseOver="MouseOver(this)" onMouseOut="MouseOut(this)"></img>
</div>
<div>
<img src="ikea/image6.png" id="image6" alt="image6" Name="image6" onClick="Cliquer(this)" onMouseOver="MouseOver(this)" onMouseOut="MouseOut(this)"></img>
</div>
<div>
<img src="ikea/image7.png" id="image7" alt="image7" Name="image7" onClick="Cliquer(this)" onMouseOver="MouseOver(this)" onMouseOut="MouseOut(this)"></img>
</div>
</div>
<div>
<img src="ikea/avant.png" alt="aller en avant" id="avant" onClick="DecallageGauche()"></img>
</div>
</div>
<div>
<img src="ikea/image1Grand.png" alt="produit" id="imgProduit"></img>
</div>
</body>
</html>


Merci d'avance pour votre aide précieuse, j'aimerais bien résoudre le problème avant dimanche soir...

________________
En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche !!
__________________________
http://perso.orange.fr/mael.le-monnier/



[ Posté par #:-{)% ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 27-04-2008 à 04:20 | 2322 messages ]

Alut

çà serait pas style.zIndex avec I maj par hasard
sinon 1 lien en angliche spécial IE

Atchao

EDIT pis j'suis pas sur qui faut mettre des "" autour des nbres ==> essaies machin.style.zIndex=5; par ex.

[Message édité par #:-{)% le 27-04-2008 à 04:25]


________________
Oubli du BBcode, rééditer!
barbe-sauvage ex Mozopiens devenu renard de feu... et un peu konq sur les bords

Les OG et les DR, je M pas :/

[ Posté par Minimus ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 27-04-2008 à 16:38 | 50 messages ]

Bonjour!

#:-{)%, merci pour ta contribution
Malheureusement, ça ne m'a pas aidé, j'ai tenté avec le I majuscule, avec et sans espaces entre le = et la valeur, avec et sans guillemets pour la valeur... rien à faire.

Et sur le lien que tu m'as donné, les méthodes qu'ils emploient sont celles que j'ai déjà testé... rien à y faire... que ça soit sous FFox2 ou sous IE7...

J'avais tenté de contourner le problème en utilisant une méthode alternative (style.visibility = "visible" ou "hidden") mais ça ne fonctionne pas non plus...

PS: Pourquoi sous IE7, les 2 images 6 et 7 s'affichent quand même en dessous du bandeau n'importe comment?? Alors que j'ai tout de même défini la hauteur du bandeau d'images en CSS...

________________
En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche !!
__________________________
http://perso.orange.fr/mael.le-monnier/

[ Posté par #:-{)% ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 27-04-2008 à 19:25 | 2322 messages ]

je viens de voir que tu avais 1 doctype strict, supprimes-le, il serait étonnant que le script soit strictement compatible strict

________________
Oubli du BBcode, rééditer!
barbe-sauvage ex Mozopiens devenu renard de feu... et un peu konq sur les bords

Les OG et les DR, je M pas :/

[ Posté par Minimus ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 27-04-2008 à 20:58 | 50 messages ]

Tu parles de cette ligne là :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> ?

Je l'ai donc virée, mais pas de changements.

Je ne vois toujours pas bien l'utilité de ce genre de lignes au sein d'une page, on m'avait déjà répondu sur ce forum, mais j'ai du mal à réaliser qu'un navigateur fasse vraiment la différence...

[Message édité par Minimus le 27-04-2008 à 21:09]


________________
En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche !!
__________________________
http://perso.orange.fr/mael.le-monnier/

[ Posté par EricM ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 29-04-2008 à 09:30 | 4139 messages ]

Minimus a dit
Je ne vois toujours pas bien l'utilité de ce genre de lignes au sein d'une page, on m'avait déjà répondu sur ce forum, mais j'ai du mal à réaliser qu'un navigateur fasse vraiment la différence...


Ouhlà !
De grosses différence, si

Sinon, le zindex ne s'applique qu'au position:absolute, me semble-t-il ...

A+

________________
L'échec est le fondement de la réussite.
- Lao Tseu -

[ Posté par jparia ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 29-04-2008 à 20:51 | 513 messages ]

Minimus a dit
Je ne vois toujours pas bien l'utilité de ce genre de lignes au sein d'une page, on m'avait déjà répondu sur ce forum, mais j'ai du mal à réaliser qu'un navigateur fasse vraiment la différence...


t'inquiète, pour les quéqués de la norme W3C qui se font plaisir à te prouver que tu as toujours tord.

A part cela, si tes pages s'affichent identiquement sous FF, IE et Safari et qu'il n'y a aucune alerte globale, ça suffit largement, c'est pas l'internaute qui va s'en plaindre.

;)

________________
Seule la compréhension permet d'avancer.
Ah! et puis on a pas toujours raison, mais un p'tit merci nous fait toujours du bien.

[ Posté par v1nce ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 30-04-2008 à 09:16 | 3782 messages ]

jparia a dit

A part cela, si tes pages s'affichent identiquement sous FF, IE et Safari et qu'il n'y a aucune alerte globale


Le doctype a une influence directe sur la manière dont IE rend les pages (boxmodel...). Son utilisation simplifie donc le travail du développeur qui a moins à se soucier des extravagances d'IE


________________
V1nce
Si je les ai oubliés les bonjour, merci et au revoir sont implicites

Brevets logiciels : dites NON !
http://petition.eurolinux.org/index.html
http://swpat.ffii.org/index.fr.html

[ Posté par Minimus ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 02-05-2008 à 22:10 | 50 messages ]

Merci pour vos précisions

Je n'ai toujours pas réussi à faire le zindex...

Il n'y aurait pas moyen de tranformer mon position:relative en position:absolute pour faire fonctionner le zindex?

Merci encore et d'avance,
Minimus

________________
En essayant continuellement, on finit par réussir. Donc plus ça rate, plus on a de chances que ça marche !!
__________________________
http://perso.orange.fr/mael.le-monnier/




Services email :

Vous devez vous identifier pour profiter des services par email du forum.
Le forum ] [ Préférences ] [ Nouveau sujet ] [ Répondre ] [ Recherche ] [ Vos sujets ] [ Tous lus ] [ Flux RSS ]






59 visiteurs
actuellement en ligne

    PUBLICITE



     ANNUAIRE WEBMAST.
MagikBiz
Integrez une section logo/sonnerie sur votre site !
http://magikbiz.com
Cat : Affiliation - publicité
Voir l'annuaire webmaster


     LES SCRIPTS :
78 à éditer
68 à copier/coller
247 des membres
2580 sur le web
>> Tous les scripts

     LES MEMBRES :
54264 membres
9576 comptes CountUs
1403 comptes myCircle

     LES FORUMS :
14 forums
39051 topics
188226 messages
>> Les forums

    SONDAGE

Utilisez-vous une page d'accueil personnalisable ?
Oui, la page d'accueil de Google (pas le moteur)
Oui, netvibes
Oui, mon Yahoo
Oui, my MSN
Oui, un autre
Non, je n'utilise pas de service de page d'accueil personnalisée
La mini-astuce "Navigateur" du jour par mirage
La touche F11 de votre clavier permet de visualiser vos sites préférés en plein écran ! Fonctionne sous bon nombre de navigateurs :)
Proposer votre mini-astuce | Archives des mini-astuces
© 1999-2008 K-NETWORK - Tous droits réservés | CNIL N° 844440 | 04/07/2008 15:25:00 | Design by Studcrea | Gen. en 0.449 sec.