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 :

Faire scroller la barre défilante quand on est sur un div créé


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 19
    Par défaut Faire scroller la barre défilante quand on est sur un div créé
    Bonjour, petit soucis sur ce script,
    en effet, la barre de défilement défile quand on est dessus ou quand on est sur l'arrière plan mais quand on est sur la div, elle défile plus.
    Auriez vous une idée? Une piste?

    Voici le code:


    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    <html>
    <head>
    <title>test blm</title>
    <style type="text/css">
    body
    {
    	margin: 0;
    	overflow: hidden;
    }
    #viewport
    {
    	position: absolute;
    	left: 0;
    	top: 0;
    	overflow-y: scroll;
    	overflow-x: hidden;
    	width: 100%;
    }
    #scrollmaker
    {
    	position: absolute;
    	left: -200%;
    	top: 0;
    	width: 100%;
    	overflow: hidden;
    }
    #viewport .row
    {
    	position: fixed;
    	left: 0;
    	height: 40px;
    	background: silver;
     
     
    }
    </style>
    <script type="text/javascript">
    var viewport, scrollmaker;
    var rowHeight = 50;
    var rowCount = 0;
     
     
     
    function updateDataRowCount(count)
    {
    	scrollmaker.style.height = (count * rowHeight) + "px";
    }
    function updateViewportRowCount()
    {
    	var newRowCount = parseInt(document.body.clientHeight / rowHeight);
    	while (rowCount > newRowCount) {
    		viewport.removeChild(viewport.lastChild);
    		--rowCount;
     
     
    	}
    	while (rowCount < newRowCount) {
    		var row = document.createElement("div");
    		row.className = "row";
    		row.id = "row" + rowCount;
    		row.style.top = (rowCount * rowHeight) + "px";
    		row.innerHTML = "&nbsp;";
    		viewport.appendChild(row);
    		++rowCount;
     
     
     
    	}
     
     
     
    	viewport.style.height = (rowCount * rowHeight) + "px";
    	for (var row = viewport.firstChild; row != null; row = row.nextSibling)  {
    		if (row.className == "row")
    			row.style.width = scrollmaker.offsetWidth;
    }
    }
    window.onload = function () {
    	viewport = document.getElementById("viewport");
    	scrollmaker = document.getElementById("scrollmaker");
    	updateViewportRowCount();
    	updateDataRowCount(100);
    }
    window.onresize = updateViewportRowCount;
     
    </script>
    </head>
    <body>
    <div id="viewport"><div id="scrollmaker">&nbsp;</div></div>
    </body>
    </html>
    Merci d'avance.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonsoir,
    si tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #viewport .row{
      position: fixed;  /* <- C'EST ICI QUE CA PEUT GENE */
      left: 0;
      height: 40px;
      background: silver;
    }
    il est normal que le DIV qui possède la class row ne sroll pas

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 19
    Par défaut
    Merci de m'avoir répondu.

    Oui, je m'en doutais bien, seulement si je change la position, la barre de défilement n'est plus limité et ne se bloque plus à la fin de row ( barre grise )

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    il me semble nécessaire de bien préciser ton besoin, je dois admettre que je ne percute plus trop!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 19
    Par défaut
    Ben en fait, je génère des divs appelé row dans mon div viewport, le soucis c'est qu'ils sont en fixed comme tu dit, donc la scrollbarre ne défile pas dessus. Mais c'est un soucis également quand je le passe en absolute car là je sais défiler la scrollbarre mais également je sais la défiler quand il n'y a plus de div row ( en gros que l'espace est blanc ), ce que je ne faisais pas avec la position fixed, ce qui est logique car ça suit la scrollbarre. Mais j'aurais besoin d'un défilement sur les divs row sans pour autant que ce défilement continuer à défiler lorsqu'il n'y a plus de div row. C'est compréhensible ce que j'ai dit? Désolé si j'ai du mal à m'expliquer.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    en mettant de l'ordre dans mes mails je reviens ici...
    Citation Envoyé par kelaan;
    Mais j'aurais besoin d'un défilement sur les divs row sans pour autant que ce défilement continuer à défiler lorsqu'il n'y a plus de div row. C'est compréhensible ce que j'ai dit? Désolé si j'ai du mal à m'expliquer.
    je ne crois pas avoir mieux compris.

    J'amorce quand même une réponse
    tu fixes ta DIV viewport à la hauteur que tu souhaites et tu ajoutes le nombre de DIV désirées en les mettant en position absolute.

    Il ne faut pas redéfinir la hauteur de la DIV viewport pour que le scroll stoppe sur la dernière DIV insérée.

    Quant à la DIV scrollmaker, je ne saisi pas l'utilité.

    Du coup pas sûr que je sois plus clair que toi!

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

Discussions similaires

  1. Faire un async postback lors d'un lcik sur un div/panel
    Par Sergejack dans le forum ASP.NET Ajax
    Réponses: 5
    Dernier message: 12/07/2012, 17h28
  2. [TooltipText] Que faire quand il est (vraiment) trop long
    Par mavina dans le forum Composants
    Réponses: 5
    Dernier message: 31/03/2009, 09h22
  3. cacher un bouton quand on est sur une feuille bien determinée
    Par tomy7 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/03/2008, 12h20
  4. lien qui reste cliqué (coloré) quand on est sur la page
    Par cosycorner dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 10/02/2007, 21h12
  5. Portable qui rame quand il est sur batterie
    Par e1lauren dans le forum Ordinateurs
    Réponses: 1
    Dernier message: 12/10/2006, 19h47

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