Petite mise en situation : Vous avez un forum, et vous voudriez que les sous-forums soient affichés sur deux colonnes. Pour ça, vous choisissez d'utiliser les grilles CSS, parce que grid c'est la vie.
Mais voilà, parfois, dans vos catégories, il y a un nombre pair de forums, et tout va bien, et parfois il y a un nombre impair, et vous n'aimez pas du tout le rendu que ça donne.
Vous pourriez vous arranger pour avoir un nombre pair de sous-forums dans chacune des sections et sous-sections de votre forum. Ou bien vous pourriez traquer tous les cas particuliers pour personnaliser l'apparence de ce dernier sous-forum qui fait tâche. Mais à titre personnel, je vous proposerais plutôt d'utiliser la magie du CSS pour faire une petite modification conditionnelle du rendu de vos forums.
Je vous retrouve après le bouton "afficher davantage", parce que pavé César, tout ça, tout ça.
Du CSS conditionnel ? Keskecé ?
C'est du CSS normal, en vrai. Lorsque vous écrivez une règle CSS, son effet ne s'appliquera que si l'élément ciblé par le sélecteur existe. Nous allons donc écrire un sélecteur qui ciblera le dernier élément enfant d'un conteneur, mais seulement s'il est à une position impaire.
Si vous n'êtes pas au point sur ce qu'est un sélecteur CSS, faites un tour sur l'article du MDN sur la syntaxe CSS et l'article sur les sélecteurs. L'important à en retenir pour le moment, c'est qu'on peut combiner des sélecteurs.
Et nous avons deux sélecteurs en particulier qui vont nous intéresser :
:last-child va sélectionner le dernier élément enfant d'un conteneur
:nth-child(odd) va sélectionner tous les éléments enfants à une position impaire (le 1er, le 3ième, le 5ième, etc)
Pour ceux qui ont du mal avec la terminologie, les "enfants" d'un conteneur, c'est basiquement les éléments que vous y mettez. Donc si on prend cet exemple très simple :
L'élément conteneur, celui qui a la classe demo, contient cinq éléments div qui sont ses enfants (des descendants directs). Si les div contenaient aussi d'autres éléments, ceux-là seraient plutôt des descendants (tout court) de notre conteneur.
Pour en revenir au sujet, on aimerait donc bien que dans cet exemple, ce cinquième élément, qui est le dernier enfant de la liste, et qui a le malheur d'être en position impaire, soit affiché de manière à occuper deux colonnes plutôt qu'une seule.
Pour ça, nous allons écrire un sélecteur qui va cibler les éléments div qui sont les enfants directs du conteneur de classe demo, ce qui va s'écrire .demo > div. Mais comme on veut spécifiquement cibler un div qui est le dernier de la liste ET qui est impair, on va lui coller les deux sélecteurs mentionnés plus haut, et notre sélecteur devient : .demo > div:last-child:nth-child(odd).
Et on en fait quoi maintenant ?
Cette fois, on va avoir besoin de nos connaissances en CSS grid, mais si on part d'une configuration simple d'affichage en deux colonnes, on va juste indiquer à l'élément div sélectionné qu'il devra prendre deux colonnes de large plutôt qu'une, avec la propriété grid-column.
Désormais, avec ce code, que notre conteneur de classe demo ait 3, 7, 13 ou 379 enfants, le dernier s'affichera toujours sur deux colonnes !
Plus qu'à appliquer ça à vos forums maintenant ;p
Si vous voulez plus de détails, ou si vous voudriez bien savoir comment on s'en sortirait si on avait trois colonnes plutôt que deux, j'ai écrit un tutoriel plus détaillé sur le forum de support du Blank Theme, n'hésitez pas à aller le lire !
Anya is live and ready to show you everything. Watch her strip, dance, and perform exclusive shows just for you. Interact in real-time and make your fantasies come true.
✓ Live Streaming✓ Interactive Chat✓ Private Shows✓ HD Quality
Anya is LIVE right now
FREE
Free to watch • No registration required • HD streaming
Quand on potasse le design de nos forums, on a souvent besoin de trouze mille couleurs pour faire quelque chose d'à peu près joli. Parfois, on aurait juste besoin de variantes "plus claire", "plus sombre", "semi-transparente" de notre couleur de base. En temps normal, on va donc devoir définir chacune de nos couleurs une par une, chacune son code hexadécimal péniblement pioché sur une palette.
Mais en CSS moderne, il existe maintenant color-mix(), une fonction qui est prise en charge par la plupart des navigateurs modernes.
La fonction prend trois valeurs, séparées par des virgules :
L'espace de couleurs : Je n'ai pas les connaissances en colorimétrie pour expliquer ça, mais c'est apparemment utilisé pour définir quelle formule mathématique est utilisée pour mélanger les couleurs. Il y a plusieurs valeurs disponibles, j'ai vu beaucoup de gens conseiller oklab, mais je ne saurais pas trop expliquer pourquoi. On écrira donc in oklab, pour dire qu'on utilise l'espace de couleurs oklab.
Une première couleur, dans n'importe quel format (rgb, hsl, hexadécimal, etc...), suivie ou non d'un pourcentage
Une deuxième couleur, dans n'importe quel format, suivie ou non d'un pourcentage
En ce qui concerne les pourcentages facultatifs :
Si on ne définit aucun pourcentage, par défaut, ça sera un mélange 50/50 entre les deux couleurs
Si on définit seulement le pourcentage d'une seule des couleurs, par exemple 30%, alors la somme des deux fera automatiquement 100%, donc par exemple 30/70
Si le total fait moins de 100%, le résultat final sera partiellement transparent.
Donc, si nous souhaitons utiliser la couleur #663399, mais juste légèrement transparente, par exemple pour la mettre par-dessus une image, on l'écrira comme ça :
color-mix(in srgb, #663399, transparent 25%)
Et vous pouvez parfaitement utiliser une propriété customisée (variable CSS) à la place des couleurs, ce qui vous facilitera d'autant plus le travail !
(Tumblr gère mal le code, comme d'habitude, donc je rajoute une image)
Pour rappel, les propriétés customisées CSS sont précédées de deux tirets -- et peuvent être utilisées avec var().
On peut faire des tas de choses avec cette fonction color-mix(), et je vous recommande d'aller jeter un coup d'œil aux vidéos de Kevin Powell pour vous faire une idée. Même si l'anglais ne vous parle pas, le visuel devrait vous aider à comprendre à quel point c'est cool !
Pour en savoir plus :
Vidéo de Kevin Powell - A deep dive into CSS color-mix()
Vidéo de Kevin Powell - Using currentColor with color-mix()
Article francophone du MDN sur color-mix()
Article anglophone (et plus complet) du MDN sur color-mix()
Couleur de groupe sur le pseudo dans la barre de navigation
Sur le discord de la Piscine, en avril dernier, s'est posée la question suivante : Lorsqu'on affiche le pseudo du membre connecté dans la barre de navigation, comment y appliquer la couleur de son groupe ?
On utilisera exactement la même méthode que celle qui nous permet de récupérer l'avatar ou le pseudo du membre connecté pour les mettre dans la barre de navigation, c'est-à-dire qu'on va utiliser une variable générée par Forumactif, _userdata.
_userdata contient des informations utiles auxquelles on accède via le mot clé correspondant, comme ça :
_userdata.username : contient le pseudonyme du membre connecté
_userdata.avatar : contient le code HTML destiné à afficher l'avatar du membre connecté
_userdata.avatar_link : contient l'URL de l'avatar du membre connecté
_userdata.groupcolor : contient la couleur (sans le #) du membre connecté
groupcolor a été rajouté par Forumactif en douce il n'y a pas si longtemps que ça (septembre 2024, pour les curieux), raison pour laquelle la plupart des LS disponibles n'ont pas l'air d'en avoir entendu parler.
Cela dit, le bidouilleur Forumactif ordinaire ne sait absolument pas quoi faire de cette information, et c'est normal. Du coup, voici un exemple de mise en pratique pour vous.
Tout se passera généralement dans le template overall_header de Forumactif. Pendant vos opérations chirurgicales sur ce template, si vous voulez placer le pseudo (et sa couleur) quelque part, vous pourrez rajouter (par exemple) ce bout de code :
Trouvez-vous ensuite un emplacement après la navigation pour rajouter ce petit script :
<!-- Cette partie du code peut être placée après toute la section dédiée à la navigation -->
<script type="text/javascript">
const pseudoOnline = document.getElementById('pseudo-visiteur');
if(pseudoOnline && _userdata.session_logged_in) {
pseudoOnline.innerHTML = _userdata.username;
pseudoOnline.style.color = '#' + _userdata.groupcolor;
}
</script>
Le script récupère l'élément qui a l'identifiant pseudo-visiteur (s'il existe) et vérifie au passage que l'utilisateur est connecté. Une fois ces vérifications faites :
Il remplace son contenu par le pseudo du membre connecté
Et il rajoutera la couleur du pseudo directement dans le HTML
Il ne fait pas de modifications quand il ne trouve pas les informations nécessaires, donc le texte que vous aurez mis par défaut (ici "Invité") apparaitra dans ce cas-là.
En principe, la variable _userdata est présente en permanence sur les forums de FA, d'où l'absence de vérification de son existence. Si elle n'est pas là, vous aurez certainement d'autres problèmes à gérer sur votre forum, de toute façon.
PS : Attention au copié-collé, Tumblr remplace les guillemets par leurs versions typographiques, pensez à les remplacer.
J'ai vu passer beaucoup de demandes d'aide pour le thème n°1 de Grimmcodes, et tout particulièrement sur la question des champs de profil.
Si le tutoriel d'installation du thème et la FAQ mise à disposition par Grim ne vous suffisent pas, je vous propose une alternative au code d'origine en ce qui concerne la page de profil et les messages.
Jetez-donc un œil à mon tutoriel de mise en place de la version alternative.
Je n'ai pas eu assez de cobayes volontaires pour tester tout ça, donc remontez-moi vos soucis si possible (idéalement, sur le discord de La Piscine si vous y êtes, il y a un sujet de demande de feedback).