28111 sujets

CSS et mise en forme, CSS3

Bonjour étant débutante je cherche un petit peu d'aide sur la façon de créer un portfolio. Je m'explique :
J'ai plusieurs photos dans ce portfolio mais j'aimerais que quand j'ai une de mes catégories sélectionnées le reste des photos non concernées disparaisse.
Je pensais au sélecteur :not mais je sais pas comment m y prendre..

Merci d'avance
Modérateur
Salut,

Pour utiliser le sélecteur not il faudrait que tes images aient une classe qui correspond à leur catégorie. Tu masquerait toutes les images qui n'ont pas cette classe. C'est pas bête. Mais il faudra quand même un peu de JS pour gérer les Evènements (click sur un filtre) non ? Il faudra alors que tu rajoute une classe sur le parent par exemple pour pouvoir déclencher le css. Si tu donne le nome de la catégorie a ton parent, dans le css tu peux mettre un truc du genre :
.filterPortrait :not(.portrait) {
    display:none;
}

Quand tu click sur portrait tu rajoute une classe filterPortrait sur le parent et le CSS peut alors masque les enfant de filterPortrait qui n'ont pas la classe portrait.
Bon c'est un peut de la théorie, c'est à développer et a tester...
Mais c'est pas bête d'utiliser :not j'y avais jamais pensé.

Sinon tu peux aussi tout gérer en JS (ou au moins la partie ajout retrait de classe sur chaque image) ou utiliser un composant déjà fait (mais ça fait lvl up de le faire soit même !). Smiley smile

Bon courage !
Personnellement, je ne passerais même pas par la pseudo-classe :not mais simplement par un jeu de classes.

Admettons un conteneur ".portfolio" contenant des enfants ".portfolio-item" et les catégories "school" et "job" :

.portfolio-item {display:none;}
.portfolio.is-all_theme .portfolio-item {display:block;}
.portfolio.is-school_theme .portfolio-item.portfolio-item-school {display:block;}
.portfolio.is-job_theme .portfolio-item.portfolio-item-job {display:block;}

De base, tous les enfants sont masqués.
Chaque enfant possède une classe (".portfolio-item-school" ou ".portfolio-item-job") correspondant à sa catégorie.
Au moment de l'intégration, on inscrit (par exemple) la classe ".is-all_theme" afin que toutes les catégories soient visible de base.
Pour la suite, un script n'aura plus qu'à remplacer la classe sur le conteneur ".portfolio" en fonction du résultat souhaité.

C'est à mes yeux la manière la plus simple de réaliser l'action décrite.