Maison interface Web tutoriel CSS Utilisez du CSS pur pour implémenter la fonction de menu de filtre

Utilisez du CSS pur pour implémenter la fonction de menu de filtre

Dec 13, 2017 pm 01:38 PM
css 功能

Dans cet article, nous utiliserons du CSS pur pour obtenir le même effet que le menu de filtres pour bébé de Taobao. Bien que l'exemple ne soit pas aussi puissant que Taobao, le principe est similaire si vous faites des efforts, vous pouvez également obtenir le même. effet comme Taobao. J'espère que cela aide tout le monde.

Le filtrage de contenu est une fonction courante sur le Web, notamment sur les sites de commerce électronique. Il permet aux utilisateurs de filtrer le contenu et d'afficher uniquement le contenu qui répond à leurs exigences. Une capture d'écran peut mieux illustrer cette fonction, comme Taobao :


Utilisez du CSS pur pour implémenter la fonction de menu de filtre



Comme le montre l'image ci-dessus, l'utilisateur souhaite acheter une robe. Dans toute la liste de produits, il y a trop de produits affichés. Les clientes ne savent pas comment choisir la robe qu'elles souhaitent. Une catégorie est proposée en haut. Les clients sélectionnent les options dont ils ont besoin et les produits qui ne remplissent pas les conditions seront filtrés. Sur la photo ci-dessus, j'ai choisi une jupe "élégante". Bien entendu, vous pouvez choisir davantage de conditions. Je n’en dirai pas plus ici.

Cela dit, dans le passé, pour obtenir un tel effet, il fallait JavaScript (ou plug-in basé sur jquery). Par exemple, l’exemple de filtrage de contenu de CodyHouse. Mais pour un étudiant qui ne comprend pas JavaScript (ne pas comprendre n'est pas une raison), il est en effet difficile d'implémenter une fonction similaire (parfois j'ai une expérience personnelle et j'ai envie de pleurer sans larmes, qui a dit que je n'avais pas étudié dur à le début).

Heureusement, les marionnettes peuvent désormais être implémentées sans JavaScript. En d’autres termes, il n’est pas difficile d’implémenter un filtre de contenu avec des fonctions plus simples utilisant du CSS pur. C'est ce que je souhaite partager avec vous aujourd'hui.

Regardons d'abord un exemple

Regardons d'abord un exemple simple Lorsque la page se charge, les vêtements pour femmes, les vêtements pour hommes et les vêtements pour enfants apparaîtront ensemble. vous effectuez les opérations suivantes Lors du fonctionnement, il y a des effets inattendus :

Lorsque vous cliquez sur le bouton "Vêtements pour femmes", les "Vêtements pour hommes" et "Vêtements pour enfants" seront filtrés

Lorsque vous cliquez le bouton "Vêtements pour hommes", "Les vêtements pour femmes" et les "vêtements pour enfants" seront filtrés

Lorsque vous cliquez sur le bouton "Vêtements pour enfants", les "vêtements pour femmes" et les "vêtements pour hommes" seront filtrés. filtré

Bien sûr, la fonction de ce boîtier n'est pas aussi bonne que Taobao C'est tellement NB, mais Haodai implémente également une fonction similaire au filtrage de contenu.


Principe de mise en œuvre

Le principe de mise en œuvre de cette fonction n'est en réalité pas trop compliqué, mais tout le monde n'y a pas prêté attention. Je peux le résumer sous deux aspects :


Sélecteur puissant

Pour réaliser cette fonction, il s'appuie principalement sur la sélection universelle des frères et sœurs dans le puissant sélecteur CSS Selector (E~F) et sélecteur de pseudo-classe : cochés. Lorsqu'un bouton radio est sélectionné, le contenu des autres catégories est masqué :

input[type="radio"]{
    &[id="men"]:checked {
        ~ .women,
        ~ .children{
            ....
        }
    }
}
Copier après la connexion

Pour contrôler les éléments .women et .children correspondants via le style ci-dessus, vous devez vous assurer que le les éléments sont cohérents avec L'élément d'entrée est un élément frère. C’est également le deuxième point clé qui sera discuté ci-dessous.


Bonne structure adaptée

Utiliser uniquement CSS pour réaliser cette fonction nécessite une structure rigoureuse, car le désordre de la structure affectera directement le effet recherché. C'est aussi son défaut. L'une d'elles consiste à utiliser le bouton radio "radio" pour faire correspondre l'étiquette. Afin d'avoir une belle apparence, si vous ne souhaitez pas afficher , vous devez contrôler la "radio" sélectionnée via l'attribut for du label. Par conséquent, la valeur id de l’entrée doit correspondre à la valeur for de l’étiquette. De plus, les valeurs de nom de toutes les entrées sont les mêmes, indiquant au navigateur qu'elles appartiennent à un groupe. Par exemple :

<input type="radio" id="men" name="clothing" />
<label for="men">男装</label>
<input type="radio" id="women" name="clothing"/>
<label for="women">女装</label>
<input type="radio" id="children" name="clothing"/>
<label for="children">童装</label>
<input type="radio" id="reset" name="clothing"/>
<label for="reset">重置</label>
Copier après la connexion

Étapes de mise en œuvre

Après avoir compris le principe de mise en œuvre, il sera beaucoup plus simple de compléter l'effet de l'exemple au début de l'article.


HTML

La structure HTML est en fait très simple. Il vous suffit de faire attention à la correspondance de l'entrée et de l'étiquette ainsi qu'à l'élément de contenu à filtrer et à son frère. élément. Par exemple, dans cet exemple, il existe trois catégories principales d'éléments de contenu : vêtements pour hommes.hommes, vêtements pour femmes.femmes et vêtements pour enfants.enfants.

<p class="container">
    <!-- 必须保证input和label匹配 -->
    <input type="radio" id="men" name="clothing " />
    <label for="men">男装</label>
    <input type="radio" id="women" name="clothing "/>
    <label for="women">女装</label>
    <input type="radio" id="children" name="clothing "/>
    <label for="children">童装</label>
    <input type="radio" id="reset" name="clothing "/>
    <label for="reset">重置</label>
    <!-- 要被过滤的内容元素需要与input元素是兄弟元素 -->
    <p class="tile men">
        <img src="/static/imghw/default1.png"  data-src="" alt="  class="lazy"   alt="">
    </p>
    <p class="tile women">
        <img src="/static/imghw/default1.png"  data-src="" alt="  class="lazy"   alt="">
    </p>
    <p class="tile children">
        <img src="/static/imghw/default1.png"  data-src="" alt="  class="lazy"   alt="">
    </p>
    <!-- 此处省略N个.men、.women和.children元素 -->
</p>
Copier après la connexion

SCSS

C'est beaucoup plus simple si vous comprenez le principe Regardons d'abord le code global :

<🎜. >
body{
  margin:0;
  text-align:center;
  font-family: Verdana;
  background:#f5f5f5;
}
h1 {
  text-align:center;
}
.container {
  width:90%;
  margin:0 auto;
}
input[type="radio"] {
  display:none;
}
label {
  width:23%;
  float:left;
  text-align:center;
  background:#ffffff;
  box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
  color:#222222;
  padding:0.5%;
  margin:0.5%;
  margin-bottom:30px;
  cursor:pointer;
}
input[type="radio"]{
  &[id="men"]:checked {
    * label {
      background:#6666ff;
    }
    ~ .women,
    ~ .children {
      width:0;
      height:0;
      padding:0;
      margin:0;
      opacity:0;
    }
  }
  &[id="women"]:checked {
    * label {
      background:#ff4466;
    }
    ~ .men,
    ~ .children {
      width:0;
      height:0;
      padding:0;
      margin:0;
      opacity:0;
    }
  }
  &[id="children"]:checked {
    * label {
      background:#66dd99;
    }
    ~ .men, 
    ~ .women {
      width:0;
      height:0;
      padding:0;
      margin:0;
      opacity:0;
    }
  }
}
.tile {
  width:23%;
  float:left;
  transition:all 1s;
  margin:0.5%;
  padding:0.5%;
  background:#6666ff;
  img {
      width: 100%;
    }
}
Copier après la connexion
Analysez brièvement ce code de style.


Afin d'améliorer l'apparence de la page, masquez d'abord l' :


input[type="radio"] {
  display:none;
}
Copier après la connexion
Nous utilisons l'attribut for de l'étiquette pour contrôler si le la radio est sélectionnée. Embellissez le style de l'étiquette :



label {
    width:23%;
    float:left;
    text-align:center;
    background:#ffffff;
    box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
    color:#222222;
    padding:0.5%;
    margin:0.5%;
    margin-bottom:30px;
    cursor:pointer;
}
Copier après la connexion
Le code de style suivant est également la partie la plus critique. Lorsque l'entrée est sélectionnée, le style de l'étiquette :



.

input[type="radio"]{
  &[id="men"]:checked {
      label {
      background:#6666ff;
    }
  }
  ...
}
Copier après la connexion
Le code ci-dessus représente lorsqu'il est sélectionné : coché, son étiquette adjacente change la couleur d'arrière-plan.


Selon l'introduction du principe précédente, nous pouvons savoir que lorsque nous choisissons "Vêtements pour hommes", alors les "Vêtements pour femmes" et "Vêtements pour enfants" doivent être cachés ici par de fausses images, c'est-à-dire. , input[type= "radio"][id="men"] est sélectionné et ses éléments frères similaires .women et .children sont masqués :


input[type="radio"]{
  &[id="men"]:checked {
    ...
    ~ .women,
    ~ .children {
      width:0;
      height:0;
      padding:0;
      margin:0;
      opacity:0;
    }
  }
}
Copier après la connexion

其他两个选项也是类似的,就不在做过多的阐述。

美化的样式,这里就不说了,大家都懂的。

通过这个过程下来,你就能看到前面DEMO展示的效果了。
总结

本文主要介绍了如何依赖于CSS的属性选择器、通用相邻兄弟选择器和伪类选择器来实现一个简单的Utilisez du CSS pur pour implémenter la fonction de menu de filtre的功能。在整个实例当中,要把握的是严谨的HTML结构,因为相邻兄弟选择器对于结构的依赖程度非常的强。也就是说结构修改之后,你的选择器和样式都要做一定的修改。
相关推荐:

最简洁的CSS学习笔记

全面总结css中属性值继承知识

css和js实现弹出登录居中界面教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment écrire des lignes fendues sur bootstrap Comment écrire des lignes fendues sur bootstrap Apr 07, 2025 pm 03:12 PM

Il existe deux façons de créer une ligne divisée bootstrap: en utilisant la balise, qui crée une ligne divisée horizontale. Utilisez la propriété CSS Border pour créer des lignes de fractionnement de style personnalisées.

Comment insérer des photos sur bootstrap Comment insérer des photos sur bootstrap Apr 07, 2025 pm 03:30 PM

Il existe plusieurs façons d'insérer des images dans Bootstrap: insérer directement les images, en utilisant la balise HTML IMG. Avec le composant d'image bootstrap, vous pouvez fournir des images réactives et plus de styles. Définissez la taille de l'image, utilisez la classe IMG-FLUID pour rendre l'image adaptable. Réglez la bordure en utilisant la classe IMG-border. Réglez les coins arrondis et utilisez la classe Roundée IMG. Réglez l'ombre, utilisez la classe Shadow. Redimensionner et positionner l'image, en utilisant le style CSS. À l'aide de l'image d'arrière-plan, utilisez la propriété CSS d'image d'arrière-plan.

Comment redimensionner le bootstrap Comment redimensionner le bootstrap Apr 07, 2025 pm 03:18 PM

Pour ajuster la taille des éléments dans Bootstrap, vous pouvez utiliser la classe de dimension, qui comprend: ajuster la largeur: .col-, .w-, .mw-ajustement Hauteur: .h-, .min-h-, .max-h-

Les rôles de HTML, CSS et JavaScript: responsabilités de base Les rôles de HTML, CSS et JavaScript: responsabilités de base Apr 08, 2025 pm 07:05 PM

HTML définit la structure Web, CSS est responsable du style et de la mise en page, et JavaScript donne une interaction dynamique. Les trois exercent leurs fonctions dans le développement Web et construisent conjointement un site Web coloré.

Comment utiliser Bootstrap en Vue Comment utiliser Bootstrap en Vue Apr 07, 2025 pm 11:33 PM

L'utilisation de bootstrap dans vue.js est divisée en cinq étapes: installer bootstrap. Importer un bootstrap dans main.js. Utilisez le composant bootstrap directement dans le modèle. Facultatif: style personnalisé. Facultatif: utilisez des plug-ins.

Comment configurer le cadre de bootstrap Comment configurer le cadre de bootstrap Apr 07, 2025 pm 03:27 PM

Pour configurer le framework Bootstrap, vous devez suivre ces étapes: 1. Référez le fichier bootstrap via CDN; 2. Téléchargez et hébergez le fichier sur votre propre serveur; 3. Incluez le fichier bootstrap dans HTML; 4. Compiler les sass / moins au besoin; 5. Importer un fichier personnalisé (facultatif). Une fois la configuration terminée, vous pouvez utiliser les systèmes, composants et styles de grille de Bootstrap pour créer des sites Web et des applications réactifs.

Comment utiliser le bouton bootstrap Comment utiliser le bouton bootstrap Apr 07, 2025 pm 03:09 PM

Comment utiliser le bouton bootstrap? Introduisez Bootstrap CSS pour créer des éléments de bouton et ajoutez la classe de bouton bootstrap pour ajouter du texte du bouton

Comment afficher la date de bootstrap Comment afficher la date de bootstrap Apr 07, 2025 pm 03:03 PM

Réponse: Vous pouvez utiliser le composant de sélecteur de date de bootstrap pour afficher les dates dans la page. Étapes: Présentez le framework bootstrap. Créez une boîte d'entrée de sélecteur de date dans HTML. Bootstrap ajoutera automatiquement des styles au sélecteur. Utilisez JavaScript pour obtenir la date sélectionnée.

See all articles