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 :

Point de rupture dynamique


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    718
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 718
    Par défaut Point de rupture dynamique
    Bonjour,

    Afin de créer un breaking point dynamique, je mesure la largeur de l'élément, la largeur de la fenêtre.

    Quand la fenêtre est moins large que l’élément j'ajoute une classe supposée activer un paquet de déclarations CSS.

    Ne fonctionne pas dans le codepen, voyez-vous l'erreur ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 619
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 619
    Par défaut
    avec votre code de test, je vois bien la différence de classe css quand la balise table est plus large que la fenêtre.

    avant de chercher plus loin avec le code javascript, avez-vous déjà essayé de faire l'effet responsif en css ?
    https://developer.mozilla.org/fr/doc..._media_queries

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    718
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 718
    Par défaut
    Bonjour,

    OUI cela marche avec une media-query CSS.

    Le problème est que la largeur du tableau varie selon le contenu et que je n'ai pas de valeur fixe pour le point de rupture.

    Si je pouvais faire en CSS ce serait génial.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    Si je pouvais faire en CSS ce serait génial.
    pourquoi tant de haine ?


    En l'état il ne va pas se passer grand chose ta <table> s'adaptant à son conteneur.

    Il te faudrait mettre un écouteur sur la dimension de ta table pour basculer la classe a prendre en compte.

    Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    const objObserve = new ResizeObserver((entries) => {
      for (let entry of entries) {
        const elem = entry.target;
        const rect = entry.borderBoxSize[0];
        if( rect.inlineSize < 1500) {
          elem.classList.add("inf-1500");
        }
        else {
          elem.classList.remove("inf-1500");
        }
      }
    });
    const elemObserve = document.querySelector("table");
    objObserve.observe(elemObserve);
    ... c'est un exemple bien sûr !

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    718
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 718
    Par défaut
    Bonjour NoSmokingr,

    Merci de ton suivi.

    1)
    Citation Envoyé par NoSmokingr
    En l'état il ne va pas se passer grand chose ta <table> s'adaptant à son conteneur.
    J'ai ajouté : table {white-space: nowrap}
    Du coup la largeur de la table ne s'adapte plus à la largeur de la fenêtre, mais le script ne marche pas mieux.

    2)
    Merci de ton code mais je ne vois pas en quoi il diffère d'une media-query CSS (max-width: 1500px), j'ai sans doute mal compris.

    Il me faut comparer 2 variables : la largeur de la fenêtre et celle du tableau.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Citation Envoyé par boteha
    J'ai ajouté : table {white-space: nowrap}
    Du coup la largeur de la table ne s'adapte plus à la largeur de la fenêtre, mais le script ne marche pas mieux.
    Après observation plus attentive de ton code, le gros problème que j'entrevois est que lorsque ta <table> est plus large que la largeur de la fenêtre d'affichage tu modifies le CSS pour qu'elle s'adapte à la largeur de la fenêtre d'affichage.
    Ce faisant elle n'est donc plus plus large, donc tu vas modifier le CSS pour qu'elle retrouve sa dimension originale.
    Ce faisant elle devient plus largeur et dans ce cas on repart pour un tour !!!! ça va piquer les yeux

    Je pense que ton approche n'est pas la bonne, si j'ai bien tout compris du but final, et que la solution sur base des médias queries me semble amplement justifiée, il te faut juste définir le bon break point.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    718
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 718
    Par défaut
    Bonjour No-Smoking,


    Citation Envoyé par NoSmoking
    Je pense que ton approche n'est pas la bonne, si j'ai bien tout compris du but final, et que la solution sur base des médias queries me semble amplement justifiée, il te faut juste définir le bon break point.
    D'accord mais la largeur dépend du contenu et le contenu est très variable.

    Je ne vois pas comment éviter une mesure par JS.

    Ne puis-je pas mesurer la largeur de la table et ensuite bloquer cette valeur comme une constante ?

Discussions similaires

  1. Point de rupture en pixels pour CSS responsive design ?
    Par sub_zero dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 13/06/2015, 13h51
  2. [FPDF] Faire une lignes de points de taille dynamique
    Par comode dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 17/03/2014, 16h13
  3. [CSS 3] [Responsive design] Quels sont vos points de rupture ?
    Par yann18 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 07/12/2013, 04h21
  4. Mode Debug : point d'arrêt dynamique
    Par lionrouge dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 30/01/2009, 15h21
  5. comment aborder un projet d'un point de vue dynamique ?
    Par link256 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 19/06/2006, 13h42

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