Horje
Create an Animated Social Media Icons in React and Tailwind CSS

Adding animated social media icons using React and Tailwind CSS improves user experience by enhancing functionality and visual appeal. The icons will have a smooth and appealing animation, making them visually engaging for users.

Output Preview:Let us have a look at how the final output will look like.

ai

Preview

Approach to Create Animated Social Media Icons:

  • Create separate React elements for each social media icon, enhancing code organization.
  • Utilize the “react-icons” library to easily integrate a variety of social media icons into the component.
  • Integrate Tailwind CSS for efficient styling and animations, using pre-defined classes for quick customization.
  • Implement hover effects using CSS to enhance user interaction upon cursor hover.
  • Ensure responsiveness across devices by utilizing Tailwind CSS for design and layout.

Steps to Create Animated Social Media Icons

Step 1: Create a new React JS project using the following command

npx create-react-app animated
cd animated

Step 2: Install Tailwind CSS

npm install tailwindcss
npx tailwindcss init -p

Step 3: Configure Tailwind CSS

Add Tailwind CSS to your src/index.css file:

@tailwind base;
@tailwind components;
@tailwind utilities;

Step 4: Modify tailwind.config.js file:

module.exports = {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}

Folder Structure:

pst

The updated dependencies in package.json file will look like:

"dependencies": {
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-icons": "^5.0.1",
"react-scripts": "5.0.1",
"tailwindcss": "^3.4.1",
"web-vitals": "^2.1.4"
}

Example: Illustration of Animated Social Media Icons in React and Tailwind CSS

CSS
/* index.css */
body {
    margin: 0;
    font-family: -apple-system, BlinkMacSystemFont,
        'Segoe UI', 'Roboto', 'Oxygen',
        'Ubuntu', 'Cantarell', 'Fira Sans',
        'Droid Sans', 'Helvetica Neue',
        sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

@tailwind base;
@tailwind components;
@tailwind utilities;
CSS
/* App.css */
.icon {
    font-size: 2rem;
    transition: all 1.5s ease-out;
    cursor: pointer;
}

.h-300 {
    height: 300px;
}

.animation-stopped .icon {
    animation-play-state: paused;
}

.animation-stopped .icon:hover {
    animation-play-state: running;
}

.icon:hover {
    transition: all 0.3s ease-in;

    &.whatsapp {
        filter: drop-shadow(0px 0px 10px green);
    }

    &.fb {
        filter: drop-shadow(0px 0px 10px blue);
    }

    &.twitter {
        filter: drop-shadow(0px 0px 10px white);
    }

    &.insta {
        filter: drop-shadow(0px 0px 10px yellow);
    }

    &.telegram {
        filter: drop-shadow(0px 0px 10px #3390ec);
    }

    &.youtube {
        filter: drop-shadow(0px 0px 10px #ff0000);
    }

    &.linkedin {
        filter: drop-shadow(0px 0px 10px #0077b5);
    }
}

@media screen and (max-width:500px) {
    header>div {
        flex-wrap: wrap;
    }

    .icon {
        font-size: 1.5rem;
    }

    footer>div {
        flex-wrap: wrap;
    }
}

.swing-animation {
    animation: swingAnimation 1s ease-in-out infinite;
}

.pulse-animation {
    animation: pulseAnimation 1s linear infinite;
}

.rotate-animation {
    animation: rotateAnimation 1s linear infinite;
}

.bounce-animation {
    animation: bounceAnimation 1s ease-in-out infinite;
}

.flash-animation {
    animation: flashAnimation 1s linear infinite;
}

.shake-animation {
    animation: shakeAnimation 1s ease-in-out infinite;
}

.flip-animation {
    animation: flipAnimation 1s ease-in-out infinite;
}

@keyframes swingAnimation {
    0% {
        transform: rotate(0deg);
    }

    50% {
        transform: rotate(15deg);
    }

    100% {
        transform: rotate(0deg);
    }
}

@keyframes pulseAnimation {
    0% {
        transform: scale(1);
    }

    50% {
        transform: scale(1.2);
    }

    100% {
        transform: scale(1);
    }
}

@keyframes rotateAnimation {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

@keyframes bounceAnimation {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-20px);
    }
}

@keyframes flashAnimation {

    0%,
    50%,
    100% {
        opacity: 1;
    }

    25%,
    75% {
        opacity: 0;
    }
}

@keyframes shakeAnimation {

    0%,
    100% {
        transform: translateX(0);
    }

    20%,
    60% {
        transform: translateX(-10px);
    }

    40%,
    80% {
        transform: translateX(10px);
    }
}

@keyframes flipAnimation {
    0% {
        transform: rotateY(0);
    }

    50% {
        transform: rotateY(180deg);
    }

    100% {
        transform: rotateY(360deg);
    }
}
JavaScript
/* App.js*/
import "./App.css";
import SocialIcons from "./components/SocialIcons";
function App() {
    return (
        <>
            <div className="container mx-auto">
                <header className="bg-gray-800 text-white p-4">
                    <div className="container mx-auto flex 
                                    justify-between items-center">
                        <h1 className="text-2xl font-bold">
                            Social Icons
                        </h1>
                        <nav>
                            <SocialIcons />
                        </nav>
                    </div>
                </header>
                <main className="py-8 text-center h-300 
                                flex items-center">
                    <h1>
                        A Computer Science portal for geeks.
                        It contains well written, well thought
                        and well explained computer science and
                        programming articles, quizzes and
                        practice/competitive programming/company
                        interview Questions.
                    </h1>
                </main>
                <footer className="bg-gray-800 text-white p-4">
                    <div className="container mx-auto flex 
                                    justify-between items-center
                                    text-center">
                        <nav>
                            <ul className="flex space-x-4 
                                        animation-stopped">
                                <SocialIcons />
                            </ul>
                        </nav>
                        <p className="text-red-500">
                            © 2024 All rights reserved.
                        </p>
                    </div>
                </footer>
            </div>
        </>
    );
}

export default App;
JavaScript
/* SocialIcons.js*/
import React from "react";
import { FaInstagram, FaTelegram, FaWhatsapp } from "react-icons/fa";
import { CiFacebook } from "react-icons/ci";
import { FaXTwitter } from "react-icons/fa6";
import { CiYoutube } from "react-icons/ci";
import { CiLinkedin } from "react-icons/ci";

const SocialIcons = () => {
    return (
        <div className="flex space-x-4">
            <FaTelegram
                className="icon text-blue-400 telegram
                        swing-animation" />
            <FaXTwitter
                className="icon text-white twitter 
                        pulse-animation" />
            <FaInstagram
                className="icon text-orange-500 insta
                        rotate-animation" />
            <CiFacebook
                className="icon text-blue-500 fb 
                        bounce-animation" />
            <FaWhatsapp
                className="icon text-green-500 whatsapp 
                        flash-animation" />
            <CiYoutube
                className="icon text-red-400 youtube 
                        shake-animation" />
            <CiLinkedin
                className="icon text-indigo-400 linkedin 
                        flip-animation" />
        </div>
    );
};
export default SocialIcons;

Steps to run the application:

Step 1: Type the following command in the terminal.

npm start

Step 2: Open the web browser and type the following URL

http://localhost:3000/

Output:




Reffered: https://www.geeksforgeeks.org


CSS

Related
Design a Retirement Age Calculator in Tailwind CSS Design a Retirement Age Calculator in Tailwind CSS
How to Center an Image Vertically and Horizontally ? How to Center an Image Vertically and Horizontally ?
Design a Guestbook in Tailwind CSS Design a Guestbook in Tailwind CSS
How to Create a PortScanner Card in JavaScript and Tailwind CSS ? How to Create a PortScanner Card in JavaScript and Tailwind CSS ?
How to create Delete Modal Card using JavaScript and Tailwind ? How to create Delete Modal Card using JavaScript and Tailwind ?

Type:
Geek
Category:
Coding
Sub Category:
Tutorial
Uploaded by:
Admin
Views:
13