Hogyan stílusozd a lebegést a React-ban

Bevezetés

A látványelemekkel való munka kiváló módja annak, hogy interfészünket interaktívan tartsuk, és lekötjük a felhasználó figyelmét. Ha tárgyakat animálunk a képernyőn, az egyedülálló élményt nyújt, és növeli az interaktivitást.

Ebben a cikkben megtudjuk, hogyan lehet stílust lebegni a React alkalmazásban CSS használatával, valamint hogyan kell végrehajtani az inline hover stílust.

A Hover egy pszeudoosztály, amely egyszerűen lehetővé teszi számunkra, hogy meghatározott stílusokat adjunk hozzá, hogy a felhasználó tudatában legyen, ha az egér be van kapcsolva vagy ki van kapcsolva egy adott elemen. Ehhez a cikkhez egy dobozt fogunk használni:

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

amelynek ez az alapstílusa:

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

Lényegében megváltoztatjuk a háttér színét lightblue amikor az egér a doboz fölött van, majd visszaállítja az alapértelmezett stílust, amikor eltávolítja az egeret.

Hogyan stílusozd a lebegést a React-ban

Ennek két megközelítése van: külső és belső. A külsőhöz tartozik egy külön CSS-fájl, amely megkönnyíti a lebegtetéshez való stílust, míg a beágyazott stílus nem teszi lehetővé a pszeudoosztályú stílust, de ebben a cikkben megtanuljuk, hogyan lehet stílust stílusozni a beépített CSS-ben egéresemények használatával.

Hogyan lehet stílusos lebegést reagálni a külső CSS-stílusra

Ez nagyon hasonlít a HTML és a CSS működéséhez; mindössze annyit kell tennünk, hogy megadjuk az a elemet className (Nem class), vagy használja a címkét választóként, amelyet megcélozunk, majd alakítsa ki a hover pszeudoosztály stílusát:

.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;
}

Csak annyit tettünk, hogy hozzáadtuk a :hover pszeudo osztályt az előzőleg stílusos kijelölőhöz, és módosítsa azokat a tulajdonságokat, amelyeket meg akartunk változtatni, amikor az egér az elem felett volt.

Hogyan alakítsunk stílust, és reagáljunk a belső stílussal

Inline stílus alatt az elem címkéjén keresztül történő stílust értjük, amely a style tulajdonság. Ha az előző kódot inline stílusra szeretnénk konvertálni:

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>
   );
};

Az ehhez hasonló stílusok megismétlése az alkalmazásunkban megnehezítheti az olvasást, így létrehozhatunk egy stílusobjektumot, ha csak egyetlen objektumot formálunk egy oldalon, és nincs szükség hozzá fájl létrehozására:

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>
   );
};

Eddig megépítettük a dobozunkat. Ahhoz, hogy stílust lehessen váltani a beágyazott CSS-sel a React alkalmazásban, feltételesen beállítjuk a soron belüli stílusokat egy állapot használatával, valamint a onMouseEnter és a onMouseLeave kellékek, amelyek megmondják, mikor van az egér az elemen, és mikor nem:

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>
   );
};

Ezen a ponton bármilyen tulajdonságot feltételesen stílusozhatunk a *isHover* állapot:

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

Eddig láttuk, hogyan kell megvalósítani. Most bontsuk fel a kódunkat, és magyarázzuk el, miért használtuk a szintaxist. Azzal kezdtük, hogy létrehoztunk egy állapotot, amely egy logikai értéket tárol, jelezve, ha lebegés történik (true) és egyébként (alapértelmezés szerint ez van beállítva false):

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

Ezután két eseményt is hozzáadtunk a div-hez, hogy segítsünk az állapotunk megváltoztatásában, és megtudjuk, mikor van az egér a dobozon, és mikor van ki:

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

A onMouseEnter esemény akkor indul el, amikor az egér belép az elembe, míg a onMouseLeave esemény akkor indul el, amikor kilép. Mindegyik eseményhez egy függvényt rendeltünk, amelyet most az állapot megváltoztatására használunk:

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

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

Tekintse meg gyakorlatias, gyakorlati útmutatónkat a Git tanulásához, amely tartalmazza a bevált gyakorlatokat, az iparág által elfogadott szabványokat és a mellékelt csalólapot. Hagyd abba a guglizást a Git parancsokkal, és valójában tanulni meg!

Beállítottuk a state minden függvényben a kiváltott esemény alapján. Végül használhatjuk az állapotot a doboz feltételes stílusának meghatározásához, nem csak azért backgroundColor, hanem bármilyen más stílushoz is:

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

Ha mindezt összerakjuk, mostantól stíluslebeghetünk React with Inline stílusban:

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;

Következtetés

Ebből a cikkből megtanultuk, hogyan lehet stílust lebegni a Reactben külső és belső stílus használatával. Noha a beágyazott stílus nem ajánlott, hasznos megérteni, hogyan működik, arra az esetre, ha felkérnénk a használatára.

Időbélyeg:

Még több Stackabus