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

JavaScript Discussion :

Choix de résolution d'image background


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Choix de résolution d'image background
    Bonjour je n'arrive pas à ecrire mon code javascript pour que mon bandeau de ma page html s'adapte à la résolution du client.
    ci-dessous un bout de mon code html et le code css concerné:


    Code html : 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
    <head>
    <script type="text/javascript">
    if (screen.width<=800) {
    document.getElementById ('en_tete').className = 'res1';
    } else if (screen.width>=1024) {
    document.getElementById ('en_tete').className = 'res2';
    } else if (screen.width>=1200) {
    document.getElementById ('en_tete').className = 'res3';
    }
    </script>
    </head>
     
    <body>
    <div id="en_tete">
     
    </div>
      </body>
    </html>


    le CSS:

    Code css : 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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #en_tete
    {
       width: 100%;
       height: 180px;
       position: fixed;
       right: 0px;
       top: -50px;
       margin: auto;
       margin-top: 1px;
       margin-bottom: auto; 
       background-image: url("top backgroundtitle3.jpg");
     
    }
    .res1 /*800*/
    {
    	width: 100%;
       height: 180px;
       position: fixed;
       right: 0px;
       top: -50px;
       margin: auto;
       margin-top: 1px;
       margin-bottom: auto; 
       background-image: url("top backgroundtitle1.jpg");
     
    }
    .res2 /*1024*/
    {
    	width: 100%;
       height: 180px;
       position: fixed;
       right: 0px;
       top: -50px;
       margin: auto;
       margin-top: 1px;
       margin-bottom: auto; 
       background-image: url("top backgroundtitle2.jpg");
     
    }
    .res3 /*1200*/
    {
    	width: 100%;
       height: 180px;
       position: fixed;
       right: 0px;
       top: -50px;
       margin: auto;
       margin-top: 1px;
       margin-bottom: auto; 
       background-image: url("top backgroundtitle3.jpg");
     
    }

    Voila je galère grandement car pour firefox j'ai palié au problème via la fonction "@media screen and (max-device-width: 1024px)" mais mon problème concerne IE8.
    Espérant que quelqu'un puisse m'aider, merci par avance.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ouais... j'imagine que tu dois avoir des problèmes pour entrer dans la 3e condition
    Ensuite, il se passe quoi si la résolution est entre 800 et 1024 ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    ok entre 800 et 1024 juste à modifier ma première condition, mais enfin de compte je ne comprends pas pourquoi mes "class" dans mon css ne sont pas appelées par les conditions écrites en javascript.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 112
    Points
    44 112
    Par défaut
    Bonsoir,
    tu utilises l'élément en_tete avant qu'il ne soit DOMesquement construit.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2012
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par sserpentio Voir le message
    ok entre 800 et 1024 juste à modifier ma première condition, mais enfin de compte je ne comprends pas pourquoi mes "class" dans mon css ne sont pas appelées par les conditions écrites en javascript.
    Bon après quelques galères j'ai trouvé ma solution.....

    Il fallait simplement mettre mon code javascript juste avant la fin de body pour que la page soit chargée et mes "div" reconnus et non pas entre les balises Head.

    donc:
    -code html
    Code html : 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
     <body>
    <div id="en_tete">
    </div>
    <script type="text/javascript">
            
                            if (screen.width<=800) {
                            document.getElementById ('en_tete').className = 'res1';
                            } else if (screen.width<=1024) {
                            document.getElementById ('en_tete').className = 'res2';
                            } else {document.getElementById ('en_tete').className = 'res3';
                            }
                                    
    </script>
     
       </body>
    </html>


    et le bout de code CSS

    Code css : 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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    #en_tete
    {
    	width: 100%;
       height: 180px;
       position: fixed;
       right: 0px;
       top: -50px;
       margin: auto;
       margin-top: 1px;
       margin-bottom: auto; 
       background-image: url("top backgroundtitle3.jpg");
     
    }
    #en_tete.res1 /*800*/
    {
    	width: 800px;
       height: 180px;
       position: fixed;
       right: 0px;
       top: -50px;
       margin: auto;
       margin-top: 1px;
       margin-bottom: auto; 
       background-image: url("top backgroundtitle1.jpg");
     
    }
    #en_tete.res2 /*1024*/
    {
    	width: 1024px;
       height: 180px;
       position: fixed;
       right: 0px;
       top: -50px;
       margin: auto;
       margin-top: 1px;
       margin-bottom: auto; 
       background-image: url("top backgroundtitle2.jpg");
     
    }
    #en_tete.res3 /*1280*/
    {
    	width: 1280px;
       height: 180px;
       position: fixed;
       right: 0px;
       top: -50px;
       margin: auto;
       margin-top: 1px;
       margin-bottom: auto; 
       background-image: url("top backgroundtitle3.jpg");
     
    }

    Bon ce n'est probablement pas la meilleure méthode mais ça fonctionne...
    J'aurai aimé mettre ce script dans mon fichier.js mais je n'arrive pas à ce que les div soit chargés donc il me renvoit une erreur comme quoi mon "getElementById" est vide...

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 112
    Points
    44 112
    Par défaut
    Il fallait simplement mettre mon code javascript juste avant la fin de body pour que la page soit chargée et mes "div" reconnus et non pas entre les balises Head.
    Citation Envoyé par NoSmoking Voir le message
    Bonsoir,
    tu utilises l'élément en_tete avant qu'il ne soit DOMesquement construit.
    c'est en fait ce que cela veut dire...
    J'aurai aimé mettre ce script dans mon fichier.js mais je n'arrive pas à ce que les div soit chargés donc il me renvoit une erreur comme quoi mon "getElementById" est vide...
    appel ta fonction sur le onload de la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    window.onload = function(){
      if( screen.width <= 800) {
        document.getElementById ('en_tete').className = 'res1';
      }
      else if( screen.width <= 1024) {
        document.getElementById ('en_tete').className = 'res2';
      }
      else {
        document.getElementById ('en_tete').className = 'res1';
      }
    }
    tout ceci est factorisable.

Discussions similaires

  1. [CSS 3] Redimensionnement auto image background suivant résolution visiteur
    Par woodix dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 07/08/2014, 19h13
  2. Choix de résolution d'image dans un jeu
    Par Khrono dans le forum Création de jeux vidéo
    Réponses: 2
    Dernier message: 03/10/2011, 09h15
  3. Aligner une image background à droite
    Par Xeron dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 02/06/2008, 01h31
  4. images background dans un TD
    Par zulot dans le forum Balisage (X)HTML et validation W3C
    Réponses: 14
    Dernier message: 09/11/2005, 12h03
  5. afficher les images background
    Par DELYMED2 dans le forum ASP
    Réponses: 2
    Dernier message: 17/10/2005, 09h09

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