CSSActif, le forum, n'est plus maintenu. Il est néanmoins disponible pour consultation. Pour des outils pratiques, rendez-vous sur: Découvrez CSSActif, une collection d'outils et de tutoriels interactifs pour les développeurs Web — HTML, CSS, JavaScript et bien plus! |
| zazou.
{ Membre }
Messages : 29
| HELLO PETITE COMMUNAUTÉ DE CSS-ACTIF !
me revoici pour quémander de l'aide en effet, j'ai voulu essayer un système d'onglets dans un message sans avoir recourt au Javascript, grâce à un tuto que j'avais trouvé. j'ai ensuite souhaité agrémenter mon code à la sauce de mon forum et tout m'avait l'air nickel mis à part un minuscule détail que je vous expose.
donc comme vous pouvez le voir ici, mes onglets sont correctement fait je pense. le seul petit truc qui m'exaspère est que, lorsque vous cliquez qu'un onglet à l'autre, un léger décalage entre les deux contenus est remarquable : le premier est beaucoup plus collé aux bords que le second. j'ai d'abord cru que c'était un problème de padding dans mon css, mais je ne pense pas, et je ne vois pas où ça peut venir d'autre.
donc voici mon code css en hide
ainsi que mon html en hide aussi
à savoir que je ne désire pas utiliser de Java, ni de page HTML, parce que je veux que le contenu soit modifiable par des membres ! donc j'aimerais garder le CSS/HTML quoi xD j'espère que vous pourrez m'aider, donc merci d'avance | | |
| | | Doare
{ Spécialiste }
Messages : 544
| Veux bien y jeter un oeil, du coup j'éditerai... | | |
| | | zazou.
{ Membre }
Messages : 29
| merci de te pencher sur mon problème, c'est gentil j'attends donc ton edit, ou ton post, btw | | |
| | | Doare
{ Spécialiste }
Messages : 544
| Du coup je poste. o/ En soi, la source du problème est simple : ta div "content1" englobe "content2", et toutes les deux ont un padding. Donc quand "content2" s'affiche, les deux padding s'ajoutent. Je me demandais pourquoi tu utilisais deux divs globales et tant d'espace, mais je viens de comprendre que c'était pour que l'ancre appelée soit plus haut. J'avoue ne pas vraiment approuver la technique utilisée, même si en soi ce n'est pas bête d'aller utiliser :target comme ça. La limite est que la méthode :target sert à atteindre une ancre, pas à faire un changement d'état, du moins pas comme ici. Pourquoi ne veux-tu pas de javascript ? Ca n'empêcherait absolument pas tes membres de modifier le contenu-même. Ils ne verraient pas le javascript et tu n'aurais pas besoin d'utiliser un moyen détourné pour ne pas se faire dérouler la page lorsqu'on clique sur un onglet. Enfin, si tu changes d'avis, tu me diras ! Voilà ce que tu peux faire pour régler ton problème actuel, et optimisez un peu ton CSS : - sortir la div "content2" et la mettre à la suite de "content1" ;
- englober "content1" et "content2" dans une seule div, par exemple "content_box" ;
- appliquer toute la mise en forme des "content" à "content_box" : c'est elle qui aura la mise en forme (taille, fond de couleur, bordure, overflow, padding, etc.) ;
- pour "content1" et "content2", et tous leurs états avec :target, tu peux alors te contenter de déterminer les "display".
Dans les états que tu détermines avec :target, il faut aussi penser à masquer la div non concernée. Quand je veux afficher les contenus de REAL LIFE, en CSS, je cible "content2"... - Code:
-
#accueil2:target #content2 { display: block; } Mais je dois aussi penser à masquer ce que je ne veux pas voir. Ce qui me donne... - Code:
-
/* j'affiche le contenu de l'onglet 2 */ #accueil2:target #content2 { display: block; } /* dans le même temps, je masque le contenu de l'autre onglet */ #accueil2:target #content1 { display: none; } Avec ça tu devrais pouvoir t'en sortir. Si tu as besoin de davantage d'explications, n'hésite pas. Autres remarques : - tes deux onglets ont exactement le même style, inutile de leur donner un nom de class différent
- le :hover de tes onglets ne sert à rien, il s'agit de la même couleur de fond
- lorsque tu utilises des propriétés à extension (-moz-, -webkit-), place ces propriétés AVANT la propriété en question
- Code:
-
/* au lieu de... */ .class1 { border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; } /* je fais... */ .class1 { -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; }
| | |
| | | zazou.
{ Membre }
Messages : 29
| HAN PUREE merci beaucoup, j'ai lu attentivement ton post, et je me sens bête de ne pas avoir fait attention à cette erreur idiote en fait, le code du tuto était comme ça, le content2 était inséré dans le content1, et quand j'avais essayé de les mettre l'une après l'autre, le content2 était doublé. enfin bref (à) donc j'ai fait ce que tu m'as dit, j'ai essayé aussi de rectifier les erreurs que tu avais noté et voilà ce que j'ai
HTLM :
CSS
donc le problème des padding est réglé je crois (à) j'ai simplement une petite question supplémentaire qui m'a été demandé : j'ai voulu essayé de mettre des transition, c'est à dire qu'en cliquant d'un onglet à l'autre, y'ait un effet, mais j'avoue que je n'ai pas su le placer au bon endroit :/ saurais-tu où le mettre ? (à)
après concernant le Java, j'avais lu sur divers topics que c'était pas possible, donc je n'ai pas cherché bien loin j'avoue, mais si c'est possible, je veux bien une petite explication (à) | | |
| | | Doare
{ Spécialiste }
Messages : 544
| Je ne suis pas vraiment spécialiste des transitions, et je ne suis pas sûre que ce soit possible dans la configuration actuelle. Je laisse quelqu'un de plus compétent me corriger, si c'est le cas. Ensuite, c'est Javascript, pas Java. Ce n'est pas la même chose. Tu pourrais envisager quelque chose dans ce genre-là... A mettre dans la gestion des codes Javascript du PA (dans Modules). - Code:
-
$(function(){ $('.onglet').click(function(){ //quand je clique sur un onglet, les actions suivantes se déclenchent $('#content_box > div').hide(); //tous les contenus sont masqués var tab = $(this).attr('id'); //je récupère l'id de l'onglet pour pouvoir cibler le contenu correspondant $('#content_' + tab).fadeIn(); //le contenu qui correspond à l'onglet s'affiche }); }); Pour que cela fonctionne, il faudra que les onglets soient dotés d'une class commune (qui détermine tout leur style) et d'une id unique. - Code:
-
<span class="onglet" id="ongl1">ID CARD</span><span class="onglet" id="ongl2">REAL LIFE</span> Les id des contenus doivent comporter le nom de l'onglet correspondant : ongl1 => content_ongl1. - Code:
-
<div id="content_box"><div id="content_ongl1"></div><div id="content_ongl2"></div></div> Et 'accueil1' et 'accueil2' deviennent inutiles. \o/ Les liens des onglets ne sont également plus très utiles. Tu peux mettre les styles du texte pur dans "onglet", et déterminer un style au survol avec :hover. (changement de couleur, de fond, toussa) Si je t'ai perdue, n'hésite pas à demander des clarifications. Et si tu veux éventuellement que l'onglet actif change en style (pour montrer dans quelle partie on se trouve), on peut aussi ajouter une class qui s'ajoutera et s'enlèvera dynamiquement en javascript. | | |
| | | Psycho
Psychopathe
Messages : 3407
| Hello zazou. ! Je viens aux nouvelles, as-tu lu l'intervention de Doare ?Si nous n'avons pas de réponse dans 4 jours, le sujet sera considéré comme résolu ! Merci de ta compréhension | | |
| | | Psycho
Psychopathe
Messages : 3407
| Bonjour zazou. ! N'ayant toujours pas obtenu de réponse, je considère ce sujet comme résolu ! Merci de ta compréhension | | |
| | | Contenu sponsorisé
| | | | |
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |
|
| Partenaires Or
|