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

Mise en page CSS Discussion :

colonne fixed devient float si overflow: comment?


Sujet :

Tableau en CSS

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 119
    Par défaut colonne fixed devient float si overflow: comment?
    Salut,
    j'ai trouvé cette page, dont le comportement de la colonne #sidebar correspond à ce que j'aurais besoin:
    si la fenêtre est assez grande pour contenir toute la colonne, elle est 'fixed', sinon elle passe en float et défile avec le contenu.
    J'ai remarqué qu'il y a deux propriétés pour #sidebar: une normale qui 'float', et l'autre #sidebar.lock, qui est 'fixed'... mais je ne retrouve pas de code js qui fait ça... est-ce une propriété de html6/css3?

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    C'est du Javascript.
    On le retrouve en faisant une recherche sur "sidebar" dans ce fichier :
    http://jeremie.patonnier.net/themes/.../js/scripts.js

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 119
    Par défaut
    oups... j'avais manqué celui là... je vais devoir décortiquer tout ça jusqu'à user mes touches enter et tab... ...
    ce qui est étrange, c'est que firebug ne me signale rien au redimensionnement dans le profiler... en-même temps je ne suis pas une brute en js...
    je regarde tout ça et je donne des nouvelles

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 119
    Par défaut
    bon, j'ai récupéré le code tout propre grâce à ça...
    C'est en jQuery, je l'ai réécrit et adapté en simple JS. Pour qui ça intéresse:
    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
     
    function fixColonne() {
    	//récupération de la colonne:
    	var colonne = document.getElementById('header') ;
    	//Récupération de la hauteur selon le navigateur:
    	if ( colonne.offsetHeight ) {
    		var hautColonne = colonne.offsetHeight ;
    	}
    	else if ( colonne.style.pixelHeight ) {
    		var hautColonne = colonne.style.pixelHeight ;
    	}
    	//Récupération de la hauteur de la fenêtre:
    	hautWindow = window.innerHeight ;
    	//si body plus grand que colonne:
    	if ( hautWindow - hautColonne > 0 ) {
    		colonne.style.position='fixed';
    	}
    	else {
    		colonne.style.position='absolute';
    	}
    }
     
    //appel de la fonction au chargement:
    if( window.attachEvent ) {
    	window.attachEvent("load", fixColonne );
    }
    else if( window.addEventListener) {
    	window.addEventListener("load", fixColonne , false);
    }
     
    //appel de la fonction on resize:
    if( window.attachEvent ) {
    	window.attachEvent("onresize", fixColonne );
    }
    else if( window.addEventListener) {
    	window.addEventListener("resize", fixColonne , false);
    }
    Et en bonus une petite question JS: pourquoi dans un addEventListener on met la fonction sans les ( )? Et si on doit placer des arguments?

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 224
    Par défaut
    Et en bonus une petite question JS: pourquoi dans un addEventListener on met la fonction sans les ( )? Et si on doit placer des arguments?
    la méthode addEventListener attend en 2éme paramètre, la référence à un fonction et non pas le résultat de celle ci.

    Pour le passage de paramètre il suffit de passer par une fonction anonyme.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2007
    Messages : 119
    Par défaut
    c'est clair, merci

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

Discussions similaires

  1. comment convertir une colonne string en float
    Par sinoun dans le forum Développement de jobs
    Réponses: 16
    Dernier message: 20/09/2011, 12h43
  2. 1ere colonne fixe Jtable ( JScrollpane )
    Par jdewalqu dans le forum Composants
    Réponses: 5
    Dernier message: 21/02/2006, 17h38
  3. Colonne fixée
    Par kastor_lapon dans le forum WinDev
    Réponses: 2
    Dernier message: 21/07/2005, 10h20
  4. Crystal + colonne fixe
    Par eniki dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 06/09/2004, 10h35
  5. [MFC] CListCtrl: colonnes fixes + tri des items
    Par bigboomshakala dans le forum MFC
    Réponses: 5
    Dernier message: 10/05/2004, 23h54

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