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 :

Combinaison de .resize() et matchMedia() dans une condition ?


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Developper Frontend
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developper Frontend

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Par défaut Combinaison de .resize() et matchMedia() dans une condition ?
    Bonsoir,

    Cela fait un long moment que je n'ai pas pratiqué jQuery et maintenant que je m'y remets doucement, j'ai un gros souci qui me paraissait très simple à l'époque. Je vous explique.

    J'ai une page en html avec plusieurs blocs, divisés entre un div.content et un aside.

    J'aimerais pouvoir déplacer des blocs de l'aside vers la div .content lorsque je suis sur smartphone ET lorsque je rétrécis la fenêtre de mon navigateur sur pc. Hors, jusqu'à présent, je n'arrive à faire que l'un ou l'autre mais pas les deux en même temps et j'aimerais le faire sans devoir passer par deux scripts séparés.

    Voici le
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <div class="content">
        <div class="bloc1">Bloc 1</div>
        <div class="bloc2">Bloc 2</div>
        <div class="bloc3">Bloc 3</div>
        <div class="bloc4">Bloc 4</div>
    </div>
    <aside>
        <div class="bloc5">Bloc 5</div>
        <div class="bloc6">Bloc 6</div>
        <div class="bloc7">Bloc 7</div>
    </aside>

    Et voici le code jquery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $(document).ready(function(){
        // $(window).resize(function(){
        var widthWindow = $(window).resize().width();
        if(window.matchMedia("(max-width: 680px)").matches  || widthWindow <= 680){
            $('.bloc2').after($('.bloc7'));
     
        }else{
            $('.bloc6').after($('.bloc7'));
        };
        // });
    $(window).trigger("resize");
     
    });
    Lorsque j'utilise la fonction .resize() seule, ça fonctionne au resize de la page mais pas sur smartphone. Et lorsque j'utilise la fonction .matchMedia seule, cela fonctionne sur smartphone mais pas au resize de la page.
    Sachant que j'aimerais que les blocs reprennent leur place sur pc, j'ai besoin d'une condition. Mais je ne parviens pas à combiner le tout.

    Est-ce que l'un de vous pourrait m'aider s'il vous plait ?

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    tu n'as pas vérifié la console d'erreurs, sinon t'aurais vu qu'il y a un problème avec cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(window).resize().width();
    si tu met ce code, ça donne quoi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $(document).ready(function() {
      $(window).resize(function() { // 
        var widthWindow = $(window).width();
        if (window.matchMedia("(max-width: 680px)").matches || widthWindow <= 680) {
          $('.bloc2').after($('.bloc7'));
     
        } else {
          $('.bloc6').after($('.bloc7'));
        }
      });
     
    });

  3. #3
    Candidat au Club
    Femme Profil pro
    Developper Frontend
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developper Frontend

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Par défaut
    Bonsoir

    Merci beaucoup pour ta réponse !
    Il faut savoir qu'avant d'arriver à ce code, j'ai fait plusieurs essais. En dernier recours, j'ai tenté le tout pour le tout je vais dire et Chrome il ne m'affichait pas d'erreur...

    J'ai testé la solution que tu m'as proposé. Et ça ne fonctionne qu'au resize de la page sur pc, mais lorsque j'ouvre la devtools pour passer en mode responsive, cela ne fonctionne pas.

    Curieusement, j'ai essayé sur Firefox, et ta solution y fonctionne parfaitement (en mode vue adaptative ET au resize).

    J'en viens à me demander si ce n'est pas simplement mon chrome qui est mal configuré, ce qui est curieux car je n'ai rien changé aux paramètres et qu'à l'époque je n'ai pas dut faire de paramétrages spéciaux.

    Idéalement, il faudrait que je teste en réel (sur un smartphone donc), mais je n'en aurait pas la possibilité avant lundi.

    Merci d'y avoir accordé du temps en tout les cas

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    bonjour,
    je viens de tester le code sous chrome Version 69.0.3497.100 (Build officiel) (32 bits) en utilisant l'outil responsive en ligne, et ça fonctionne correctement sur les 3 vues (pc, tablette et phone).
    si le problème pérsiste, essaie de réinstaller ton chrome.

  5. #5
    Candidat au Club
    Femme Profil pro
    Developper Frontend
    Inscrit en
    Avril 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Developper Frontend

    Informations forums :
    Inscription : Avril 2015
    Messages : 3
    Par défaut
    Bonsoir,

    J'ai la version 70.0.3538.67 (Build officiel) (64 bits), que j'ai desinstallée et réinstallée, mais rien à faire

    J'aurais accès à un serveur en ligne demain, je testerai pour voir ce que ça donne sur un vrai smartphone (car après tout, c'est le but final) et j'éditerai ici pour dire si c'est résolu ou pas. Si ça fonctionne, c'est que c'est bien mon chrome qui déconne et donc ce sujet n'a plus de raison d'être.

    Merci beaucoup pour ton aide


    Edit :

    Autant pour moi ! En fait, comme une imbécile vu que je travaille sur un fichier test en local (le genre où on ne s'attarde pas sur les détails) je n'ai pas pensé à mettre le meta viewport du coup, le responsive de Chrome ne fonctionnait pas correctement. Depuis que je l'ai rajouté ça fonctionne parfaitement.
    C'est donc résolu. Désolée de t'avoir fait perdre du temps

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 518
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 518
    Par défaut
    ha! j'avais pensé au meta viewport, mais je me suis dis NON...c'est pas ça.
    si le sujet est résolu, appuie sur le bouton en bas de la page.
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JSP] Inclusion dans une condition d'un fichier jsp
    Par Fmassiera dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 07/02/2006, 20h14
  2. [ms sql server 2000] top 1 dans une condition de jointure ?
    Par sylvkin dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/10/2005, 17h10
  3. Problème dans une condition
    Par gibet_b dans le forum Linux
    Réponses: 4
    Dernier message: 31/05/2005, 10h19
  4. Fonction MAX dans une condition WHERE
    Par borgfabr dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 16h06
  5. Réponses: 2
    Dernier message: 24/06/2004, 09h13

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