Problème d'affection de propriété CSS en JS
Hadri22
-
zoubiock Messages postés 57 Statut Membre -
zoubiock Messages postés 57 Statut Membre -
Bonjour,
J'ai un petit problème. J'ai ne page php avec un div tout bête. Sur ce div, il y a un bouton, qui fait appel à la fonction "reduire". Cette fonction "cache" mon div en l'envoyant à environ 1000px en dessous de sa position normale, ce qui, normalement, suffit à le rendre invisible aux yeux de tout le monde. Cette fonction "reduire" créé aussi un autre bouton, situé plus loin dans la page, qui fait appel à la fonction "afficher", qui doit "détruire" le bouton créé par "reduire" et replacer le premier div à sa position initiale. Voici ces deux fonctions :
function reduire(fenetre)
{
fenetre.style.top = '999px';
color = document.createElement("div");
color.id = 'launcheritem';
color.innerHTML = '<div class="item" style="float:left;"><button class="window-max" onclick="afficher()"></button></div>';
document.getElementById("launcher").appendChild(color);
}
<!--
function afficher(fenetre)
{
fenetre.style.bottom = '2px';
document.getElementById("launcher").appendChild(color).style.visibility = 'hidden';
}
-->
Seulement voila, si la fonction "reduire" marche très bien, la fonction "afficher" bugge un peu.. La fonction qui détruit mon bouton (ici nommé color), marche bien. Mais impossible de replacer le div de départ à sa place!!! Auriez vous une solution?
J'ai un petit problème. J'ai ne page php avec un div tout bête. Sur ce div, il y a un bouton, qui fait appel à la fonction "reduire". Cette fonction "cache" mon div en l'envoyant à environ 1000px en dessous de sa position normale, ce qui, normalement, suffit à le rendre invisible aux yeux de tout le monde. Cette fonction "reduire" créé aussi un autre bouton, situé plus loin dans la page, qui fait appel à la fonction "afficher", qui doit "détruire" le bouton créé par "reduire" et replacer le premier div à sa position initiale. Voici ces deux fonctions :
function reduire(fenetre)
{
fenetre.style.top = '999px';
color = document.createElement("div");
color.id = 'launcheritem';
color.innerHTML = '<div class="item" style="float:left;"><button class="window-max" onclick="afficher()"></button></div>';
document.getElementById("launcher").appendChild(color);
}
<!--
function afficher(fenetre)
{
fenetre.style.bottom = '2px';
document.getElementById("launcher").appendChild(color).style.visibility = 'hidden';
}
-->
Seulement voila, si la fonction "reduire" marche très bien, la fonction "afficher" bugge un peu.. La fonction qui détruit mon bouton (ici nommé color), marche bien. Mais impossible de replacer le div de départ à sa place!!! Auriez vous une solution?
A voir également:
- Problème d'affection de propriété CSS en JS
- Enlever le soulignement d'un lien css - Astuces et Solutions
- Css exposant ✓ - Forum CSS
- Js arrondir - Forum Javascript
- Vous devez disposer d'autorisations d'accès en lecture pour afficher les propriétés de cet objet - Guide
- Double clic ouvre propriété ✓ - Forum Windows
1 réponse
Salut Hadri22
Mais pourquoi tant de difficulté?
Tu peux positionner tes deux div, l'une en dessous de l'autre et mettre dans la css pour ta seconde div la propriété display:none;
Ensuite, tes fonctions js inversent ces propriétés:
function reduire(fenetre)
{
document.getElementById("div1").style.display = "none";
document.getElementById("div2").style.display = "inline";
}
function afficher(fenetre)
{
document.getElementById("div1").style.display = "inline";
document.getElementById("div2").style.display = "none";
}
Si ça ne fonctionne pas, tu peux aussi utiliser la propriété "visibility"
En tout cas, c'est toujours plus propre que d'envoyer une div 1000px plus bas, non?
Qu'en penses tu?
En espérant avoir aidé !
Mais pourquoi tant de difficulté?
Tu peux positionner tes deux div, l'une en dessous de l'autre et mettre dans la css pour ta seconde div la propriété display:none;
Ensuite, tes fonctions js inversent ces propriétés:
function reduire(fenetre)
{
document.getElementById("div1").style.display = "none";
document.getElementById("div2").style.display = "inline";
}
function afficher(fenetre)
{
document.getElementById("div1").style.display = "inline";
document.getElementById("div2").style.display = "none";
}
Si ça ne fonctionne pas, tu peux aussi utiliser la propriété "visibility"
En tout cas, c'est toujours plus propre que d'envoyer une div 1000px plus bas, non?
Qu'en penses tu?
En espérant avoir aidé !