Accueil > > > SCROLLBAR CLASS
SCROLLBAR CLASS
Information sur la source
Description
Cette classe permet d'afficher une scrollbar dans une div, d'en modifier la valeur ou de recuperer la valeur (en pourcentage) lorsque l'utilisateur fait bouger la bar. Utilisation : var bar = new Scrollbar('bar', 500, 'horizontal'); // 'bar' est l'ID d'une div et 500 sera la taille du scrollbar bar.scroll(function(v){ // v est le pourcentage du la bar // traitements ici }); bar.setValue(50); // place la barre à 50 %
Source
- /**
- * Class Scrollbar
- *
- * @elementId string
- * @elementId number
- * @access public
- */
- function Scrollbar(elementId, size, type)
- {
- var
- container = document.getElementById(elementId),
- elem = document.createElement('div'),
- subelem = document.createElement('div'),
- ratio = 6, // Scroll size : 10%
- direction;
-
-
-
- // Si type est definie
- if(typeof(type) == 'undefined')
- direction = 'horizontal';
- else
- direction = type;
-
- // Si size est definie
- if(typeof(size) == 'number')
- setStyle();
- else
- return;
-
-
-
- /**
- * Getter qui retourne la valeur actuelle de la scrollbar (en %)
- * @access public
- */
- this.getValue = function()
- {
- var percentage = getPercentage();
- return percentage;
- }
-
-
- /**
- * Setteur qui definit la valeur de la scrollbar (en %) et la fait bouger
- * @access public
- */
- this.setValue = function(percentage)
- {
- if(direction == 'horizontal')
- elem.scrollLeft = setPercentage(percentage);
- if(direction == 'vertical')
- elem.scrollTop = setPercentage(percentage);
- }
-
-
- /**
- * Gestion de l'evenement onscroll, appele une fonction avec le parametre pourcentage
- * ex : scrollbar.scroll(function(v){*Votre code, v vaut le pourcentage du scroll*});
- * @access public
- */
- this.scroll = function(method)
- {
- if(typeof(method) == 'function')
- {
- elem.onscroll = function(){
-
- var percentage = getPercentage();
-
- method(percentage);
- }
- }
- }
-
-
- /**
- * Renvoie en pourcentage la valeur de la bar
- * @access private
- */
- function getPercentage()
- {
- if(direction == 'horizontal')
- return parseInt((elem.scrollLeft * 100) / (elem.scrollWidth - elem.offsetWidth));
- else if(direction == 'vertical')
- return parseInt((elem.scrollTop * 100) / (elem.scrollHeight - elem.offsetHeight));
- }
-
-
- /**
- * Renvoie en pourcentage la valeur de la bar
- * @access private
- */
- function setPercentage(percentage)
- {
- if(direction == 'horizontal')
- return parseInt((percentage * (elem.scrollWidth - elem.offsetWidth)) / 100);
- else if(direction == 'vertical')
- return parseInt((percentage * (elem.scrollHeight - elem.offsetHeight)) / 100);
- }
-
-
-
- /**
- * Defini la taille de l'objet
- * @access private
- */
- function setStyle()
- {
- container.style.overflow = 'hidden';
-
- if(direction == 'horizontal')
- {
- // Taille container
- container.style.width = size + 'px';
- container.style.height = '16px';
-
- // Taille
- elem.style.width = size + 'px';
- subelem.style.width = (size * ratio) + 'px';
-
- // On monte à 36px pour l'affichage sous IE 8, on utilise marginTop pour remonter le tout
- elem.style.height = '36px';
- elem.style.marginTop = '-20px';
-
- // Evite l'affichage d'une bar verticale
- elem.style.overflowX = 'auto';
- elem.style.overflowY = 'hidden';
-
- // On definit le sous element qui va influncer sur la taille du bouton et la precision
- subelem.style.height = '36px';
- }
- else if(direction == 'vertical')
- {
- // Taille container
- container.style.height = size + 'px';
- container.style.width = '16px';
-
- // Taille
- elem.style.height = size + 'px';
- subelem.style.height = (size * ratio) + 'px';
-
- // On monte à 36px pour l'affichage sous IE 8, on utilise marginTop pour remonter le tout
- elem.style.width = '36px';
- elem.style.marginLeft = '-20px';
-
- // Evite l'affichage d'une bar verticale
- elem.style.overflowY = 'auto';
- elem.style.overflowX = 'hidden';
-
- // On definit le sous element qui va influncer sur la taille du bouton et la precision
- subelem.style.width = '36px';
- }
-
- elem.appendChild(subelem);
- container.appendChild(elem);
- }
- }
/**
* Class Scrollbar
*
* @elementId string
* @elementId number
* @access public
*/
function Scrollbar(elementId, size, type)
{
var
container = document.getElementById(elementId),
elem = document.createElement('div'),
subelem = document.createElement('div'),
ratio = 6, // Scroll size : 10%
direction;
// Si type est definie
if(typeof(type) == 'undefined')
direction = 'horizontal';
else
direction = type;
// Si size est definie
if(typeof(size) == 'number')
setStyle();
else
return;
/**
* Getter qui retourne la valeur actuelle de la scrollbar (en %)
* @access public
*/
this.getValue = function()
{
var percentage = getPercentage();
return percentage;
}
/**
* Setteur qui definit la valeur de la scrollbar (en %) et la fait bouger
* @access public
*/
this.setValue = function(percentage)
{
if(direction == 'horizontal')
elem.scrollLeft = setPercentage(percentage);
if(direction == 'vertical')
elem.scrollTop = setPercentage(percentage);
}
/**
* Gestion de l'evenement onscroll, appele une fonction avec le parametre pourcentage
* ex : scrollbar.scroll(function(v){*Votre code, v vaut le pourcentage du scroll*});
* @access public
*/
this.scroll = function(method)
{
if(typeof(method) == 'function')
{
elem.onscroll = function(){
var percentage = getPercentage();
method(percentage);
}
}
}
/**
* Renvoie en pourcentage la valeur de la bar
* @access private
*/
function getPercentage()
{
if(direction == 'horizontal')
return parseInt((elem.scrollLeft * 100) / (elem.scrollWidth - elem.offsetWidth));
else if(direction == 'vertical')
return parseInt((elem.scrollTop * 100) / (elem.scrollHeight - elem.offsetHeight));
}
/**
* Renvoie en pourcentage la valeur de la bar
* @access private
*/
function setPercentage(percentage)
{
if(direction == 'horizontal')
return parseInt((percentage * (elem.scrollWidth - elem.offsetWidth)) / 100);
else if(direction == 'vertical')
return parseInt((percentage * (elem.scrollHeight - elem.offsetHeight)) / 100);
}
/**
* Defini la taille de l'objet
* @access private
*/
function setStyle()
{
container.style.overflow = 'hidden';
if(direction == 'horizontal')
{
// Taille container
container.style.width = size + 'px';
container.style.height = '16px';
// Taille
elem.style.width = size + 'px';
subelem.style.width = (size * ratio) + 'px';
// On monte à 36px pour l'affichage sous IE 8, on utilise marginTop pour remonter le tout
elem.style.height = '36px';
elem.style.marginTop = '-20px';
// Evite l'affichage d'une bar verticale
elem.style.overflowX = 'auto';
elem.style.overflowY = 'hidden';
// On definit le sous element qui va influncer sur la taille du bouton et la precision
subelem.style.height = '36px';
}
else if(direction == 'vertical')
{
// Taille container
container.style.height = size + 'px';
container.style.width = '16px';
// Taille
elem.style.height = size + 'px';
subelem.style.height = (size * ratio) + 'px';
// On monte à 36px pour l'affichage sous IE 8, on utilise marginTop pour remonter le tout
elem.style.width = '36px';
elem.style.marginLeft = '-20px';
// Evite l'affichage d'une bar verticale
elem.style.overflowY = 'auto';
elem.style.overflowX = 'hidden';
// On definit le sous element qui va influncer sur la taille du bouton et la precision
subelem.style.width = '36px';
}
elem.appendChild(subelem);
container.appendChild(elem);
}
}
Conclusion
Modification terminées !
Fonctionne sous Firefox 4, Chrome 9, IE 8 (7 en mode de compatibilité), Opera 11 et Safari 5 Certainement sous les versions antérieures aussi sauf pour IE (mais pas testé).
Par default horizontal, mais on peut definir le type vertical. Paramètre size obligatoire !
Historique
- 21 avril 2011 12:50:20 :
- Ajout du ZIP
- 21 avril 2011 12:52:44 :
- Exemple d'utilisation
- 22 avril 2011 11:31:41 :
- Mise à jour pour le bug sous Safari/Opera/Chrome
Reduction taille a 14px
Fonctionne sous IE 8
- 22 avril 2011 12:00:03 :
- Voir conclusion
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Pb affichage barre de défilement [ par Jossdoit ]
Bonjoiur, Je travaille actuellement sur Dreamweaver pour faire une page web. Je voudrais changer l'aspect de ma barre de défilement. Pour cela g utili
Pb d'affichage de la barre de défilement [ par Jossdoit ]
Bonjour, Je travaille actuellement sur Dreamweaver pour faire une page web. Je voudrais changer l'aspect de ma barre de défilement. Pour cela g utilis
Scrollbar automatique sous la sourie [ par maxmic ]
Bonjour à tous,je cherche à faire un défilement autimatique sur mon iframe, enfin automatique si ma soris passe sur les fleche en haut et en bas de ma
defilement de texte dans la navigation [ par ordipard ]
salut, j'ai vu un jour sur un site que quand on déplaçait la barre de défilement, seul son texte bougeait et l'image de font restai sur place, je voud
[Dreamweaver] Onglet avec scrollbar [ par grominnetto ]
Bonjour tout le monde, voici, je tente de créer un site pour une école de hockey et j'aimerais avoir une barre de défilement (ou scrollbar) avec quel
code de défilement des infos [ par hassen87 ]
bonjour les amies je cherche un code jquery qui me permet de défiler un ensemble des div contenant des information de la base de données pour les actu
Scrollbar confondue avec celle d' XP ? [ par steiny ]
Bonjour à tous.Voici ma question : qq'un connaîtrait-il le code pour que la scrollbar de droite de mon site soit confondue avec celle du navigateur ?L
changer la couleur de la scrollbar d'une listbox [ par anarogad ]
Bonjour à tous,Je voudrais savoir s'il est possible de modifier la couleur des éléments qui constituent la scrollbar d'une listbox ?Merci d'avance pou
Prbleme scrollbar [ par eks ]
Bien le bonjour à tous,j'ai utilisé un script présent sur ce site (http://www.javascriptfr.com/code.aspx?ID=24142) sur mon site -> http://www.12mix
Défilement automatique des pages d'un site ? [ par adelysnet ]
Bonjour,Je souhaite faire défiler des pages d'un site automatiquement.Chaque page finirait par viewimage2.php?imageID=1&style=listing En fait, seule l
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|