Slik stiler du hover i React

Introduksjon

Å jobbe med visuelle elementer er en utmerket måte å holde grensesnittet vårt interaktivt og fange brukerens oppmerksomhet. Å ha objekter animert på skjermen vår skaper en unik opplevelse og øker interaktiviteten.

I denne artikkelen vil vi lære hvordan du stiler hover i React ved hjelp av CSS, samt hvordan du gjør inline svevestyling.

Hover er en pseudo-klasse som ganske enkelt lar oss legge til spesifikke stiler for å gjøre en bruker oppmerksom på når musen er på og av et bestemt element. For denne artikkelen bruker vi en boks:

const App = () => {
   return (
      <div>
         <div className="box">
            <p>Hover me!</p>
         </div>
      </div>
   );
};

som har denne grunnleggende stilen:

.box {
   height: 200px;
   width: 200px;
   background-color: rgb(0, 191, 255);
   display: flex;
   justify-content: center;
   align-items: center;
   font-size: 30px;
   cursor: pointer;
}

I hovedsak vil vi endre bakgrunnsfargen til lightblue når musen er over boksen og deretter tilbake til standardstilen når musen fjernes.

Slik stiler du hover i React

Det er to tilnærminger til dette: ekstern og inline. Ekstern innebærer å ha en egen CSS-fil som gjør det enkelt å style for hover, mens inline styling ikke tillater oss å style med pseudo-klasse, men vi vil lære hvordan du style hover i inline CSS ved å bruke musehendelser i denne artikkelen.

Slik stiler du sveve i reaksjon med ekstern CSS-styling

Dette er veldig likt hvordan HTML og CSS fungerer; alt vi trenger å gjøre er å gi elementet a className (ikke class) eller bruk taggen som velgeren vi vil målrette mot, og stil deretter hover-pseudoklassen:

.box {
   height: 200px;
   width: 200px;
   background-color: rgb(0, 191, 255);
   display: flex;
   justify-content: center;
   align-items: center;
   font-size: 30px;
   cursor: pointer;
}

.box:hover {
   background-color: lightblue;
}

Alt vi gjorde var å legge til :hover pseudo-klassen til den tidligere stilede velgeren og endre noen av egenskapene vi ønsket å endre når musen var over elementet.

Hvordan style hover i reaksjon med inline styling

Med inline styling mener vi styling via elementets tag, som oppnås med style Egenskap. Hvis vi ønsker å konvertere den foregående koden til inline styling:

const App = () => {
   return (
      <div>
         <div
            style={{
               height: '200px',
               width: '200px',
               backgroundColor: 'rgb(0, 191, 255)',
               display: 'flex',
               justifyContent: 'center',
               alignItems: 'center',
               fontSize: '30px',
               cursor: 'pointer',
            }}
         >
            <p>Hover me!</p>
         </div>
      </div>
   );
};

Å ha stiler som dette gjentatt i appen vår kan gjøre det vanskelig å lese, så vi kan lage et stilobjekt hvis vi bare styler et enkelt objekt på en side, og det ikke er behov for å lage en fil for det:

const App = () => {

const boxStyle = {
   height: '200px',
   width: '200px',
   backgroundColor: 'rgb(0, 191, 255)',
   display: 'flex',
   justifyContent: 'center',
   alignItems: 'center',
   fontSize: '30px',
   cursor: 'pointer',
};

   return (
      <div>
         <div style={boxStyle}>
            <p>Hover me!</p>
         </div>
      </div>
   );
};

Så langt har vi bygget boksen vår. For å stile sveve med innebygd CSS i React, setter vi betinget innebygde stiler ved hjelp av en tilstand, samt onMouseEnter og onMouseLeave rekvisitter, som forteller oss når musen er på elementet og når den ikke er det:

import { useState } from 'react';

const App = () => {
   const [isHover, setIsHover] = useState(false);

   const handleMouseEnter = () => {
      setIsHover(true);
   };
   const handleMouseLeave = () => {
      setIsHover(false);
   };

   const boxStyle = {
      <!-- ... -->
   };

   return (
      <div>
         <div
            style={boxStyle}
            onMouseEnter={handleMouseEnter}
            onMouseLeave={handleMouseLeave}
         >
            <p>Hover me!</p>
         </div>
      </div>
   );
};

På dette tidspunktet kan vi betinget style enhver eiendom ved å bruke *isHover* stat:

const boxStyle = {
   
   backgroundColor: isHover ? 'lightblue' : 'rgb(0, 191, 255)',
};

Så langt har vi sett hvordan vi implementerer det. La oss nå bryte ned koden vår og forklare hvorfor vi brukte syntaksen vi gjorde. Vi begynte med å opprette en tilstand som lagrer en boolsk verdi som indikerer når sveving skjer (true) og ellers (som standard er den satt til false):

const [isHover, setIsHover] = useState(false);

Vi har da også lagt til to hendelser til div for å hjelpe til med å endre tilstanden vår og vite når musen er på esken og når den er av esken:

<div
   style={boxStyle}
   onMouseEnter={handleMouseEnter}
   onMouseLeave={handleMouseLeave}
>
   <p>Hover me!</p>
</div>

De onMouseEnter hendelsen utløses når musen går inn i elementet, mens onMouseLeave hendelsen utløses når den forlater. Vi tildelte en funksjon til hver av disse hendelsene, som vi nå bruker til å endre tilstanden:

const handleMouseEnter = () => {
   setIsHover(true);
};

const handleMouseLeave = () => {
   setIsHover(false);
};

Sjekk ut vår praktiske, praktiske guide for å lære Git, med beste praksis, bransjeaksepterte standarder og inkludert jukseark. Slutt å google Git-kommandoer og faktisk lære den!

Vi setter inn state i hver funksjon basert på den utløste hendelsen. Endelig kan vi bruke staten til å betinget style boksen ikke bare for backgroundColor, men også for enhver annen stil:

const boxStyle = {
   
   backgroundColor: isHover ? 'lightblue' : 'rgb(0, 191, 255)',
   color: isHover ? 'red' : 'green',
};

Når vi setter alt dette sammen, er vi nå i stand til å style sveve i React with Inline-stil:

import { useState } from 'react';

const App = () => {
   const [isHover, setIsHover] = useState(false);

   const handleMouseEnter = () => {
      setIsHover(true);
   };

   const handleMouseLeave = () => {
      setIsHover(false);
   };

   const boxStyle = {
      height: '200px',
      width: '200px',
      display: 'flex',
      justifyContent: 'center',
      alignItems: 'center',
      fontSize: '30px',
      cursor: 'pointer',
      backgroundColor: isHover ? 'lightblue' : 'rgb(0, 191, 255)',
      color: isHover ? 'red' : 'green',
   };

   return (
      <div>
         <div
            style={boxStyle}
            onMouseEnter={handleMouseEnter}
            onMouseLeave={handleMouseLeave}
         >
            <p>Hover me!</p>
         </div>
      </div>
   );
};

export default App;

konklusjonen

Vi lærte hvordan du stiler hover i React ved å bruke både ekstern styling og inline styling i denne artikkelen. Selv om inline styling ikke anbefales, er det nyttig å forstå hvordan det fungerer i tilfelle vi blir bedt om å bruke det.

Tidstempel:

Mer fra Stackabuse