Maison interface Web js tutoriel Le guide ultime pour créer un en-tête réactif avec React et Tailwind CSS

Le guide ultime pour créer un en-tête réactif avec React et Tailwind CSS

Sep 27, 2024 pm 06:37 PM

The Ultimate Guide to Crafting a Responsive Header with React and Tailwind CSS

Création d'un en-tête réactif à l'aide de React et Tailwind CSS

La création d'un en-tête réactif est un aspect fondamental du développement Web moderne. Dans cet article, nous vous guiderons dans la création d'un composant d'en-tête réactif à l'aide de React et Tailwind CSS. Ce guide est conçu pour les débutants, donc même si vous êtes nouveau dans ces technologies, vous le trouverez facile à suivre. Nous décomposerons le code fourni étape par étape, expliquant comment il fonctionne et comment vous pouvez implémenter des fonctionnalités similaires dans vos projets.

Introduction

Un en-tête sert de zone de navigation pour un site Web, fournissant des liens vers différentes sections et des actions importantes telles que la connexion ou l'inscription. Dans le monde actuel axé sur le mobile, il est essentiel que les en-têtes soient réactifs, ce qui signifie qu'ils s'adaptent gracieusement aux différentes tailles d'écran. Nous utiliserons React pour créer notre composant et Tailwind CSS pour le styliser, garantissant ainsi un look élégant et moderne.

Commencer

Avant de plonger dans le code, assurez-vous d'avoir configuré un environnement React. Vous pouvez créer une nouvelle application React à l'aide de Create React App en exécutant la commande suivante :

npx create-react-app responsive-header
cd responsive-header
Copier après la connexion

Une fois votre application configurée, vous devrez installer Tailwind CSS. Vous pouvez le faire en suivant le guide d'installation officiel de Tailwind CSS.

Après avoir configuré Tailwind, vous êtes prêt à commencer à créer notre composant d'en-tête !

Répartition étape par étape du code

Importation des bibliothèques requises

Dans votre dossier src, créez un nouveau fichier appelé Header.js. La première étape consiste à importer React et le hook useState :

import React, { useState } from "react";
Copier après la connexion

Le hook useState nous permet de gérer l'état de notre menu de navigation, notamment s'il est ouvert ou fermé.

Création du composant d'en-tête

Maintenant, définissons notre composant Header.

function Header() {
  const [nav, setNav] = useState(false);
}
Copier après la connexion

Ici, nous initialisons une variable d'état appelée nav pour savoir si le menu de navigation est ouvert ou fermé. La fonction setNav nous permettra de basculer cet état.

Rendu de l'en-tête

Ensuite, nous renverrons le JSX pour notre en-tête :

return (
  <header>
    <nav className="bg-white border-gray-200 px-4 lg:px-6 py-2.5 dark:bg-gray-800 shadow">
      <div className="flex flex-wrap justify-between items-center mx-auto max-w-screen-lg"></div>
</header>
Copier après la connexion
  • avec les propriétés flex : cela utilise Flexbox pour disposer les éléments dans la navigation. La classe max-w-screen-lg limite la largeur maximale de l'en-tête, garantissant ainsi qu'il s'affiche bien sur des écrans plus grands.

Ajout du logo

Maintenant, ajoutons un logo à notre en-tête :

<a href="#" className="flex items-center">
  <span className="self-center text-xl font-semibold whitespace-nowrap dark:text-white">
    Logo
  </span>
</a>
Copier après la connexion

Cette section contient une balise d'ancrage renvoyant vers la page d'accueil, ainsi qu'un élément span pour le texte du logo. Les classes appliquées garantissent que le logo est correctement stylé, y compris les éléments de conception réactifs pour le mode sombre.

Ajout du menu de navigation

Ensuite, nous ajouterons les éléments de navigation proprement dits. Cette section changera selon que l'état de navigation est vrai ou faux :

<div
  className={`flex-col md:flex md:flex-row items-center w-full md:w-auto md:order-2 transition-all duration-300 ${
    nav
      ? "absolute top-14 left-0 w-full bg-white shadow-md p-4 md:relative md:top-0 md:w-auto md:bg-transparent md:shadow-none"
      : "hidden md:flex gap-6"
  }`}
></div>
Copier après la connexion
  • Noms de classe dynamiques : nous utilisons des littéraux de modèle pour appliquer conditionnellement des classes en fonction de l'état de navigation. Lorsque nav est vrai, le menu est visible ; sinon, il est masqué sur les écrans moyens et grands.
  • Transition : Les classes transition-all et durée-300 offrent un effet de transition en douceur lorsque le menu s'ouvre ou se ferme.

Création des éléments de menu

Maintenant, définissons nos éléments de menu dans une liste non ordonnée :

<ul className="flex flex-col md:flex-row md:gap-8 gap-0">
  <li>
    <a
      href="#"
      className="block py-2 pr-4 pl-3 text-gray-700 rounded md:bg-transparent md:text-primary-700 md:p-0 dark:text-white"
      aria-current="page"
    >
      Home
    </a>
  </li>
  <li>
    <a
      href="#"
      className="block py-2 pr-4 pl-3 text-gray-700 border-b border-gray-100 hover:bg-gray-50 md:hover:bg-transparent md:border-0 md:hover:text-primary-700 md:p-0 dark:text-gray-400 md:dark:hover:text-white dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700"
    >
      Pricing
    </a>
  </li>
  <li>
    <a
      href="#"
      className="block py-2 pr-4 pl-3 text-gray-700 border-b border-gray-100 hover:bg-gray-50 md:hover:bg-transparent md:border-0 md:hover:text-primary-700 md:p-0 dark:text-gray-400 md:dark:hover:text-white dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700"
    >
      Contact Us
    </a>
  </li>
  <li>
    <a
      href="#"
      className="block py-2 pr-4 pl-3 text-gray-700 border-b border-gray-100 hover:bg-gray-50 md:hover:bg-transparent md:border-0 md:hover:text-primary-700 md:p-0 dark:text-gray-400 md:dark:hover:text-white dark:hover:bg-gray-700 dark:hover:text-white md:dark:hover:bg-transparent dark:border-gray-700"
    >
      Sign In
    </a>
  </li>
</ul>
Copier après la connexion

Chaque élément de la liste (

  • ) contient une balise d'ancrage () qui sert de lien. Les classes CSS Tailwind sont largement utilisées ici pour le style, y compris les effets de survol et la compatibilité du mode sombre.

    Ajout d'un bouton d'inscription

    Après les éléments de menu, nous ajouterons un bouton d'inscription :

    <button
      className="mt-4 md:mt-0 rounded-full bg-slate-800 py-2 px-4 border border-transparent text-center text-sm text-white transition-all shadow-md hover:shadow-lg focus:bg-slate-700 focus:shadow-none active:bg-slate-700 hover:bg-slate-700 active:shadow-none disabled:pointer-events-none disabled:opacity-50 disabled:shadow-none"
      type="button"
    >
      Sign Up Now
    </button>
    
    Copier après la connexion

    Ce bouton est conçu pour se démarquer et fournit un appel à l'action clair aux utilisateurs. Nous avons ajouté des états de survol et de focus pour une meilleure expérience utilisateur.

    Ajout de l'icône Hamburger pour les appareils mobiles

    Pour rendre l'en-tête réactif, nous inclurons une icône de menu hamburger pour les utilisateurs mobiles :

    <div className="md:hidden flex items-center lg:order-1">
      <button
        type="button"
        className="inline-flex items-center p-2 ml-1 text-sm text-gray-500 rounded-lg hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-gray-200 dark:text-gray-400 dark:hover:bg-gray-700 dark:focus:ring-gray-600"
        aria-controls="mobile-menu"
        aria-expanded={nav}
        onClick={() => setNav(!nav)}
      >
        <span className="sr-only">Open main menu</span>
    </button>
    </div>
    
    Copier après la connexion

    Ce code crée un bouton qui, lorsque vous cliquez dessus, bascule la visibilité du menu de navigation. Les attributs aria-controls et aria-expanded améliorent l'accessibilité.

    Gestion des changements d'icône

    Selon que le menu de navigation est ouvert ou fermé, nous pouvons afficher différentes icônes :

    {nav ? (
      <svg /* close icon */></svg>
    ) : (
      <svg /* open icon */></svg>
    )}
    
    Copier après la connexion

    Ce rendu conditionnel nous permet de fournir un repère visuel aux utilisateurs sur l'état du menu.

    Complete Component Code

    Now that we've gone through each part, here’s the complete code for the Header component:

    import React, { useState } from "react";
    
    function Header() {
      const [nav, setNav] = useState(false);
    
      return (
        
    ); } export default Header;
    Copier après la connexion

    Conclusion

    Congratulations! You have successfully built a responsive header using React and Tailwind CSS. This component features a logo, navigation links, a sign-up button, and a hamburger icon for mobile devices. With this foundation, you can customize the header further by adding more links, changing styles, or integrating it into a larger application.

    FAQs

    Q1: What is Tailwind CSS?

    Tailwind CSS is a utility-first CSS framework that provides low-level utility classes to build custom designs quickly. Unlike traditional CSS frameworks, Tailwind promotes a more component-based approach to styling.

    Q2: Why use React for the header component?

    React is a powerful JavaScript library for building user interfaces. Using React allows us to create reusable components, manage state efficiently, and improve the overall performance of our applications.

    Q3: How can I customize the header further?

    You can customize the header by adding more links, changing colors, or even adding dropdown menus. Tailwind CSS makes it easy to change styles directly in the JSX.

    Q4: Is it necessary to use Tailwind CSS with React?

    No, it’s not necessary to use Tailwind CSS with React. You can use any CSS framework or custom CSS styles. However, Tailwind provides a fast and efficient way to style components without writing custom CSS.

    By following this guide, you should now feel confident in creating responsive headers for your own projects. Happy coding!

    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

    Video Face Swap

    Video Face Swap

    Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

    Article chaud

    <🎜>: Grow A Garden - Guide de mutation complet
    3 Il y a quelques semaines By DDD
    <🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    Nordhold: Système de fusion, expliqué
    3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
    3 Il y a quelques semaines 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)

    Sujets chauds

    Tutoriel Java
    1667
    14
    Tutoriel PHP
    1273
    29
    Tutoriel C#
    1255
    24
    Moteurs JavaScript: comparaison des implémentations Moteurs JavaScript: comparaison des implémentations Apr 13, 2025 am 12:05 AM

    Différents moteurs JavaScript ont des effets différents lors de l'analyse et de l'exécution du code JavaScript, car les principes d'implémentation et les stratégies d'optimisation de chaque moteur diffèrent. 1. Analyse lexicale: convertir le code source en unité lexicale. 2. Analyse de la grammaire: générer un arbre de syntaxe abstrait. 3. Optimisation et compilation: générer du code machine via le compilateur JIT. 4. Exécuter: Exécutez le code machine. Le moteur V8 optimise grâce à une compilation instantanée et à une classe cachée, SpiderMonkey utilise un système d'inférence de type, résultant en différentes performances de performances sur le même code.

    Python vs JavaScript: la courbe d'apprentissage et la facilité d'utilisation Python vs JavaScript: la courbe d'apprentissage et la facilité d'utilisation Apr 16, 2025 am 12:12 AM

    Python convient plus aux débutants, avec une courbe d'apprentissage en douceur et une syntaxe concise; JavaScript convient au développement frontal, avec une courbe d'apprentissage abrupte et une syntaxe flexible. 1. La syntaxe Python est intuitive et adaptée à la science des données et au développement back-end. 2. JavaScript est flexible et largement utilisé dans la programmation frontale et côté serveur.

    De C / C à JavaScript: comment tout cela fonctionne De C / C à JavaScript: comment tout cela fonctionne Apr 14, 2025 am 12:05 AM

    Le passage de C / C à JavaScript nécessite de s'adapter à la frappe dynamique, à la collecte des ordures et à la programmation asynchrone. 1) C / C est un langage dactylographié statiquement qui nécessite une gestion manuelle de la mémoire, tandis que JavaScript est dynamiquement typé et que la collecte des déchets est automatiquement traitée. 2) C / C doit être compilé en code machine, tandis que JavaScript est une langue interprétée. 3) JavaScript introduit des concepts tels que les fermetures, les chaînes de prototypes et la promesse, ce qui améliore la flexibilité et les capacités de programmation asynchrones.

    Javascript et le web: fonctionnalité de base et cas d'utilisation Javascript et le web: fonctionnalité de base et cas d'utilisation Apr 18, 2025 am 12:19 AM

    Les principales utilisations de JavaScript dans le développement Web incluent l'interaction client, la vérification du formulaire et la communication asynchrone. 1) Mise à jour du contenu dynamique et interaction utilisateur via les opérations DOM; 2) La vérification du client est effectuée avant que l'utilisateur ne soumette les données pour améliorer l'expérience utilisateur; 3) La communication de rafraîchissement avec le serveur est réalisée via la technologie AJAX.

    JavaScript en action: Exemples et projets du monde réel JavaScript en action: Exemples et projets du monde réel Apr 19, 2025 am 12:13 AM

    L'application de JavaScript dans le monde réel comprend un développement frontal et back-end. 1) Afficher les applications frontales en créant une application de liste TODO, impliquant les opérations DOM et le traitement des événements. 2) Construisez RestulAPI via Node.js et Express pour démontrer les applications back-end.

    Comprendre le moteur JavaScript: détails de l'implémentation Comprendre le moteur JavaScript: détails de l'implémentation Apr 17, 2025 am 12:05 AM

    Comprendre le fonctionnement du moteur JavaScript en interne est important pour les développeurs car il aide à écrire du code plus efficace et à comprendre les goulots d'étranglement des performances et les stratégies d'optimisation. 1) Le flux de travail du moteur comprend trois étapes: analyse, compilation et exécution; 2) Pendant le processus d'exécution, le moteur effectuera une optimisation dynamique, comme le cache en ligne et les classes cachées; 3) Les meilleures pratiques comprennent l'évitement des variables globales, l'optimisation des boucles, l'utilisation de const et de locations et d'éviter une utilisation excessive des fermetures.

    Python vs JavaScript: communauté, bibliothèques et ressources Python vs JavaScript: communauté, bibliothèques et ressources Apr 15, 2025 am 12:16 AM

    Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

    Python vs JavaScript: environnements et outils de développement Python vs JavaScript: environnements et outils de développement Apr 26, 2025 am 12:09 AM

    Les choix de Python et JavaScript dans les environnements de développement sont importants. 1) L'environnement de développement de Python comprend Pycharm, Jupyternotebook et Anaconda, qui conviennent à la science des données et au prototypage rapide. 2) L'environnement de développement de JavaScript comprend Node.js, VScode et WebPack, qui conviennent au développement frontal et back-end. Le choix des bons outils en fonction des besoins du projet peut améliorer l'efficacité du développement et le taux de réussite du projet.

    See all articles