begin process at 2010 08 01 01:07:37
  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é :4 604 / 471

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 EFFET DE TEXTE EN CSS3
Source avec Zip Source avec une capture CLAVIER NUMERIQUE SECURISÉ
Source avec Zip Source avec une capture FAIRE DEFILER DES IMAGE A LA MOLETTE OU SOURIS
Source avec Zip Source avec une capture CSS3 TRANSFORM
Source avec Zip Source avec une capture DE L'OMBRE

 Sources de la même categorie

Source avec Zip Source avec une capture NAVIGATION PAR AJAX, CHARGEMENT DES PAGES SANS RECHARGEMENT par zulrigh
Source avec Zip Source avec une capture MENU DE GAUCHE WIN XP par micking
Source avec Zip ARBORECENCE XP DRAG-ON-DROP par micking
Source avec Zip MARQUEE VERSION2 COMPATIBLE MOOTOOLS, JQUERY, PROTOTYPE ET S... par Kimjoa
Source avec Zip EMULATION DE $_GET() DU PHP par jchan

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture NAVIGATION PAR AJAX, CHARGEMENT DES PAGES SANS RECHARGEMENT par zulrigh
Source avec Zip Source avec une capture DEFILEMENT DE BANNIERE PUBLICITAIRE ; ROTATION DE CADRE par zulrigh
Source avec Zip Source avec une capture FAIRE DEFILER DES IMAGE A LA MOLETTE OU SOURIS par kazma
Source avec Zip MOOTABLEAU par Miky76
Source avec Zip Source avec une capture PAGES EFFET MOBILE TACTILE... par sitajony

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

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

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...

Comparez les prix

CalendriCode

Août 2010
LMMJVSD
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

Consulter la suite du CalendriCode

 
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,484 sec (3)

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