begin process at 2012 02 05 23:20:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Navigation

 > SCROLL BAR PERSONALISE

SCROLL BAR PERSONALISE


 Information sur la source

Note :
Aucune note
Catégorie :Navigation Classé sous :scroll, scroll bar, scroll personalise, navigation Niveau :Débutant Date de création :16/05/2009 Date de mise à jour :16/05/2009 20:24:21 Vu / téléchargé :6 189 / 554

Auteur : kazma

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
scroll bar personnalise  j'ai éviter de mettre des position absolute et d'automatiser le processus de scroll pour que la mise en page soit le plus simple.

Source

  • var tour=1
  • var relation
  • var dde=document.documentElement;
  • function disableselecte(e){
  • return false;
  • }
  • function enableselecte(e){
  • return true;
  • }
  • function tarto(s) {
  • if(navigator.vendor){
  • ddem=document.documentElement.lastChild;
  • }
  • else{
  • ddem=document.documentElement;
  • }
  • if(navigator.appName.substring(0,3)=="Net"){
  • setX = s.clientX+ddem.scrollLeft;
  • setY = s.clientY+ddem.scrollTop;
  • }
  • else{
  • setX = event.clientX+ddem.scrollLeft;
  • setY = event.clientY+ddem.scrollTop;
  • return false;
  • }
  • }
  • if(navigator.appName.substring(0,3)!="Mic"){
  • dde.addEventListener("mousemove", tarto, false);
  • }
  • else{
  • dde.attachEvent("onmousemove",tarto);
  • }
  • function sp(azer,trez){
  • var ds1 =document.getElementById(azer)
  • var tbm=document.getElementById(trez)
  • if(navigator.appName.substring(0,3)=="Mic"){
  • var rcsb =ds1.childNodes[0]
  • var ds2=tbm.childNodes[0]
  • }
  • else{
  • var rcsb =ds1.childNodes[1]
  • var ds2=tbm.childNodes[1]
  • }
  • if(tour==2){
  • if(navigator.appName.substring(0,3)!="Mic"){
  • document.onmousedown=enableselecte;
  • }
  • tour=1;
  • return false;
  • }
  • if(tour==1){
  • px=setX;
  • py=setY;
  • tour=0;
  • document.onmousedown=disableselecte;
  • relation=(ds2.offsetWidth-tbm.offsetWidth)/((ds1.offsetWidth)-rcsb.offsetWidth)
  • }
  • if(navigator.appName.substring(0,3)=="Mic"){
  • ds1.style.overflow='hidden';
  • rcsb.style.marginLeft=parseInt(rcsb.currentStyle.marginLeft)+(setX-px)+'px';
  • }
  • else{
  • rcsb.style.marginLeft=parseInt(getComputedStyle(rcsb, null).getPropertyValue('margin-left'))+(setX-px)+'px';
  • }
  • ds2.style.left=ds2.offsetLeft-((setX-px)*relation)+'px'
  • if(ds2.offsetLeft>150){
  • ds2.style.left=0+'px'
  • rcsb.style.marginLeft=0+'px'
  • tour=2
  • }
  • if(ds2.offsetLeft-tbm.offsetWidth<-ds2.offsetWidth-150){
  • ds2.style.left=-(ds2.offsetWidth)+tbm.offsetWidth+'px'
  • rcsb.style.marginLeft=(ds1.offsetWidth)-rcsb.offsetWidth+'px'
  • tour=2
  • }
  • px=setX;
  • py=setY;
  • setTimeout('sp("'+ds1.id+'","'+tbm.id+'")',10);
  • }
var tour=1
var relation
var dde=document.documentElement;
function disableselecte(e){
return false;
}
function enableselecte(e){
return true;
}

function tarto(s) {
if(navigator.vendor){
ddem=document.documentElement.lastChild;
}
else{
ddem=document.documentElement;
}
if(navigator.appName.substring(0,3)=="Net"){
setX = s.clientX+ddem.scrollLeft;
setY = s.clientY+ddem.scrollTop;
}
else{
setX = event.clientX+ddem.scrollLeft;
setY = event.clientY+ddem.scrollTop;
return false;
}
}
if(navigator.appName.substring(0,3)!="Mic"){
dde.addEventListener("mousemove", tarto, false);
}
else{
dde.attachEvent("onmousemove",tarto);
}


function sp(azer,trez){

var ds1 =document.getElementById(azer)
var tbm=document.getElementById(trez)
if(navigator.appName.substring(0,3)=="Mic"){
var rcsb =ds1.childNodes[0]
var ds2=tbm.childNodes[0]
}
else{
var rcsb =ds1.childNodes[1]
var ds2=tbm.childNodes[1]
}
if(tour==2){
if(navigator.appName.substring(0,3)!="Mic"){
document.onmousedown=enableselecte;
}
tour=1;
return false;
}
if(tour==1){
px=setX;
py=setY;
tour=0;
document.onmousedown=disableselecte;
relation=(ds2.offsetWidth-tbm.offsetWidth)/((ds1.offsetWidth)-rcsb.offsetWidth)
}

if(navigator.appName.substring(0,3)=="Mic"){
ds1.style.overflow='hidden';
rcsb.style.marginLeft=parseInt(rcsb.currentStyle.marginLeft)+(setX-px)+'px';
}
else{
rcsb.style.marginLeft=parseInt(getComputedStyle(rcsb, null).getPropertyValue('margin-left'))+(setX-px)+'px';
}
ds2.style.left=ds2.offsetLeft-((setX-px)*relation)+'px'

if(ds2.offsetLeft>150){
ds2.style.left=0+'px'
rcsb.style.marginLeft=0+'px'
tour=2
}
if(ds2.offsetLeft-tbm.offsetWidth<-ds2.offsetWidth-150){
ds2.style.left=-(ds2.offsetWidth)+tbm.offsetWidth+'px'
rcsb.style.marginLeft=(ds1.offsetWidth)-rcsb.offsetWidth+'px'
tour=2
}
px=setX;
py=setY;

setTimeout('sp("'+ds1.id+'","'+tbm.id+'")',10);
}

 Conclusion

apparemment sa marche

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

16 mai 2009 20:24:23 :
optimisation

 Sources du même auteur

Source avec Zip Source avec une capture PETIT LOGICIEL DE DESSIN, RETOUCHE AVEC CANVAS
Source avec Zip Source avec une capture DRAG & DROP VERS UN CANVAS
Source avec Zip Source avec une capture DIAPO EN CSS 3D
Source avec Zip CONVERTISSEUR D'IMAGE BASE 64
Source avec Zip Source avec une capture HTML5 PLAYER

 Sources de la même categorie

Source avec Zip Source avec une capture ANTI-ROBOTS V 1.0 par MacGaliver
Source avec une capture PRÉSENTOIR PAGE/SUJET par tiranus
Source avec Zip Source avec une capture NAVIGATEUR INTERNET HAVRET par HAVRETos
Source avec Zip WMANAGER.JS : GÉRER LES FICHIERS WMA AVEC WINDOWS MEDIA PLAY... par jdmcreator
Source avec Zip Source avec une capture NAVIGATION PAR AJAX, CHARGEMENT DES PAGES SANS RECHARGEMENT par zulrigh

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SCROLLBAR PERSONNALISABLE par kazma
Source avec Zip Source avec une capture SCROLLBAR CLASS par heycraft
Source avec Zip Source avec une capture NAVIGATEUR INTERNET HAVRET par HAVRETos
Source avec Zip Source avec une capture FAIRE DÉFILER EN BOUCLE UNE IMAGE DANS UN <TABLE> par Isole
Source avec Zip Source avec une capture NAVIGATION PAR AJAX, CHARGEMENT DES PAGES SANS RECHARGEMENT par zulrigh

Commentaires et avis

Commentaire de Kimjoa le 16/05/2009 14:38:54

salut kazma, intéressant t'as source , le résultat est sympa ....

j'ai quelque reproche:
-l'appel d'une fonction directement dans la balise est à éviter, utilise un gestionnaire d'événement plutot.
-tu appel dans t'as fonction 4 éléments , 1 seule aurait suffit , à savoir le 3ème, les autres sont récupérable via le dom.
-tu empêche la sélection du texte , mais tu l'a rétablit pas à la fin du drag
-utilise setInterval , c'est fait pour ça .
-tu applique le mousemove, sur documentElement, plutôt que sur t'as bar de scroll, de plus il est tjrs activé ...
-tu utilise mouseup sur t'as bar de scroll , il aurait fallut le faire sur tout le doc, là ,y a un beug  quand on relâche le bouton hors de la barre  (c'est dans le mouseup que l'on désactive mousemove)
-petit problème d'offset, normale, le curseur se décale un peux, normale c'est galère !!
-tros de varibale globale, utilise des fonction anonyme pour encapsuler t'es donné genre :
    var sp=function(){var mavaraible='';  return ma fonction}();
ou alors , code en objet ...
-indente ton code, c'est bien plus lisible ...

voilà y'a sans doute encore des trucs à revoir , une petite mise à jour?
bye !

Commentaire de kazma le 16/05/2009 20:45:59 administrateur CS

ca en fait du travaille tout ca

bon j'ai quand meme modifier un peut tous ca

j'ai limiter les varibles globales

pour la selection de texte c'etait un oubli

j'ai englobe deux fonctions

diminution du nombre de parametres


encapsuler t'es donné genre :
    var sp=function(){var mavaraible='';  return ma fonction}();
ou alors , code en objet ...
-indente ton code, c'est bien plus lisible ...

tous sa me parait interresant mais j'ai pas les connaissances pour tous sa, je m'y interesse

Commentaire de Kimjoa le 17/05/2009 15:17:55

ok! indenter un code c'est faire des tabulations dans le traitement de tes boucles, conditions ou fonctions , genre :

function tete(){
    var tetete='';
}

pour ce qui est de l'objet , cherche à prototype de fonction ...
pour l'encapsulation, ca permet de rendre inaccessible certaine variable(privée) depuis l'extérieur de ton programme , mais surtout ça limite le variables globales, sinon tu peux coder avec un namespace , du genre :

var monprog={
    mafonction : function(){}
    maprop : ''
}

a++

Commentaire de mickaelpfr le 18/05/2009 09:53:49

Tout a fait daccord avec kimjoa , tropd e variable globale , de plus une autre remarque :
- la lisibilité de ton code , on ne sait absoluement pas a quoi servent les variable et méthode exemple : function sp(azer,trez) je met au défit n'importe qui de me dire ce qu'est censé faire cette fonction ;-)

les bonne pratique sont une chose, la netteté / propreté / compréhension du code ne doit jamais être mise de coté surtout si tu qualifies ta source pour des débutant.

Bon courage ( je te noterais quand tu auras revue ta copie ;) )

Commentaire de kazma le 18/05/2009 20:05:17 administrateur CS

aidez moi

Commentaire de diapoflash le 29/10/2009 14:43:46

Comment le scrollbar peut-il devenir vertical en modifiant ce script?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Navigation dans un formulaire [ par Lolo ] Est-il possible de naviguer dans les cases d'un formulaire (comme la touche tabulation) avec les flêches du clavier ? help me please netscape [ par fabricech ] je n'arrive pas a faire passer le code suivant sous netscape, meme apres un etonne d'aspirine!&lt;SCRIPT LANGUAGE="JavaScript"&gt;var lft = 10; // (wi positionné une image scroll aur netscape4.x [ par rochonpascal ] Bonjour, depuis une semaine j'essaie de rendre mon site compatible avec netscape 4.x, le problèeme que je rencontre c'est que lorsque j'ai des images barre de navigation mobile [ par evilfrog83 ] J'aimerais savoir s'il est possible de faire une barre de navigation mobile dans un site. Par mobile, j'entends qu'elle s'affiche quand on approche la Spécialiste Javascript : LA QUESTION ! (valeur scroll sous ie5.0) [ par Jin ] Quelqu'un connaîtrait-il l'équivalent de document.body.scrollTopdocument.body.scrollLeft(Valeur de la position des barres de défilements)sous internet Pbs de scroll avec les pseudo frame php [ par svman1 ] Bonjour a tous :)Voila je suis en train de refaire complétement mon site en php et j'utlilise des pseudo frame .Sur une de mes pages les info sont plu scroll barre [ par viking11100 ] salut je debute alors evidemment j'ai dess blemsje fais un site avec frontpage et je voudrais savoir comment je peux faire pour que ma page index qui ouvrir une fenêtre sans aucun élément [ par hikker ] j'ai le pb suivant je n'arrive pas à afficher une page sans les options (scroll,barmenu...)voici mon code PopErreur = window.open(page,'','menubar=no, Defilement d'une scroll bar [ par zipzip ] Bloquer le scroll d'un textarea [ par teknono ] Bonjour à tous,Voila je recherche une astuce qui permettrait de limiter le nombre de ligne saisie dans un textarea. Autrement dit, j'ai un textarea av


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales