Maison interface Web js tutoriel Effet de barre de défilement personnalisé de page implémenté par les compétences JS_javascript

Effet de barre de défilement personnalisé de page implémenté par les compétences JS_javascript

May 16, 2016 pm 03:35 PM
js 滚动条 自定义 页面

L'exemple de cet article décrit l'effet de barre de défilement personnalisée de page implémenté par JS. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Voici une démonstration de l'effet de barre de défilement utilisé sur une page Web. Il s'agit d'un code à barres de défilement personnalisé, à l'exception des flèches haut et bas, la barre de défilement est fondamentalement la même que celle d'un navigateur normal. et la barre de défilement défile. La structure HTML est très simple, mainBox est le div externe, le contenu est le contenu et le div de la barre de défilement est généré dynamiquement par js.

La capture d'écran de l'effet en cours d'exécution est la suivante :

L'adresse de la démo en ligne est la suivante :

http://demo.jb51.net/js/2015/js-web-zdy-scroll-style-codes/

Le code spécifique est le suivant :

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

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>滚动条</title>

<style type="text/css">

*{ margin:0; padding:0;}

p{ height:1000px;}

#mainBox{ width:400px; height:500px; border:1px #bbb solid; position:relative; overflow:hidden; margin:50px auto;}

#content{ height:2500px; position:absolute; left:0; top:0; background:url(http://files.jb51.net/file_images/article/201510/20151026113716032.jpg) }

.scrollDiv{ width:18px; position:absolute; top:0; background:#666; border-radius:10px;}

</style>

</head>

<body>

<div id="mainBox">

 <div id="content"></div>

</div>

<p></p>

<script type="text/javascript">

var doc=document;

var _wheelData=-1;

var mainBox=doc.getElementById('mainBox');

function bind(obj,type,handler){

 var node=typeof obj=="string"&#63;$(obj):obj;

 if(node.addEventListener){

  node.addEventListener(type,handler,false);

 }else if(node.attachEvent){

  node.attachEvent('on'+type,handler);

 }else{

  node['on'+type]=handler;

 }

}

function mouseWheel(obj,handler){

 var node=typeof obj=="string"&#63;$(obj):obj;

  bind(node,'mousewheel',function(event){

   var data=-getWheelData(event);

   handler(data);

   if(document.all){

    window.event.returnValue=false;

   }else{

    event.preventDefault();

   }

  });

  //火狐

  bind(node,'DOMMouseScroll',function(event){

   var data=getWheelData(event);

   handler(data);

   event.preventDefault();

  });

  function getWheelData(event){

   var e=event||window.event;

   return e.wheelDelta&#63;e.wheelDelta:e.detail*40;

  }

}

function addScroll(){

 this.init.apply(this,arguments);

}

addScroll.prototype={

 init:function(mainBox,contentBox,className){

  var mainBox=doc.getElementById(mainBox);

  var contentBox=doc.getElementById(contentBox);

  var scrollDiv=this._createScroll(mainBox,className);

  this._resizeScorll(scrollDiv,mainBox,contentBox);

  this._tragScroll(scrollDiv,mainBox,contentBox);

  this._wheelChange(scrollDiv,mainBox,contentBox);

  this._clickScroll(scrollDiv,mainBox,contentBox);

 },

 //创建滚动条

 _createScroll:function(mainBox,className){

  var _scrollBox=doc.createElement('div')

  var _scroll=doc.createElement('div');

  var span=doc.createElement('span');

  _scrollBox.appendChild(_scroll);

  _scroll.appendChild(span);

  _scroll.className=className;

  mainBox.appendChild(_scrollBox);

  return _scroll;

 },

 //调整滚动条

 _resizeScorll:function(element,mainBox,contentBox){

  var p=element.parentNode;

  var conHeight=contentBox.offsetHeight;

  var _width=mainBox.clientWidth;

  var _height=mainBox.clientHeight;

  var _scrollWidth=element.offsetWidth;

  var _left=_width-_scrollWidth;

  p.style.width=_scrollWidth+"px";

  p.style.height=_height+"px";

  p.style.left=_left+"px";

  p.style.position="absolute";

  p.style.background="#ccc";

  contentBox.style.width=(mainBox.offsetWidth-_scrollWidth)+"px";

  var _scrollHeight=parseInt(_height*(_height/conHeight));

  if(_scrollHeight>=mainBox.clientHeight){

   element.parentNode.style.display="none";

  }

  element.style.height=_scrollHeight+"px";

 },

 //拖动滚动条

 _tragScroll:function(element,mainBox,contentBox){

  var mainHeight=mainBox.clientHeight;

  element.onmousedown=function(event){

   var _this=this;

   var _scrollTop=element.offsetTop;

   var e=event||window.event;

   var top=e.clientY;

   //this.onmousemove=scrollGo;

   document.onmousemove=scrollGo;

   document.onmouseup=function(event){

    this.onmousemove=null;

   }

   function scrollGo(event){

    var e=event||window.event;

    var _top=e.clientY;

    var _t=_top-top+_scrollTop;

    if(_t>(mainHeight-element.offsetHeight)){

     _t=mainHeight-element.offsetHeight;

    }

    if(_t<=0){

     _t=0;

    }

    element.style.top=_t+"px";

    contentBox.style.top=-_t*(contentBox.offsetHeight/mainBox.offsetHeight)+"px";

    _wheelData=_t;

   }

  }

  element.onmouseover=function(){

   this.style.background="#444";

  }

  element.onmouseout=function(){

   this.style.background="#666";

  }

 },

 //鼠标滚轮滚动,滚动条滚动

 _wheelChange:function(element,mainBox,contentBox){

  var node=typeof mainBox=="string"&#63;$(mainBox):mainBox;

  var flag=0,rate=0,wheelFlag=0;

  if(node){

   mouseWheel(node,function(data){

    wheelFlag+=data;

    if(_wheelData>=0){

     flag=_wheelData;

     element.style.top=flag+"px";

     wheelFlag=_wheelData*12;

     _wheelData=-1;

    }else{

     flag=wheelFlag/12;

    }

    if(flag<=0){

     flag=0;

     wheelFlag=0;

    }

    if(flag>=(mainBox.offsetHeight-element.offsetHeight)){

     flag=(mainBox.clientHeight-element.offsetHeight);

     wheelFlag=(mainBox.clientHeight-element.offsetHeight)*12;

    }

    element.style.top=flag+"px";

    contentBox.style.top=-flag*(contentBox.offsetHeight/mainBox.offsetHeight)+"px";

   });

  }

 },

 _clickScroll:function(element,mainBox,contentBox){

  var p=element.parentNode;

  p.onclick=function(event){

   var e=event||window.event;

   var t=e.target||e.srcElement;

   var sTop=document.documentElement.scrollTop>0&#63;document.documentElement.scrollTop:document.body.scrollTop;

   var top=mainBox.offsetTop;

   var _top=e.clientY+sTop-top-element.offsetHeight/2;

   if(_top<=0){

    _top=0;

   }

   if(_top>=(mainBox.clientHeight-element.offsetHeight)){

    _top=mainBox.clientHeight-element.offsetHeight;

   }

   if(t!=element){

    element.style.top=_top+"px";

    contentBox.style.top=-_top*(contentBox.offsetHeight/mainBox.offsetHeight)+"px";

    _wheelData=_top;

   }

  }

 }

}

new addScroll('mainBox','content','scrollDiv');

</script>

</body>

</html>

Copier après la connexion

J'espère que cet article sera utile à tout le monde dans la programmation JavaScript.

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment copier une page dans Word Comment copier une page dans Word Feb 20, 2024 am 10:09 AM

Vous souhaitez copier une page dans Microsoft Word et conserver la mise en forme intacte ? C'est une bonne idée car la duplication de pages dans Word peut être une technique utile pour gagner du temps lorsque vous souhaitez créer plusieurs copies d'une mise en page ou d'un format de document spécifique. Ce guide vous guidera pas à pas à travers le processus de copie de pages dans Word, que vous créiez un modèle ou que vous copiez une page spécifique dans un document. Ces instructions simples sont conçues pour vous aider à recréer facilement votre page sans avoir à repartir de zéro. Pourquoi copier des pages dans Microsoft Word ? Il existe plusieurs raisons pour lesquelles copier des pages dans Word est très bénéfique : Lorsque vous souhaitez copier un document avec une mise en page ou un format spécifique. Contrairement à la recréation de la page entière à partir de zéro

Comment configurer rapidement un avatar personnalisé dans Netflix Comment configurer rapidement un avatar personnalisé dans Netflix Feb 19, 2024 pm 06:33 PM

Un avatar sur Netflix est une représentation visuelle de votre identité de streaming. Les utilisateurs peuvent aller au-delà de l'avatar par défaut pour exprimer leur personnalité. Continuez à lire cet article pour savoir comment définir une photo de profil personnalisée dans l'application Netflix. Comment définir rapidement un avatar personnalisé dans Netflix Dans Netflix, il n'y a pas de fonctionnalité intégrée pour définir une photo de profil. Cependant, vous pouvez le faire en installant l'extension Netflix sur votre navigateur. Tout d’abord, installez une photo de profil personnalisée pour l’extension Netflix sur votre navigateur. Vous pouvez l'acheter dans la boutique Chrome. Après avoir installé l'extension, ouvrez Netflix sur votre navigateur et connectez-vous à votre compte. Accédez à votre profil dans le coin supérieur droit et cliquez sur

Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Recommandé : Excellent projet de détection et de reconnaissance des visages open source JS Apr 03, 2024 am 11:55 AM

La technologie de détection et de reconnaissance des visages est déjà une technologie relativement mature et largement utilisée. Actuellement, le langage d'application Internet le plus utilisé est JS. La mise en œuvre de la détection et de la reconnaissance faciale sur le front-end Web présente des avantages et des inconvénients par rapport à la reconnaissance faciale back-end. Les avantages incluent la réduction de l'interaction réseau et de la reconnaissance en temps réel, ce qui réduit considérablement le temps d'attente des utilisateurs et améliore l'expérience utilisateur. Les inconvénients sont les suivants : il est limité par la taille du modèle et la précision est également limitée ; Comment utiliser js pour implémenter la détection de visage sur le web ? Afin de mettre en œuvre la reconnaissance faciale sur le Web, vous devez être familier avec les langages et technologies de programmation associés, tels que JavaScript, HTML, CSS, WebRTC, etc. Dans le même temps, vous devez également maîtriser les technologies pertinentes de vision par ordinateur et d’intelligence artificielle. Il convient de noter qu'en raison de la conception du côté Web

Comment personnaliser les paramètres des touches de raccourci dans Eclipse Comment personnaliser les paramètres des touches de raccourci dans Eclipse Jan 28, 2024 am 10:01 AM

Comment personnaliser les paramètres des touches de raccourci dans Eclipse ? En tant que développeur, la maîtrise des touches de raccourci est l'une des clés pour améliorer l'efficacité du codage dans Eclipse. En tant qu'environnement de développement intégré puissant, Eclipse fournit non seulement de nombreuses touches de raccourci par défaut, mais permet également aux utilisateurs de les personnaliser selon leurs propres préférences. Cet article explique comment personnaliser les paramètres des touches de raccourci dans Eclipse et donne des exemples de code spécifiques. Ouvrez Eclipse Tout d'abord, ouvrez Eclipse et entrez

Comment créer un graphique en chandeliers boursiers en utilisant PHP et JS Comment créer un graphique en chandeliers boursiers en utilisant PHP et JS Dec 17, 2023 am 08:08 AM

Comment utiliser PHP et JS pour créer un graphique en bougies boursières. Un graphique en bougies boursières est un graphique d'analyse technique courant sur le marché boursier. Il aide les investisseurs à comprendre les actions de manière plus intuitive en dessinant des données telles que le prix d'ouverture, le prix de clôture, le prix le plus élevé et le prix le plus élevé. prix le plus bas des fluctuations du prix des actions. Cet article vous apprendra comment créer des graphiques en bougies boursières en utilisant PHP et JS, avec des exemples de code spécifiques. 1. Préparation Avant de commencer, nous devons préparer l'environnement suivant : 1. Un serveur exécutant PHP 2. Un navigateur prenant en charge HTML5 et Canvas 3.

Outils essentiels pour l'analyse boursière : découvrez les étapes pour dessiner des graphiques en bougies avec PHP et JS Outils essentiels pour l'analyse boursière : découvrez les étapes pour dessiner des graphiques en bougies avec PHP et JS Dec 17, 2023 pm 06:55 PM

Outils essentiels pour l'analyse boursière : découvrez les étapes pour dessiner des graphiques en bougies en PHP et JS. Des exemples de code spécifiques sont nécessaires. Avec le développement rapide d'Internet et de la technologie, le trading d'actions est devenu l'un des moyens importants pour de nombreux investisseurs. L'analyse boursière est une partie importante de la prise de décision des investisseurs, et les graphiques en bougies sont largement utilisés dans l'analyse technique. Apprendre à dessiner des graphiques en bougies à l'aide de PHP et JS fournira aux investisseurs des informations plus intuitives pour les aider à prendre de meilleures décisions. Un graphique en chandeliers est un graphique technique qui affiche les cours des actions sous forme de chandeliers. Il montre le cours de l'action

Comment actualiser rapidement une page Web ? Comment actualiser rapidement une page Web ? Feb 18, 2024 pm 01:14 PM

L'actualisation des pages est très courante dans notre utilisation quotidienne du réseau. Lorsque nous visitons une page Web, nous rencontrons parfois certains problèmes, comme la page Web qui ne se charge pas ou ne s'affiche pas anormalement, etc. À ce stade, nous choisissons généralement d'actualiser la page pour résoudre le problème, alors comment actualiser la page rapidement ? Discutons des touches de raccourci pour l'actualisation de la page. La touche de raccourci d'actualisation de page est une méthode permettant d'actualiser rapidement la page Web actuelle via des opérations au clavier. Dans différents systèmes d'exploitation et navigateurs, les touches de raccourci pour l'actualisation de la page peuvent être différentes. Ci-dessous, nous utilisons le W commun

Le processus de fonctionnement de la disposition d'écran personnalisée edius Le processus de fonctionnement de la disposition d'écran personnalisée edius Mar 27, 2024 pm 06:50 PM

1. L'image ci-dessous est la disposition d'écran par défaut d'edius. La disposition par défaut de la fenêtre EDIUS est une disposition horizontale. Par conséquent, dans un environnement à moniteur unique, de nombreuses fenêtres se chevauchent et la fenêtre d'aperçu est en mode fenêtre unique. 2. Vous pouvez activer le [Mode double fenêtre] via la barre de menu [Affichage] pour que la fenêtre d'aperçu affiche simultanément la fenêtre de lecture et la fenêtre d'enregistrement. 3. Vous pouvez restaurer la disposition d'écran par défaut via [Barre de menu Affichage> Disposition des fenêtres> Général]. De plus, vous pouvez également personnaliser la disposition qui vous convient et l'enregistrer comme disposition d'écran couramment utilisée : faites glisser la fenêtre vers une disposition qui vous convient, puis cliquez sur [Affichage > Disposition de la fenêtre > Enregistrer la disposition actuelle > Nouveau], et dans le pop-up [Enregistrer la mise en page actuelle] Mise en page] entrez le nom de la mise en page dans la petite fenêtre et cliquez sur OK

See all articles