IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

HTML Discussion :

[HTML-JS] problème de décalage lors d'un redimensionnement


Sujet :

HTML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Par défaut [HTML-JS] problème de décalage lors d'un redimensionnement
    Bonjour

    Je suis en train de gérer un cadre pour un site web et son redimensionnnement.
    Voici un petit schema des div que j'utilise pour faire mon cadre :


    Petite légende sur le schéma

    en gris la div globale
    en rose le cadre haut et bas
    en vert le cadre gauche et droit
    en bleu la div du texte
    en violet les logos du cadre
    en vert marron le trait reliant les logos

    Mon but est de faire un cadre qui puisse etre redimensionné.
    A chaque modification de la taille de la div globale je recalcul la taille des traits reliant les logos.

    voici maintenant le code JS permettant de faire cela :
    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
     
    tmp(document.getElementById("menu_gauche_text"),document.getElementById("menu_gauche"), document.getElementById("menu_gauche_haut"), document.getElementById("menu_gauche_bas"), document.getElementById("menu_gauche_gauche"), document.getElementById("menu_gauche_droit"), document.getElementById("menu_gauche_gauche_centre_haut"), document.getElementById("menu_gauche_gauche_centre_bas"), document.getElementById("menu_gauche_droit_centre_haut"), document.getElementById("menu_gauche_droit_centre_bas"), document.getElementById("menu_gauche_haut_gauche"), document.getElementById("menu_gauche_haut_droit"), document.getElementById("menu_gauche_bas_gauche"), document.getElementById("menu_gauche_bas_droit"));
     
     
    function tmp(divTxt, divGlobale, cadreHaut, cadreBas, cadreGauche, cadreDroit, spaceGaucheHaut, spaceGaucheBas, spaceDroitHaut, spaceDroitBas, spaceHautGauche, spaceHautDroit, spaceBasGauche, spaceBasDroit) {
     
                    // modification de la largeur de la div du texte
                    divTxt.style.width=(divGlobale.offsetWidth-64)+"px";
     
                    // modification des largeurs des div contenant les cadres haut et bas
                    cadreHaut.style.width=cadreBas.style.width=(divGlobale.offsetWidth)+"px";
     
                    // modification des largeurs des traits reliant les logos
                    spaceHautGauche.style.width=spaceHautDroit.style.width=spaceBasGauche.style.width=spaceBasDroit.style.width=((divGlobale.offsetWidth-164)/2)+"px";
                     "+(divTxt.style.width+cadreGauche.style.width+cadreDroit.style.width));
     
                    divTxt.style.height=cadreGauche.style.height=cadreDroit.style.height=(divGlobale.offsetHeight)-64+"px";
    		spaceGaucheHaut.style.height=spaceGaucheBas.style.height=spaceDroitHaut.style.height=spaceDroitBas.style.height=((divGlobale.offsetHeight-(3*220)-24)/2)+"px";
    }
    Maintenant le code HTML

    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
    40
    41
    42
     
    <!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" lang="fr">
     
     
    <html>
    	<head>
    		<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-5">
    		<link rel="stylesheet" href="style.css">
                    <script type="text/javascript" src="includes/bibliotheque/functions.js"></script> 
    	</head>
    	<body style="padding : 0; margin : 0;">
     
    		<div id="menu_gauche" style='float:left; width:15%; height: auto; margin : 0;'>
    			<div id="menu_gauche_haut" onMouseOver='javascript:test();' style='float : left; width : 100%; background-image : url("includes/data/background/cadre/menu_gauche/haut.png"); background-position : center; height : 17px; background-repeat : no-repeat;'>
    				<div id='menu_gauche_haut_gauche' style='float : left; background-image : url("includes/data/background/cadre/menu_gauche/trait_haut.png"); margin-left : 17px; height : 17px;'></div>
    				<div id='menu_gauche_haut_droit' style='float : right; background-image : url("includes/data/background/cadre/menu_gauche/trait_haut.png"); margin-right : 17px; height : 17px;'></div>
    			</div>
    			<div id="menu_gauche_gauche" style='margin : 0; float : left; width : 17px; background-image : url("includes/data/background/cadre/menu_gauche/centre_gauche.png"); background-position : center; background-repeat : no-repeat;'>
    				<div id="menu_gauche_gauche_haut" style="float : left; width : 17px; height : 220px; background-image : url('includes/data/background/cadre/menu_gauche/centre_gauche.png'); background-repeat : no-repeat;"></div>
    				<div id='menu_gauche_gauche_centre_haut' style='float : left; background-image : url("includes/data/background/cadre/menu_gauche/trait_gauche.png"); width : 17px; margin-bottom : 110px;'></div>
    				<div id='menu_gauche_gauche_centre_bas' style='float : left; background-image : url("includes/data/background/cadre/menu_gauche/trait_gauche.png"); width : 17px; margin-top : 110px;'></div>
    				<div id="menu_gauche_gauche_bas" style="float : left; width : 17px; height : 220px; background-image : url('includes/data/background/cadre/menu_gauche/centre_gauche.png');"></div>
    			</div>
     
    			<div id="menu_gauche_text" style='margin : 0; float:left; padding : 15px; background-image : url("includes/data/background/cadre/menu_gauche/couleur.png")'>
    				<!-- Menu Gauche -->
                        toto<br />toto<br />toto<br />toto<br />toto<br />toto<br />toto<br />toto<br />toto<br />toto<br />toto<br />toto<br />
    			</div>
    			<div id="menu_gauche_droit" style='margin : 0; float : left; width : 17px; background-image : url("includes/data/background/cadre/menu_gauche/centre_droit.png"); background-position : center; background-repeat : no-repeat;'>
    				<div id="menu_gauche_droit_haut" style="float : left; width : 17px; height : 220px; background-image : url('includes/data/background/cadre/menu_gauche/centre_droit.png'); background-repeat : no-repeat;"></div>
    				<div id='menu_gauche_droit_centre_haut' style='float : left; background-image : url("includes/data/background/cadre/menu_gauche/trait_droit.png"); width : 17px; margin-bottom : 110px;'></div>
    				<div id='menu_gauche_droit_centre_bas' style='float : left; background-image : url("includes/data/background/cadre/menu_gauche/trait_droit.png"); width : 17px; margin-top : 110px;'></div>
    				<div id="menu_gauche_droit_bas" style="float : left; width : 17px; height : 220px; background-image : url('includes/data/background/cadre/menu_gauche/centre_droit.png');"></div>
    			</div>
    			<div id="menu_gauche_bas" style='margin : 0; float : left; width : 100%;  background-image : url("includes/data/background/cadre/menu_gauche/bas.png"); background-position : center; height : 17px; background-repeat : no-repeat;'>
    				<div id='menu_gauche_bas_gauche' style='float : left; background-image : url("includes/data/background/cadre/menu_gauche/trait_bas.png"); margin-left : 17px; height : 17px;'></div>
    				<div id='menu_gauche_bas_droit' style='float : right; background-image : url("includes/data/background/cadre/menu_gauche/trait_bas.png"); margin-right : 17px; height : 17px;'></div>
    			</div>
    		</div>
    	</body>
    </html>
    Le problème est que lors de certains redimensionnements le bord du cadre droit passe sous la div du texte alors que l'addition des largeurs de tous les éléments est bien égale à la largeur de la div globale

    Je ne comprend plus ce qu'il se passe.

    Merci d'aider un jeune développeur au bord de l'extinction de son pc

  2. #2
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    Bonjour,
    Desolé j ai pas de reponse direct à ton probleme mais j'ai quelque conseil et question general :
    1. Sur quelles browser le probleme se produit t il ?
    2. Attention sous IE l utilisation des floats est assez buggé
    3. Utilise l attribut class pour les css plutot que style

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Par défaut
    Les tests sont fait uniquement sous firefox (j'ai pas IE)
    sinon pour l'utilisation de class plutot que style je comprend pas bien

  4. #4
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    Voici une façon de faire parmi tant d'autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    .myclassa{
    background-image : url("includes/data/background/cadre/menu_gauche/trait_haut.png");
    margin-left : 17px; 
    height : 17px;
    }
    #menu_gauche_haut_gauche{
    float:left;
    }
    #menu_gauche_haut_droit{
    float:left;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div id="menu_gauche_haut_gauche" class="myclassa"></div>
    <div id="menu_gauche_haut_droit" class="myclassa"></div>

    Voila ça permet de reduire le code donc de reduire les problemes.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Par défaut
    ah oui biensur mais j'ai besoin d'y acceder depuis mon code javascript et j'ai besoin que le css soit inline et non dans un fichier externe

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 44
    Par défaut
    je viens de mettre en ligne un exemple de mon probleme voici le lien
    http://cybersplash.ovh.org/tmp

  7. #7
    Membre très actif Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Par défaut
    le javascript peut y acceder sans probleme meme si la definition de la css est externe comme tu la déja fais.
    et regarde la console d erreur de Firefox tu as 2 erreurs sur ta page

Discussions similaires

  1. Problème de décalage lors d'une rotation
    Par RMaxime dans le forum OpenGL
    Réponses: 11
    Dernier message: 09/07/2014, 15h58
  2. [HTML] problème d'accent lors de l'affichage
    Par teac2006 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/06/2008, 17h06
  3. [HTML] Problème de Décalage body avec ancre html.
    Par bobomasterflash dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/12/2007, 08h50
  4. [HTML][Encodage] Problèmes avec les accents...
    Par eraim dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 26/05/2004, 10h11
  5. [VC++6][DX9] Problème de thread lors d'un blit ...
    Par grandjouff dans le forum DirectX
    Réponses: 2
    Dernier message: 12/06/2003, 22h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo