Bonjour à toutes et tous,
J’utilise un thème (Arsha) Bootstrap pour faire un site. L’une des pages sera une petite revue de presses. https://sumto.be/archives_presse/test_5.html
Dans celle-ci, chaque jour une personne met des liens vers des articles d’autre site et ce manuellement en HTML.
Cependant elle ni connait rien et donc toutes les pages seront faites à l’avance. Pour lui faciliter le travail et éviter les erreurs j’aimerais, si cela est possible, que quand il n’y a pas de lien dans la div class= « item », l’onglet n’apparaisse pas. Dans l’exemple en ligne les onglets Décembre et Octobre ne devrais pas apparaitre. Cerise sur le gâteau se serrait parfait si elle ne doit pas non plus préciser quel onglet doit s’activer.
En gros s’il n’y a pas de lien, pas d’onglet visible. Comme ceux-ci ne sont pas visible le premier onglet contenant un lien s’activerait automatiquement.
Actuellement j’utilise ce script :
Avec la bibliothèque jQuery suivante : https://sumto.be/assets/vendor/boots...uery.latest.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 $(function() { $('#onglets').css('display', 'inline-flex'); $('#onglets').click(function(event) { var actuel = event.target; if (!/li/i.test(actuel.nodeName) || actuel.className.indexOf('actif') > -1) { } $(actuel).addClass('actif').siblings().removeClass('actif'); setDisplay(); }); function setDisplay() { var modeAffichage; $('#onglets li').each(function(rang) { modeAffichage = $(this).hasClass('actif') ? '' : 'none'; $('.item').eq(rang).css('display', modeAffichage); }); } setDisplay(); });
Et le CSS suivant que j’ai tant bien que mal adapté à celui de Bootstrap (5.0) :
Code CSS : Sélectionner tout - Visualiser dans une fenêtre à part
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 #onglets { border-bottom:none; } #onglets li{ position:relative; float: left; cursor: pointer; color:#000; z-index: 1; background-color:#fff; } #onglets .actif{ border: 1px solid #D2D2D2; border-bottom: none; font-weight: bold; z-index: 10; } #contenu{ position: relative; clear: both; padding: 10px; border-top: 1px solid #D2D2D2; top: -1px; overflow: hidden; z-index: 5; } @media (max-width:576px){ #contenu { border-top: none; } #onglets li { margin-left: -5px; } #onglets .actif{ border-bottom: 1px solid #D2D2D2;} }
J’espère avoir été assez explicite et de vous avoir donné tous les éléments nécessaires, au besoin n’hésitez pas à me crier dessus 😊 et m’indiquer ce qui manque, merci à vous.
Vincent
Partager