Partage
  • Partager sur Facebook
  • Partager sur Twitter

Personnaliser la barre de défilement

Sujet résolu
11 décembre 2010 à 20:05:21

Bonjour/soir. :)

Je voulais savoir si il existait un moyen pour personnaliser les barres de défilement où si on pouvait recréer des boutons de défilement en Javascript.

Ce serait pour cette page : http://arceusnoobpower.ahst.fr/news/

Oui, j'ai cherché sur Google, car non il n'est pas mon ami. :-°
Et puis il faudrait une barre sous tous les navigateurs.
  • Partager sur Facebook
  • Partager sur Twitter
11 décembre 2010 à 20:10:10

Citation : Arceus02

Oui, j'ai cherché sur Google, car non il n'est pas mon ami.

3e lien !

Si tu voulais une éventuelle confirmation NON il n'est pas possible de modifier l'apparence d'une scrollbar, excepté pour IE !
  • Partager sur Facebook
  • Partager sur Twitter
Ce n'est pas parce que vous ne savez pas vous servir d'un marteau qu'il faut planter des clous au tournevis.
11 décembre 2010 à 20:22:59

Hum ... Merci nightmat. :)

Mais le code donné est un poil compliqué, et je déteste utiliser ce que ne comprends pas. :-°

Donc je me trouve embêté là ... je vais essayer de me tourner Javascript, et si quelqu'un a un script accessible, ça sera plutôt sympa de le donner. ;)
  • Partager sur Facebook
  • Partager sur Twitter
11 décembre 2010 à 23:05:54

Un joli petit schéma :)

Ensuite, tu remplace couleur comme décrit par leur nom, ou du rgb, ou autre :)
  • Partager sur Facebook
  • Partager sur Twitter
12 décembre 2010 à 0:27:01

Mais générallement c'est pas vraiment un truc conseillé de changer l'apparence de la barre de défilement.

Ça ne fonctionne que sur IE, c'est pas très beau 99 % du temps et c'est pas officiel, c'est-à-dire pas selon les normes du W3C.
  • Partager sur Facebook
  • Partager sur Twitter
12 décembre 2010 à 8:04:47

C'est sympa de vouloir m'aider. :)
Le bug c'est que moi j'aimerais carrément refaire un système de défilement ...
Que je pense finir ce matin et poster. ;)

EDIT :

Fini. :D
Pour moi, c'est pour un système de news ( http://arceusnoobpower.ahst.fr/news/ ), c'est donc pour cela les noms des id et des class.


Voici le code :

HTML


<div id="news">
	
	
	
	<div class="news_scrollup">
		<img src="http://arceusnoobpower.ahst.fr/img/scroll/scrollup.png" alt="Up" onclick="javascript:scrollup()" />
	</div>
	
	<div id="news_body" style="top: 0px;">
		
		<div class="news_titre">
			News Test HTML
		</div>
		<div class="news_contenu">
			Ceci est la première news de test, donc on met du contenu :<br />
			Bla bal lab lba bla bal lab lba bla bal lab lba bla bal lab lba 
			bla bal lab lba bla bal lab lba bla bal lab lba bla bal lab lba 
			bla bal lab lba bla bal lab lba bla bal lab lba bla bal lab lba 
			Bla bal lab lba bla bal lab lba bla bal lab lba bla bal lab lba 
			bla bal lab lba bla bal lab lba bla bal lab lba bla bal lab lba 
			bla bal lab lba bla bal lab lba bla bal lab lba bla bal lab lba 
			Bla bal lab lba bla bal lab lba bla bal lab lba bla bal lab lba 
			bla bal lab lba bla bal lab lba bla bal lab lba bla bal lab lba 
			bla bal lab lba bla bal lab lba bla bal lab lba bla bal lab lba 
		</div>
		<div class="news_infos">
			Fait le XX/XX/XXXX à XX:XX.
		</div>
		
	</div>
	
	<div class="news_scrolldown">
		<img src="http://arceusnoobpower.ahst.fr/img/scroll/scrolldown.png" alt="Down" style="position:relative;top:5px;" onclick="javascript:scrolldown()" />
	</div>
	
</div>


CSS


#news
{
	margin: 10px;
	padding: 0px;
	
	background: #9fe09d;
	border: 5px solid #9fe09d;
	
	overflow: hidden;
	
	height: 500px;
	
	border-radius: 10px;
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
}

#news_body
{
	position: relative;
	/*height: 440px;*/
	
	margin: 0px;
	padding: 0px;
	
	background: #d8f2d7;
	
	border-top: 2px solid #9fe09d;
	border-bottom: 2px solid #9fe09d;
	
	border-radius: 10px;
	-moz-border-radius: 10px;
	-webkit-border-radius: 10px;
	
	z-index: 10;
}

.news_titre
{
	margin: 0px 0px 0px 0px;
	padding: 3px 5px 3px 5px;
	
	border-top: 3px solid #9fe09d;
	border-bottom: 1px solid #9fe09d;
	
	font-size: 25px;
}
.news_contenu
{
	margin: 0px;
	padding: 7px;
	
	border-bottom: 1px solid #9fe09d;
	
	font-size: 17px;
}
.news_infos
{
	margin: 0px;
	padding: 5px;
	
	font-size: 16px;
	font-style: italic;
	color: #c6d3c6;
	
	border-bottom: 3px solid #9fe09d;
}

.news_scrollup
{
	position: relative;
	top: 0px;
	left: 0px;
	right: 0px;
	
	height: 30px;
	
	margin: 0px;
	padding: 0px;
	
	background: #9fe09d;
	
	text-align: center;
	
	z-index: 20;
}

.news_scrolldown
{
	position: absolute;
	top: 610px;
	left: 25px;
	right: 25px;
	
	height: 30px;
	
	margin: 0px;
	padding: 0px;
	
	background: #9fe09d;
	
	text-align: center;
	
	z-index: 20;
}


Javascript


var scroll_level = 0;

function scrollup () {
	
	if (scroll_level != 0) {
		scroll_level += 10;
	}
	document.getElementById("news_body").setAttribute("style", "top: "+ scroll_level +"px;");
	// alert("scroll_level = "+ scroll_level +";");
}

function scrolldown () {
	
	scroll_level -= 10;
	document.getElementById("news_body").setAttribute("style", "top: "+ scroll_level +"px;");
	// alert("scroll_level = "+ scroll_level +";");
}


Explikassion



Le système de défilement est en Javascript. C'est un système simple.

Coté HTML, on a un grande div qui contient trois div. La première de ces trois div est en haut et prend toute la largeur, sans marge, et contient une image de flèche qui va vers le haut. La dernière des trois div idem que la précédente sauf qu'elle est en bas et a et flèche qui va vers le bas.
La deuxième div est est celle qui a le contenu. Elle la aucune marge et est en position "relative", et on lui met comme attribut style="top:0px".
Côté CSS, on va personnaliser les div. Le plus important est de jouer sûr les z-index des trois div afin de mettre la première et la troisième au dessus de la deuxième. Et la grande div a pour overflow=hidden.

Côté Javascript, on a une variable "var scroll_level" pour l'instant égale a zéro. Puis on a deux fonctions.
La première est pour la flèche du haut est enlève par exemple 10 a la variable puis modifie l'attribut style de la deuxième div qui va donc monter.
La deuxième fonction consiste en l'inverse.

J'espère avoir été clair. :)


LE SUJET N'EST PAS ENCORE RÉSOLU. EN EFFET, IL Y A UN PETIT BUG ...

Comment faire pour "sécuriser" la variable afin d'éviter que le contenu se retrouve trop en haut ou trop en bas ?

J'ai réussi dans un sens pour éviter qu'il monte trop, mais pour l'autre ...

Le lien : http://arceusnoobpower.ahst.fr/news/
  • Partager sur Facebook
  • Partager sur Twitter
12 décembre 2010 à 21:06:24

Je le trouve un peu chiant ton système de défilement. :p

Je dois cliquer et cliquer et cliquer et ça descend lentement.
  • Partager sur Facebook
  • Partager sur Twitter
13 décembre 2010 à 13:13:31

Oui, je compte faire deux boutons supplémentaires : un pour monter/descendre deux fois plus vite, un pour aller à la news suivante/précédente. ;)

Mais pour l'instant, il faut que je trouve une fonction ou une manière qui permet de savoir ou calculer la hauteur d'une div. Si quelqu'un en connais une, ça serait sympa. :-°
  • Partager sur Facebook
  • Partager sur Twitter
13 décembre 2010 à 16:04:11

offsetHeight non ?
  • Partager sur Facebook
  • Partager sur Twitter
Ce n'est pas parce que vous ne savez pas vous servir d'un marteau qu'il faut planter des clous au tournevis.
13 décembre 2010 à 17:24:16

... que dire, sinon :

YOUHHHHHHHOU ! MERCI ! YADIDAdidadida ... dida ... dida ?

Bon, d'accord, je me calme. En tout cas, merci beaucoup. :)
(même si du coup j'ai l'air ...)

EDIT : N'empêche que je n'arrive pas à trouver un moyen de faire pour l'instant. Tant pis, je trouverais plus tard.
  • Partager sur Facebook
  • Partager sur Twitter
13 décembre 2010 à 21:00:11

Mais c'est pas beaucoup de travail pour quelque chose qui va marcher moins bien que la barre de défilement native?
  • Partager sur Facebook
  • Partager sur Twitter
13 décembre 2010 à 22:08:55

Oui, mais ça sera beaucoup plus sympa, et puis surtout ça entraîne. Je sais qu'en informatique nous sommes fainéants, mais bon ...
  • Partager sur Facebook
  • Partager sur Twitter
14 décembre 2010 à 2:02:54

Oui, ça entraîne c'est sûr que c'est excellent.

Mais c'est difficile pour moi de croire que ça sera « beaucoup plus sympa ». Montre-moi le résultat une fois terminé, on sait jamais!
  • Partager sur Facebook
  • Partager sur Twitter
14 décembre 2010 à 13:00:48

Bah une scrollbarre comme affichée par overflow: auto; est pas terrible. Pas difficile de faire mieux en terme d'intégration au design. ;)
  • Partager sur Facebook
  • Partager sur Twitter
15 décembre 2010 à 1:55:22

Pas terrible? C'est ce qu'il y a de plus simple et de plus pratique. Tu cliques sur la barre, tu descends et ça descend, c'est tout.

Mais là toi tu commences à me parler d'intégration au design, mais ça n'a rien à voir. Je me suis plaint du fait que le système était chiant à utiliser, mais niveau desing c'est sûr que tu peux avoir quelque chose de pas si mal.

Mais je te le dis, le design c'est amusant un moment, mais si c'est chiant de juste lire les news, les visiteurs vont se lasser tràs rapidement même si t'as un design de la mort qui tue, ce qui est loin d'être le cas de toutes façons.
  • Partager sur Facebook
  • Partager sur Twitter
15 décembre 2010 à 12:46:11

Oui, parce que pour l'instant il ne fait que bouger de 10px. :-°

Je bosse actuellement pour un système de news suivante/précédente et je referais le design afin qu'il saute les lignes textes. Comme ça se sera optimal. ;)
  • Partager sur Facebook
  • Partager sur Twitter
16 décembre 2010 à 2:30:50

Ah oui comme sur la plupart des sites d'actualité. Ça c'est pas mal, mais t'as pas besoin de modifier la barre de défilement pour ça. Ou alors je comprends pas. :p
  • Partager sur Facebook
  • Partager sur Twitter
16 décembre 2010 à 4:38:54

function defile(valDefilement, DOMObject)
{
var defile = DOMObject;
if(typeof defile.scrollLeft != "undefined")
defile.scrollLeft -= valDefilement;
else
alert("Code d'erreur: 1\nErreur: Défilement des onglets non supporté.\nVotre fureteur ne supporte pas cette fonction.\nContactez l'administrateur du site pour l'informer de ce problème.");
}

si tu veux tu peux remplacer dom object pad un id et ensuite tu fait getElementById (ou gEBI pour les intimes)

Le problème c'est que normalement on doit pouvoir naviguer sur un site internet sans avoir besoin de javascript en d'autre mot, le javascript est un ajout et non un nécessité. Donc si on dois absolument avoir recours à ton système, alors il faudrait que tu propose une alternative.
  • Partager sur Facebook
  • Partager sur Twitter
16 décembre 2010 à 13:56:38

@Marc15 -> Bah en fait j'ai l'impression que ... tu ne comprends pas. Je peux pas te refaire un dessin, mais en gros, je compte faire en Javascript une barre de défilement parce que le overflow: auto; me donne deux grosses barres bien moches alors que je n'en ai besoin que d'une belle.

@Davilink -> ... je ne comprends pas ton code. :-° Et tu dois confondre, je fais bien un système de scroll, pas d'onglets (cf le alert("Code d'erreur: 1\nErreur: Défilement des onglets non supporté.\nVotre fureteur ne supporte pas cette fonction.\nContactez l'administrateur du site pour l'informer de ce problème."); .

Alors pour l'instant, je refais le système entièrement parce que c'est bordélique (ya pas d'autres mots).

Et alors oui, il y aura une alternative. :)

PS : Si un modo passe, il peux déplacer dans "Javascript" ? Je sais qu'il a pas que ça a faire, mais bon ...
  • Partager sur Facebook
  • Partager sur Twitter
16 décembre 2010 à 20:28:30

Bha c'est parce que j'avais utilisé ce système pour mes onglets, mais c'est exactement ca. Ce code fait simplement défile le contenu de ton texte. J'aurai du préciser qu'il fallait l'adapter. A place de scrollLeft sa serait scrollTop. Je vais tenter de te faire un exemple.
  • Partager sur Facebook
  • Partager sur Twitter
16 décembre 2010 à 21:42:39

Ah ok non désolé j'ai mal compris.

Mais va falloir que tu fasses quelque chose de vraiment génial pour que ça soit meilleur que la barre intégrée au système.

Et je dis comme Davilink, c'est pas du JavaScript nécessaire. Ça va simplement rendre ton code plus compliqué et risquer d'être pas compatible avec certains utilisateurs.
  • Partager sur Facebook
  • Partager sur Twitter
21 octobre 2018 à 23:10:04

Bonsoir à tous j'aimerai customiser mes barres de défilement mais sans les plugins de jquerry, bref pire HTML, CSS et JAVA  SCRIPT. Genre une barre qui fonctionne parfaitement sur tous les navigateurs
  • Partager sur Facebook
  • Partager sur Twitter
22 octobre 2018 à 7:11:09

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. Me contacter par MP si besoin.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)