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

jQuery Discussion :

Positionnement absolu avec jQuery


Sujet :

jQuery

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut Positionnement absolu avec jQuery
    Bonjour,

    j'ai une div #exemple en position:absolute dans le fichier CSS.

    Je la place à droite de l'écran avec le code jQuery suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var largeur = $('body').width();
    $('#exemple').css({left:largeur});
    Mon problème est que je dois garder ce comportement de mettre la div "à droite" uniquement sur ordinateur et que je dois annuler ce comportement pour les mobiles. Comment annuler pour les mobiles ce comportement donné par le code $('#exemple').css({left:largeur}); dont j'ai besoin pour les ordinateurs?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    tu le dis toi même dans ton titre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#exemple').css({"position":"absolute", "left":largeur+"px"});
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    Rebonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#exemple').css({left:largeur});
    Le code ci-dessus placé dans un fichier JavaScript s'applique aux ordinateurs, tablettes et mobiles.

    Je veux que ce code reste dans le fichier JavaScript pour le comportement désiré sur ordinateurs et tablettes mais qu'il ne soit pas pris en compte pour les mobiles, comment faire?

    Merci

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    Bonjour,

    est t'il possible d'appliquer ce code aux ordinateurs et tablettes et de ne pas l'appliquer aux mobiles?

    Merci

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    un element vide sur la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <span id="detect_mob"></span>
    un petit css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @media only screen and (max-width: 760px) {
      #some-element { display: none; }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $( function() {      
        var is_mobile = false;
    //tu testes le display
        if( $('#detect_mob').css('display')=='none') {
            is_mobile = true;       
        }
     
    //et ensuite tu utilise ton booleen 
        if (!is_mobile) {
           $('#exemple').css({"position":"absolute", "left":largeur+"px"});
        }
     });
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    Je ne comprends pas , j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var mobile = false;
    if( $('#exemple').css('z-index') == '1') {
        mobile = true;      
    }
    if (!mobile) {
        $('#exemplet').css({left:largeur});
    }
    comme code CSS pour les mobiles à ma div #exemple j'ai rajouté z-index:1.

    Et bien malgré le code ci dessus le problème demeure, en effet pour les mobiles le left:largeur est appliqué à ma div...

    Merci

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    tu as rajouté le css ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     @media only screen and (max-width: 760px)
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  8. #8
    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 122
    Points
    44 122
    Par défaut
    Bonjour,
    j'ai un peu de mal à comprendre pourquoi tu ne passes pas directement par les Media Queries.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    oui bien sur j'ai rajouté le css avec la media query pour les mobiles.

  10. #10
    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 122
    Points
    44 122
    Par défaut
    Si tu as fait les choses correctement aucune raison que cela ne marche pas!
    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #element {
      position:absolute;
      left:100%;
    }
    @media only screen and (max-width: 760px) {
      #element {
        left:0;
      }
    }

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    No smoking JE DOIS PASSER PAR LE JS. CELA NE FONCTIONNE PAS DE PASSER PAR LES MEDIA QUERY DANS MON CAS PRECIS.
    donc je te répète SpaceFrog: les conditions sur ton code js ne fonctionnent pas.

    Merci

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2014
    Messages : 483
    Points : 0
    Points
    0
    Par défaut
    spacefrog, merci de m'aider, cependant ton raisonnement est faux ton code avec tes conditions pour ecrire du code js uniquement pour un média (ici les mobiles) ne fonctionne pas.
    J'ai trouvé, il faut faire un if sur la largeur de l'écran, comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     if($('body').width() > 767){
        $('#exemple').css({left:largeur});
     }

  13. #13
    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 122
    Points
    44 122
    Par défaut
    et en plus on se fait engueuler...

    Pour moi la discussion est close mais je t'engage à lire
    - Comprendre le méta tag viewport
    - Les fondamentaux du Responsive Web Design

  14. #14
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 661
    Points
    66 661
    Billets dans le blog
    1
    Par défaut
    cependant ton raisonnement est faux

    Non le raisonnement est correct. coller un media query et recupérer l'état d'un élement sur la page fonctionne parfaitement.
    Maintenant si tu n'arrives pas à l'implémenter, je n'y peux pas grand chose ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  15. #15
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Je ne comprends pas pourquoi, mais admettons que les "media-query" ne fonctionnent pas dans votre cas. Il est effectivement possible de travailler en JS avec l'aide d'un outil externe.

    Je vous donne un exemple avec head.js, que j'utilise depuis des années. L'outil Modernizr, doit probablement permettre de faire la même chose, mais je ne le connais pas.

    Impossible d'apprendre head.js en 3 lignes, il faudra lire l'API. Voici le code pour charger l'outil "head.js", la bibliothèque "jQuery" et pour traiter notre exemple :

    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
    <script src="http://cdnjs.cloudflare.com/ajax/libs/headjs/1.0.3/head.min.js"></script>    
    <script>
        head.load(
            "http://code.jquery.com/jquery-2.1.1.min.js",
            function(){
     
                /*
                 * Le DOM est construit, mais il faut initialiser l'objet jQuery
                 */
                $( function(){ // forme abrégée de $(document).ready(function(){
                    if ( head.desktop ) {
                        $( "#exemple" ).css({
                            "position" : "absolute",
                            "top" : "0px",
                            "right" : "0px",
                            "width" : "200px",
                            "height" : "200px",
                            "background-color" : "rgb(27, 200, 68)",
                            "z-index" : "99"
                        });
                    }
     
                    if ( head.mobile ) {
                        $( "#exemple" ).css({
                            "position" : "absolute",
                            "top" : "0px",
                            "left" : "0px",
                            "width" : "100%",
                            "height" : "200px",
                            "background-color" : "rgb(27, 200, 68)",
                            "z-index" : "99"
                        });
                    }
     
                });
            }
        );  
    </script>

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

Discussions similaires

  1. positionnement d'un div avec jquery?
    Par bylka dans le forum jQuery
    Réponses: 3
    Dernier message: 21/02/2012, 18h53
  2. photos en colonne : tableau ou div avec positionnement absolu
    Par ml1234 dans le forum Mise en page CSS
    Réponses: 13
    Dernier message: 21/05/2009, 01h03
  3. Problème positionnement absolu
    Par finalfx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 20/04/2006, 15h47
  4. Positionnement absolu
    Par debie1108 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 18/01/2006, 10h33
  5. [CSS] Positionnement absolu
    Par Invité dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/12/2005, 09h34

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