In today’s digital age, having a 3D portfolio website can significantly enhance your online presence and showcase your work in a captivating manner. A 3D portfolio not only demonstrates your technical skills but also your creativity and attention to detail. In this article, we will guide you through creating a stunning 3D portfolio website using HTML, CSS, and JavaScript. This step-by-step tutorial will cover everything from setting up your project to deploying your website.

Setting Up Your Project

Before we dive into coding, let’s set up our project. You will need a code editor (such as Visual Studio Code) and a modern web browser (like Google Chrome or Mozilla Firefox). Create a new directory for your project and inside it, create three files: index.html, styles.css, and script.js.

Creating the HTML Structure

First, let’s build the basic structure of our HTML file.

<!DOCTYPE html>
<html lang="en">



<head>
    <meta charset="UTF-8">
    <title>Personal Portfolio</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- site Favicon -->
    <link rel="icon" type="image/png" href="assets/img/favicon/favicon.png">
    <script src="https://cdn.tailwindcss.com"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
    <!-- css link -->
    <link rel="stylesheet" href="assets/font/css/all.min.css">
    <link rel="stylesheet" href="assets/css/aos.min.css">
    <link rel="stylesheet" href="assets/css/owl.carousel.min.css">
    <link rel="stylesheet" href="assets/css/jquery.fancybox.min.css">

    <!-- main style -->
    <link rel="stylesheet" href="assets/css/style.css">

</head>

<body class="overflow-x-hidden">
    <!-- Loader -->
    <div id="bx-overlay">
        <span class="loader"></span>
    </div>

    <!-- header -->
    <header class="bg-[#020710] w-full bx-static">
        <nav class="border-gray-200 py-4">
            <div
                class="flex flex-wrap justify-between items-center px-6 mx-auto 2xl:max-w-[1320px] xl:max-w-[1140px] lg:max-w-[960px] md:max-w-[720px] sm:max-w-[540px] max-[320px]:px-[12px]">
                <a href="index.html" class="flex items-center">
                    <img src="assets/img/logo/logo.png" class="w-[90px]" alt="Logo">
                </a>
                <div class="flex items-center lg:order-2">
                    <button type="button"
                        class="text-white bg-[#2ce97a] hover:bg-opacity-80 no-underline font-medium rounded-full text-sm px-8 py-2.5 mr-2 hidden 2xl:block xl:block lg:block">
                        Get a quote</button>
                    <button data-collapse-toggle="mobile-menu" type="button" id="dropdown-toggle"
                        class="inline-flex items-center border p-2 text-lg text-gray-500 rounded-lg lg:hidden"
                        aria-controls="mobile-menu" aria-expanded="false">
                        <span class="sr-only">Open main menu</span>
                        <i class="fa-solid fa-bars"></i>
                    </button>
                </div>
                <div class="justify-between items-center w-full lg:flex lg:w-auto lg:order-1" id="mobile-menu">
                    <ul class="flex flex-col font-medium lg:flex-row lg:space-x-8 2xl:border-0 lg:border-0 border lg:mt-0 lg-mb-4 lg:p-[0] lg:border-none lg:rounded-[0] lg:text-[15px] mt-4 p-[15px] 2xl:mb-0 xl:mb-0 lg:mb-0 mb-2 border-[#eee] rounded-[30px] text-[13px]"
                        id="top-menu">
                        <li class="nav-item active">
                            <a href="#home" class="block py-2 pr-4 pl-3 text-[#fff] lg:p-0">Home</a>
                        </li>
                        <li class="nav-item">
                            <a href="#about" class="block py-2 pr-4 pl-3 text-[#fff] lg:p-0">About</a>
                        </li>
                        <li class="nav-item">
                            <a href="#experience" class="block py-2 pr-4 pl-3 text-[#fff] lg:p-0">Experience</a>
                        </li>
                        <li class="nav-item">
                            <a href="#portfolio" class="block py-2 pr-4 pl-3 text-[#fff] lg:p-0">Portfolio</a>
                        </li>
                        <li class="nav-item">
                            <a href="#news" class="block py-2 pr-4 pl-3 text-[#fff] lg:p-0">News</a>
                        </li>
                        <li class="nav-item">
                            <a href="#contact" class="block py-2 pr-4 pl-3 text-[#fff] lg:p-0">Contact Us</a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
    </header>

    <!-- hero section -->
    <section id="home" class="section-hero bg-[#020710] relative">
        <img class="shape1 absolute w-12 left-72 bottom-36 parallax sm:block hidden" src="assets/img/shape/shape-1.png"
            alt="shape-1">
        <img class="shape2 absolute w-12 top-72 right-32 parallax top sm:block hidden"
            src="assets/img/shape/shape-2.png" alt="shape-2">
        <img class="shape3 absolute w-12 top-48	left-96 parallax left top sm:block hidden"
            src="assets/img/shape/shape-3.png" alt="shape-3">
        <img class="shape4 absolute w-6 bottom-72 left-24 parallax left sm:block hidden"
            src="assets/img/shape/shape-4.png" alt="shape-4">
        <img class="shape5 absolute w-12 bottom-48 right-12 parallax bottom sm:block hidden"
            src="assets/img/shape/shape-5.png" alt="shape-5">
        <div
            class="flex flex-wrap justify-between items-center mx-auto mx-auto 2xl:max-w-[1320px] xl:max-w-[1140px] lg:max-w-[960px] md:max-w-[720px] sm:max-w-[540px] py-[80px] px-4">
            <div class="w-full 2xl:h-[90vh] lg:h-[80vh] h-[70vh] max-[320px]:h-[50vh] flex items-center px-2 2xl:max-w-lg xl:max-w-lg lg:max-w-lg lg:w-1/2 lg:mx-0 md:max-w-lg md:w-1/2 md:mx-0 2xl:w-1/2 xl:w-1/2 sm:items-center"
                data-aos="fade-up" data-aos-duration="2000">
                <div class="text-center 2xl:text-left xl:text-left lg:text-left md:text-left h-72">
                    <span class="text-[#2ce97a] text-[18px] font-bold">Hello, My name is</span>
                    <h1
                        class="text-[#fff] 2xl:text-[60px] xl:text-[55px] lg:text-[50px] md:text-[45px] text-[40px] font-bold">
                        lsabelle Ryal</h1>
                    <h2 class="py-4 text-[#fff] text-[20px] font-bold">i'm A web Devloper</h2>
                    <p class="pt-2 text-gray-500 text-base">Lorem ipsum dolor sit amet consectetur adipisicing elit.
                        enim ratione eligendi expedita!</p>
                    <button type="button"
                        class="text-white mt-8 bg-[#2ce97a] hover:bg-opacity-80 no-underline font-medium rounded-full text-sm px-8 py-2.5 mr-2 dark:bg-blue-600 dark:hover:bg-blue-700">
                        Hire me</button>
                </div>
            </div>
            <div class="w-1/2 hidden px-2 2xl:block xl:block lg:block md:block z-10">
                <img src="assets/img/home/girl.png" alt="girl" class="max-h-full">
            </div>
        </div>
        <div class="relative">
            <img src="assets/img/shape/hero-shape.png" alt="hero-shape"
                class="absolute bottom-0 left-0 right-0 w-full z-10 bg-center bg-cover">
        </div>
    </section>

    <!-- service -->
    <section id="service" class="2xl:py-[80px] py-[70px] bg-white relative">
        <div data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300">
            <img src="assets/img/shape/shape-6.png" alt="shape" class="absolute w-12 h-12 top-28 right-40">
        </div>
        <div class="banner text-center mb-[30px] px-6" data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300">
            <span class="text-[14px] text-[#777]">BEST IT SERVICE</span>
            <h2
                class="text-center mt-[5px] 2xl:text-[35px] xl:text-[33px] lg:text-[30px] md:text-[26px] sm:text-[24px] text-[22px] font-bold">
                It Industries We’re<span class="text-[#2ce97a]">
                    Offering</span></h2>
        </div>
        <div
            class="flex flex-wrap justify-between items-center mx-auto mx-auto 2xl:max-w-[1320px] xl:max-w-[1140px] lg:max-w-[960px] md:max-w-[720px] sm:max-w-[540px] max-[320px]:px-[12px] px-6">
            <div class="grid lg:grid-cols-3 md:grid-cols-1 gap-[30px]">
                <div class="transition-all rounded flex justify-start items-start" data-aos="fade-up"
                    data-aos-duration="2000" data-aos-delay="300">
                    <div class="pr-6 border-r border-[#2ce97a] max-[480px]:hidden">
                        <h6
                            class="2xl:text-[50px] lg:text-[40px] text-[35px] font-bold text-[#2ce97a] 2xl:w-[60px] xl:w-[60px] lg:w-[50px] w-[40px] opacity-50">
                            01</h6>
                    </div>
                    <div class="pl-6 border-l">
                        <div class="flex">
                            <img src="assets/img/service/icon-1.png" alt="service-1">
                        </div>
                        <h4 class="text-[20px] pt-6 font-bold">Graphics design</h4>
                        <p class="pt-2 text-[#777] text-[15px] leading-[28px]">There are many variations of passages of
                            Lorem Ipsum
                            available, but the majority have suffered alteration in some form.</p>
                    </div>
                </div>
                <div class="transition-all rounded flex justify-start items-start" data-aos="fade-up"
                    data-aos-duration="2000" data-aos-delay="300">
                    <div class="pr-6 border-r border-[#2ce97a] max-[480px]:hidden">
                        <h6
                            class="2xl:text-[50px] lg:text-[40px] text-[35px] font-bold text-[#2ce97a] 2xl:w-[60px] xl:w-[60px] lg:w-[50px] w-[40px] opacity-50">
                            02</h6>
                    </div>
                    <div class="pl-6 border-l">
                        <div class="flex">
                            <img src="assets/img/service/icon-2.png" alt="service-2">
                        </div>
                        <h4 class="text-[20px] pt-6 font-bold">Devlopment</h4>
                        <p class="pt-2 text-[#777] text-[15px] leading-[28px]">There are many variations of passages of
                            Lorem Ipsum
                            available, but the majority have suffered alteration in some form.</p>
                    </div>
                </div>
                <div class="transition-all rounded flex justify-start items-start" data-aos="fade-up"
                    data-aos-duration="2000" data-aos-delay="300">
                    <div class="pr-6 border-r border-[#2ce97a] max-[480px]:hidden">
                        <h6
                            class="2xl:text-[50px] lg:text-[40px] text-[35px] font-bold text-[#2ce97a] 2xl:w-[60px] xl:w-[60px] lg:w-[50px] w-[40px] opacity-50">
                            03</h6>
                    </div>
                    <div class="pl-6 border-l">
                        <div class="flex">
                            <img src="assets/img/service/icon-3.png" alt="service-3">
                        </div>
                        <h4 class="text-[20px] pt-6 font-bold">SEO Friendly</h4>
                        <p class="pt-2 text-[#777] text-[15px] leading-[28px]">There are many variations of passages of
                            Lorem Ipsum
                            available, but the majority have suffered alteration in some form.</p>
                    </div>
                </div>
            </div>
        </div>
        <div class="2xl:border-b 2xl:pt-24 lg:border-b lg:pt-12 pt-0 flex flex-wrap justify-between items-center mx-auto 2xl:max-w-[1320px] xl:max-w-[1140px] lg:max-w-[960px] md:max-w-[720px] sm:max-w-[540px] px-6"
            data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300"></div>
    </section>

    <!-- about -->
    <section id="about" class="bg-white 2xl:pb-[80px] pb-[70px]">
        <div
            class="flex flex-wrap justify-between items-center mx-auto mx-auto 2xl:max-w-[1320px] xl:max-w-[1140px] lg:max-w-[960px] md:max-w-[720px] sm:max-w-[540px] max-[320px]:px-[12px]">
            <div class="grid lg:grid-cols-2 grid-cols-1 gap-[30px] px-6 max-[320px]:px-[0px]">
                <div class="transition-all relative" data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300">
                    <img src="assets/img/shape/shape-6.png" alt="shape-6" class="absolute w-12 top-2.5 left-2.5">
                    <img src="assets/img/about/img-1.jpg" alt="about-img-1" class="w-full rounded-lg">
                    <img src="assets/img/shape/shape-7.png" alt="shape-7" class="absolute w-12 bottom-5 right-2.5">
                </div>
                <div class="transition-all" data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300">
                    <div class="banner mb-[30px]">
                        <span class="text-[14px] text-[#777]">ABOUT US</span>
                        <h2
                            class="mt-[5px] 2xl:text-[35px] xl:text-[33px] lg:text-[30px] md:text-[26px] sm:text-[24px] text-[22px] font-bold">
                            Creativity bleeds from the pen of <span class="text-[#2ce97a]">inspiration</span></h2>
                    </div>
                    <p class="text-[16px] text-[#777] mb-[30px]">Lorem ipsum
                        dolor sit amet consectetur adipisicing
                        elit. Ducimus praesentium
                        totam error consequatur aperiam iusto neque fuga velit.</p>
                    <div class="border p-[24px] rounded-lg">
                        <div class="box-border flex justify-between max-[400px]:block">
                            <div class="left">
                                <div class="name">
                                    <span class="text-[16px] leading-[28px] font-bold">Full Name :</span><br>
                                    <span class="detail text-[14px] leading-[28px] text-[#777]">Richard Lord </span>
                                </div>
                                <div class="age pt-[20px]">
                                    <span class="text-[16px] leading-[28px] font-bold">Age :</span><br>
                                    <span class="detail text-[14px] leading-[28px] text-[#777]">30 Years</span>
                                </div>
                            </div>
                            <div class="right">
                                <div class="ph">
                                    <span class="text-[16px] leading-[28px] font-bold">Phone No :</span><br>
                                    <span class="detail text-[14px] leading-[28px] text-[#777]">+00 987654321</span>
                                </div>
                                <div class="email pt-[20px]">
                                    <span class="text-[16px] leading-[28px] font-bold">Email :</span><br>
                                    <span
                                        class="detail text-[14px] leading-[28px] text-[#777]">[email protected]</span>
                                </div>
                            </div>
                        </div>
                        <div class="bottom pt-[20px]">
                            <span class="text-[16px] leading-[28px] font-bold">Address :</span>
                            <span class="detail text-[14px] leading-[28px] text-[#777]">Ruami mellow moraes,- Salvador,
                                Brazil</span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Experience and Education -->
    <section id="experience" class="section-experience bg-[#020710] relative">
        <div class="relative pt-[60px]">
            <img src="assets/img/shape/bg-shape.png" alt="bg-shape"
                class="absolute top-0 left-0 right-0 w-full bg-center bg-cover">
        </div>
        <div class="2xl:pb-[80px] pb-[70px] 2xl:pt-[80px] md:pt-[70px] pt-[20px]">
            <div class="banner text-center mb-[30px]" data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300">
                <span class="text-[14px] text-[#777]">QUALIFICATION</span>
                <h2
                    class="text-center mt-[5px] 2xl:text-[35px] xl:text-[33px] lg:text-[30px] md:text-[26px] sm:text-[24px] text-[22px] font-bold">
                    My <span class="text-[#2ce97a]"> ACHIEVEMENTS</span></h2>
            </div>
            <div
                class="flex flex-wrap justify-between items-center mx-auto mx-auto 2xl:max-w-[1320px] xl:max-w-[1140px] lg:max-w-[960px] md:max-w-[720px] sm:max-w-[540px] max-[320px]:px-[12px] px-6 relative">
                <img src="assets/img/shape/shape-8.png" alt="shape-8" class="absolute w-12 -top-10 right-10">
                <div class="absolute -top-10 left-10 h-12 w-12 bg-[#f1c7a1] rounded-full"></div>
                <div class="grid lg:grid-cols-2 grid-cols-1 gap-[30px]">
                    <div class="transition-all justify-start items-start">
                        <h2 class="text-[20px] font-bold leading-[24px]">Education</h2>
                        <div class="border-l-2 border-gray-300 pl-6">
                            <div class="p-[30px] bg-white rounded-3xl mt-8 relative" data-aos="fade-up"
                                data-aos-duration="2000" data-aos-delay="400">
                                <div class="absolute top-0 bottom-0 -left-6 w-4">
                                    <span
                                        class="w-4 h-4 border-2 border-[#2ce97a] rounded-full block bg-[#020710] absolute top-28 -left-2.5"></span>
                                    <span
                                        class="w-5 border border-[#2ce97a] block bg-[#020710] absolute top-28 my-1.5 left-1.5"></span>
                                </div>
                                <span class="text-[#777] text-[12px] font-medium">June 15, 2013 - 2016</span>
                                <h4 class="text-[16px] leading-[22px] font-semibold mt-[15px] mb-[6px] text-[#2ce97a]">
                                    Master in Computer Engineering <span class="ml-[15px] text-[#999] text-[14px]">-
                                        First
                                        Class</span></h4>
                                <p class="text-[13px] text-[#777] mb-0 leading-[28px]">Lorem, ipsum dolor sit amet
                                    consectetur adipisicing elit. Mollitia
                                    sequi doloremque ullam placeat quos provident ex fuga. Ratione ab explicabo
                                    doloribus error odio veritatis tenetur.</p>
                            </div>
                            <div class="p-[30px] bg-white rounded-3xl mt-8 relative" data-aos="fade-up"
                                data-aos-duration="2000" data-aos-delay="600">
                                <div class="absolute top-0 bottom-0 -left-6 w-4">
                                    <span
                                        class="w-4 h-4 border-2 border-[#2ce97a] rounded-full block bg-[#020710] absolute top-28 -left-2.5"></span>
                                    <span
                                        class="w-5 border border-[#2ce97a] block bg-[#020710] absolute top-28 my-1.5 left-1.5"></span>
                                </div>
                                <span class="text-[#777] text-[12px] font-medium">June 12, 2010 - 2013</span>
                                <h4 class="text-[16px] leading-[22px] font-semibold mt-[15px] mb-[6px] text-[#2ce97a]">
                                    Bachelor
                                    in Computer Engineering <span class="ml-[15px] text-[#999] text-[14px]">- First
                                        Class</span></h4>
                                <p class="text-[13px] text-[#777] mb-0 leading-[28px]">Lorem, ipsum dolor sit amet
                                    consectetur adipisicing elit.
                                    Mollitia sequi doloremque ullam placeat quos provident ex fuga. Ratione ab explicabo
                                    doloribus error odio veritatis tenetur.</p>
                            </div>
                            <div class="p-[30px] bg-white rounded-3xl mt-8 relative" data-aos="fade-up"
                                data-aos-duration="2000" data-aos-delay="800">
                                <div class="absolute top-0 bottom-0 -left-6 w-4">
                                    <span
                                        class="w-4 h-4 border-2 border-[#2ce97a] rounded-full block bg-[#020710] absolute top-28 -left-2.5"></span>
                                    <span
                                        class="w-5 border border-[#2ce97a] block bg-[#020710] absolute top-28 my-1.5 left-1.5"></span>
                                </div>
                                <span class="text-[#777] text-[12px] font-medium">June 1, 2009 - 2010</span>
                                <h4 class="text-[16px] leading-[22px] font-semibold mt-[15px] mb-[6px] text-[#2ce97a]">
                                    Higher Secondary <span class="ml-[15px] text-[#999] text-[14px]">- (A+)</span></h4>
                                <p class="text-[13px] text-[#777] mb-0 leading-[28px]">Lorem, ipsum dolor sit amet
                                    consectetur adipisicing elit.
                                    Mollitia sequi doloremque ullam placeat quos provident ex fuga. Ratione ab explicabo
                                    doloribus error odio veritatis tenetur.</p>
                            </div>
                        </div>
                    </div>
                    <div class="transition-all 2xl:mt-0 lg:mt-0 xl:mt-0 mt-[15px] justify-start items-start"
                        data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300">
                        <h2 class="text-[20px] font-bold leading-[24px]">Experience</h2>
                        <div class="border-l-2 border-gray-300 pl-6">
                            <div class="p-[30px] bg-white rounded-3xl mt-8 relative" data-aos="fade-up"
                                data-aos-duration="2000" data-aos-delay="400">
                                <div class="absolute top-0 bottom-0 -left-6 w-4">
                                    <span
                                        class="w-4 h-4 border-2 border-[#2ce97a] rounded-full block bg-[#020710] absolute top-28 -left-2.5"></span>
                                    <span
                                        class="w-5 border border-[#2ce97a] block bg-[#020710] absolute top-28 my-1.5 left-1.5"></span>
                                </div>
                                <span class="text-[#777] text-[12px] font-medium">March 12, 2020</span>
                                <h4 class="text-[16px] leading-[22px] font-semibold mt-[15px] mb-[6px] text-[#2ce97a]">
                                    Envato
                                    <span class="ml-[15px] text-[#999] text-[14px]">- Team Leader</span>
                                </h4>
                                <p class="text-[13px] text-[#777] mb-0 leading-[28px]">Lorem, ipsum dolor sit amet
                                    consectetur adipisicing elit.
                                    Mollitia
                                    sequi doloremque ullam placeat quos provident ex fuga. Ratione ab explicabo
                                    doloribus
                                    error
                                    odio veritatis tenetur.</p>
                            </div>
                            <div class="p-[30px] bg-white rounded-3xl mt-8 relative" data-aos="fade-up"
                                data-aos-duration="2000" data-aos-delay="600">
                                <div class="absolute top-0 bottom-0 -left-6 w-4">
                                    <span
                                        class="w-4 h-4 border-2 border-[#2ce97a] rounded-full block bg-[#020710] absolute top-28 -left-2.5"></span>
                                    <span
                                        class="w-5 border border-[#2ce97a] block bg-[#020710] absolute top-28 my-1.5 left-1.5"></span>
                                </div>
                                <span class="text-[#777] text-[12px] font-medium">January 23, 2018 - 2020</span>
                                <h4 class="text-[16px] leading-[22px] font-semibold mt-[15px] mb-[6px] text-[#2ce97a]">
                                    Facebook Company <span class="ml-[15px] text-[#999] text-[14px]">- Sr.
                                        Developer</span></h4>
                                <p class="text-[13px] text-[#777] mb-0 leading-[28px]">Lorem, ipsum dolor sit amet
                                    consectetur adipisicing elit.
                                    Mollitia sequi doloremque ullam placeat quos provident ex fuga. Ratione ab explicabo
                                    doloribus error odio veritatis tenetur.</p>
                            </div>
                            <div class="p-[30px] bg-white rounded-3xl mt-8 relative" data-aos="fade-up"
                                data-aos-duration="2000" data-aos-delay="800">
                                <div class="absolute top-0 bottom-0 -left-6 w-4">
                                    <span
                                        class="w-4 h-4 border-2 border-[#2ce97a] rounded-full block bg-[#020710] absolute top-28 -left-2.5"></span>
                                    <span
                                        class="w-5 border border-[#2ce97a] block bg-[#020710] absolute top-28 my-1.5 left-1.5"></span>
                                </div>
                                <span class="text-gray-500 text-sm">July 23, 2016 - 2018 </span>
                                <h4 class="text-[16px] leading-[22px] font-semibold mt-[15px] mb-[6px] text-[#2ce97a]">
                                    Twitter Company <span class="ml-[15px] text-[#999] text-[14px]">- Jr.
                                        Developer</span></h4>
                                <p class="text-[13px] text-[#777] mb-0 leading-[28px]">Lorem, ipsum dolor sit amet
                                    consectetur adipisicing elit.
                                    Mollitia sequi doloremque ullam placeat quos provident ex fuga. Ratione ab explicabo
                                    doloribus error odio veritatis tenetur.</p>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Portfolio -->
    <section id="portfolio" class="section-Portfolio 2xl:py-[80px] py-[70px]">
        <div class="banner text-center mb-[30px]" data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300">
            <span class="text-[14px] text-[#777]">PORTFOLIO</span>
            <h2
                class="text-center mt-[5px] 2xl:text-[35px] xl:text-[33px] lg:text-[30px] md:text-[26px] sm:text-[24px] text-[22px] font-bold">
                My <span class="text-[#2ce97a]"> PORTFOLIO</span></h2>
        </div>
        <div
            class="flex flex-wrap justify-between items-center mx-auto mx-auto 2xl:max-w-[1320px] xl:max-w-[1140px] lg:max-w-[960px] md:max-w-[720px] sm:max-w-[540px] max-[320px]:px-[12px] px-6">
            <div class="m-b-minus-24px w-full">
                <div class="portfolio-content" id="MixItUpDA2FB7" data-aos="fade-up" data-aos-duration="2000"
                    data-aos-delay="600">
                    <div class="portfolio-tabs mb-[30px]">
                        <ul class="2xl:flex xl:flex md:flex sm:block place-content-center text-center">
                            <li class="text-[14px] text-[#17181c] 2xl:mx-[10px] sm:mx-[0px] px-[10px] leading-[11px] font-semibold hover:text-[#2ce97a] cursor-pointer inline-block active"
                                data-filter="all">
                                ALL</li>
                            <li class="text-[14px] text-[#17181c] 2xl:mx-[10px] sm:mx-[0px] px-[10px] leading-[11px] font-semibold hover:text-[#2ce97a] cursor-pointer inline-block"
                                data-filter=".design">DESIGN</li>
                            <li class="text-[14px] text-[#17181c] 2xl:mx-[10px] sm:mx-[0px] px-[10px] leading-[11px] font-semibold hover:text-[#2ce97a] cursor-pointer inline-block"
                                data-filter=".development">DEVELOPMENT</li>
                            <li class="text-[14px] text-[#17181c] 2xl:mx-[10px] sm:mx-[0px] px-[10px] leading-[11px] font-semibold hover:text-[#2ce97a] cursor-pointer inline-block"
                                data-filter=".graphics">GRAPHICS</li>
                            <li class="text-[14px] text-[#17181c] 2xl:mx-[10px] sm:mx-[0px] px-[10px] leading-[11px] font-semibold hover:text-[#2ce97a] cursor-pointer inline-block"
                                data-filter=".templates">Templates</li>
                        </ul>
                    </div>
                    <div class="portfolio-content-items">
                        <div class="grid lg:grid-cols-3 sm:grid-cols-2 grid-cols-1 gap-[30px]">
                            <div class="mix graphics templates">
                                <div class="portfolio-img truncate rounded-2xl relative">
                                    <img src="assets/img/portfolio/img-1.jpg" alt="graphics"
                                        class="w-full transform hover:bg-blue-600 transition duration-500 hover:-rotate-12 hover:scale-125">
                                    <h3 class="top-contain absolute top-[15px] right-[15px]">
                                        <span
                                            class="bg-black rounded-full text-white font-normal text-[12px] px-2 py-1">3D
                                            Graphics</span>
                                        <span
                                            class="bg-black rounded-full text-white font-normal text-[12px] px-2 py-1">Templates</span>
                                    </h3>
                                    <div class="bottom-contain absolute bottom-4 left-4 right-4">
                                        <div
                                            class="overlay-info px-4 py-2 bg-black bg-opacity-60 rounded-xl grid grid-cols-2 gap-[30px] place-content-between">
                                            <a href="#" class="text-white text-sm flex items-center">Nitro - Car
                                                Service</a>
                                            <a href="assets/img/portfolio/img-1.jpg" data-fancybox="gallery"
                                                class="text-white text-sm grid justify-items-end">
                                                <p class="hidden">.</p>
                                                <span
                                                    class="bg-[#2ce97a] h-8 w-8 flex justify-center items-center rounded-md">
                                                    <i class="fa-solid fa-arrow-right"></i>
                                                </span>
                                            </a>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="mix design">
                                <div class="portfolio-img truncate rounded-2xl relative">
                                    <img src="assets/img/portfolio/img-2.jpg" alt="design"
                                        class="w-full transform hover:bg-blue-600 transition duration-500 hover:-rotate-12 hover:scale-125">
                                    <h3 class="top-contain absolute top-[15px] right-[15px]">
                                        <span
                                            class="bg-black rounded-full font-normal text-white text-[12px] px-2 py-1">Web
                                            Design</span>
                                    </h3>
                                    <div class="bottom-contain absolute bottom-4 left-4 right-4">
                                        <div
                                            class="overlay-info px-4 py-2 bg-black bg-opacity-60 rounded-xl grid grid-cols-2 gap-[30px] place-content-between">
                                            <a href="#" class="text-white text-sm flex items-center">Boros -
                                                Artificial Intelligence</a>
                                            <a href="assets/img/portfolio/img-2.jpg" data-fancybox="gallery"
                                                class="text-white text-sm grid justify-items-end">
                                                <p class="hidden">.</p>
                                                <span
                                                    class="bg-[#2ce97a] h-8 w-8 flex justify-center items-center rounded-md">
                                                    <i class="fa-solid fa-arrow-right"></i>
                                                </span>
                                            </a>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="mix design">
                                <div class="portfolio-img truncate rounded-2xl relative">
                                    <img src="assets/img/portfolio/img-3.jpg" alt="design"
                                        class="w-full transform hover:bg-blue-600 transition duration-500 hover:-rotate-12 hover:scale-125">
                                    <h3 class="top-contain absolute top-[15px] right-[15px]">
                                        <span
                                            class="bg-black rounded-full font-normal text-white text-[12px] px-2 py-1">Web
                                            Design</span>
                                    </h3>
                                    <div class="bottom-contain absolute bottom-4 left-4 right-4">
                                        <div
                                            class="overlay-info px-4 py-2 bg-black bg-opacity-60 rounded-xl grid grid-cols-2 gap-[30px] place-content-between">
                                            <a href="#" class="text-white text-sm flex items-center">Mila - Virtual
                                                Reality</a>
                                            <a href="assets/img/portfolio/img-3.jpg" data-fancybox="gallery"
                                                class="text-white text-sm grid justify-items-end">
                                                <p class="hidden">.</p>
                                                <span
                                                    class="bg-[#2ce97a] h-8 w-8 flex justify-center items-center rounded-md">
                                                    <i class="fa-solid fa-arrow-right"></i>
                                                </span>
                                            </a>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="mix development">
                                <div class="portfolio-img truncate rounded-2xl relative">
                                    <img src="assets/img/portfolio/img-4.jpg" alt="development"
                                        class="w-full transform hover:bg-blue-600 transition duration-500 hover:-rotate-12 hover:scale-125">
                                    <h3 class="top-contain absolute top-[15px] right-[15px]">
                                        <span
                                            class="bg-black rounded-full font-normal text-white text-[12px] px-2 py-1">Development</span>
                                    </h3>
                                    <div class="bottom-contain absolute bottom-4 left-4 right-4">
                                        <div
                                            class="overlay-info px-4 py-2 bg-black bg-opacity-60 rounded-xl grid grid-cols-2 gap-[30px] place-content-between">
                                            <a href="#" class="text-white text-sm flex items-center">Sen - Hotel
                                                Website</a>
                                            <a href="assets/img/portfolio/img-4.jpg" data-fancybox="gallery"
                                                class="text-white text-sm grid justify-items-end">
                                                <p class="hidden">.</p>
                                                <span
                                                    class="bg-[#2ce97a] h-8 w-8 flex justify-center items-center rounded-md">
                                                    <i class="fa-solid fa-arrow-right"></i>
                                                </span>
                                            </a>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="mix templates design">
                                <div class="portfolio-img truncate rounded-2xl relative">
                                    <img src="assets/img/portfolio/img-1.jpg" alt="templates"
                                        class="w-full transform hover:bg-blue-600 transition duration-500 hover:-rotate-12 hover:scale-125">
                                    <h3 class="top-contain absolute top-[15px] right-[15px]">
                                        <span
                                            class="bg-black rounded-full font-normal text-white text-[12px] px-2 py-1">Templates</span>
                                        <span
                                            class="bg-black rounded-full font-normal text-white text-[12px] px-2 py-1">Web
                                            Design</span>
                                    </h3>
                                    <div class="bottom-contain absolute bottom-4 left-4 right-4">
                                        <div
                                            class="overlay-info px-4 py-2 bg-black bg-opacity-60 rounded-xl grid grid-cols-2 gap-[30px] place-content-between">
                                            <a href="#" class="text-white text-sm flex items-center">Ekka -
                                                eCommerce template</a>
                                            <a href="assets/img/portfolio/img-1.jpg" data-fancybox="gallery"
                                                class="text-white text-sm grid justify-items-end">
                                                <p class="hidden">.</p>
                                                <span
                                                    class="bg-[#2ce97a] h-8 w-8 flex justify-center items-center rounded-md">
                                                    <i class="fa-solid fa-arrow-right"></i>
                                                </span>
                                            </a>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <div class="mix development graphics">
                                <div class="portfolio-img truncate rounded-2xl relative">
                                    <img src="assets/img/portfolio/img-2.jpg" alt="development"
                                        class="w-full transform hover:bg-blue-600 transition duration-500 hover:-rotate-12 hover:scale-125">
                                    <h3 class="top-contain absolute top-[15px] right-[15px]">
                                        <span
                                            class="bg-black rounded-full font-normal text-white text-[12px] px-2 py-1">Development</span>
                                        <span
                                            class="bg-black rounded-full font-normal text-white text-[12px] px-2 py-1">3D
                                            Graphics</span>
                                    </h3>
                                    <div class="bottom-contain absolute bottom-4 left-4 right-4">
                                        <div
                                            class="overlay-info px-4 py-2 bg-black bg-opacity-60 rounded-xl grid grid-cols-2 gap-[30px] place-content-between">
                                            <a href="#" class="text-white text-sm flex items-center">Bukki - Teck
                                                crafts</a>
                                            <a href="assets/img/portfolio/img-2.jpg" data-fancybox="gallery"
                                                class="text-white text-sm grid justify-items-end">
                                                <p class="hidden">.</p>
                                                <span
                                                    class="bg-[#2ce97a] h-8 w-8 flex justify-center items-center rounded-md">
                                                    <i class="fa-solid fa-arrow-right"></i>
                                                </span>
                                            </a>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- News -->
    <section id="news" class="section-news bg-[#020710]">
        <div class="relative pt-[60px]">
            <img src="assets/img/shape/bg-shape.png" alt="bg-shape"
                class="absolute top-0 left-0 right-0 w-full bg-center bg-cover">
        </div>
        <div class="2xl:pb-[80px] pb-[70px] 2xl:pt-[80px] lg:pt-[80px] pt-[20px]">
            <div class="banner text-center mb-[30px]" data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300">
                <span class="text-[14px] text-[#777]">BLOGS</span>
                <h2
                    class="text-center mt-[5px] 2xl:text-[35px] xl:text-[33px] lg:text-[30px] md:text-[26px] sm:text-[24px] text-[22px] font-bold">
                    Latest <span class="text-[#2ce97a]"> NEWS</span></h2>
            </div>
            <div class="flex flex-wrap justify-between items-center mx-auto mx-auto 2xl:max-w-[1320px] xl:max-w-[1140px] lg:max-w-[960px] md:max-w-[720px] sm:max-w-[540px] max-[320px]:px-[12px] relative px-6"
                data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300">
                <div class="relative"></div>
                <div
                    class="2xl:absolute 2xl:max-[1140px] xl:absolute xl:max-w-[720px] lg:absolute lg:max-w-[620px] max-w-[100%] relative">
                    <div class="transition-all justify-start items-start">
                        <div class="news-slider">
                            <div class="carousel-wrap">
                                <div class="owl-carousel news-carousel owl-loaded owl-drag">
                                    <div class="owl-stage-outer">
                                        <div class="owl-stage">
                                            <div class="owl-item">
                                                <div class="card bg-white border rounded-2xl p-6">
                                                    <img src="assets/img/news/img-2.jpg" alt="news-3">
                                                    <div class="news-card-details mt-[16px]">
                                                        <p class="text-[13px] leading-[30px] mb-[5px] text-[#2ce97a]">By
                                                            Admin <span class="text-gray-400">- 04 Comments</span></p>
                                                        <h5
                                                            class="pb-[15px] text-[17px] font-bold border-b border-[#dbdada]">
                                                            Lorem ipsum dolor sit amet.</h5>
                                                        <div class="pt-[15px] text-sm text-[#2ce97a]">Read More <a
                                                                class="hover:text-[#2ce97a]">
                                                                <i class="fa-solid fa-arrow-right"></i></a>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                            <div class="owl-item">
                                                <div class="card bg-white border rounded-2xl p-6">
                                                    <img src="assets/img/news/img-3.jpg" alt="news-3">
                                                    <div class="news-card-details mt-[16px]">
                                                        <p class="text-[13px] leading-[30px] mb-[5px] text-[#2ce97a]">By
                                                            Admin <span class="text-gray-400">- 04 Comments</span></p>
                                                        <h5
                                                            class="pb-[15px] text-[17px] font-bold border-b border-[#dbdada]">
                                                            Lorem ipsum dolor sit amet.</h5>
                                                        <div class="pt-[15px] text-sm text-[#2ce97a]">Read More <a
                                                                class="hover:text-[#2ce97a]">
                                                                <i class="fa-solid fa-arrow-right"></i>
                                                            </a>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="transition-all flex-row 2xl:block xl:block lg:block hidden">
                    <img src="assets/img/news/img-1.jpg" alt="news" class="w-auto rounded-[15px]">
                </div>
            </div>
        </div>
    </section>

    <!-- contact -->
    <section id="contact" class="section-contact 2xl:py-[80px] py-[70px]">
        <div class="banner text-center mb-[30px]" data-aos="fade-up" data-aos-duration="2000" data-aos-delay="300">
            <span class="text-[14px] text-[#777]">FORM</span>
            <h2
                class="text-center mt-[5px] 2xl:text-[35px] xl:text-[33px] lg:text-[30px] md:text-[26px] sm:text-[24px] text-[22px] font-bold">
                Get In <span class="text-[#2ce97a]">TOUCH</span></h2>
        </div>
        <form>
            <div
                class="flex flex-wrap justify-between items-center mx-auto mx-auto 2xl:max-w-[1320px] xl:max-w-[1140px] lg:max-w-[960px] md:max-w-[720px] sm:max-w-[540px] max-[320px]:px-[12px] px-6">
                <div class="m-b-minus-24px w-full">
                    <div class="grid lg:grid-cols-2 grid-cols-1 gap-[30px]" data-aos="fade-up" data-aos-duration="2000"
                        data-aos-delay="300">
                        <div class="border rounded-lg">
                            <div class="border-b">
                                <input type="text"
                                    class="appearance-none w-full py-6 px-3 text-gray-700 leading-tight focus:outline-none rounded-t-lg"
                                    id="fname" placeholder="Full Name">
                            </div>
                            <div class="border-b">
                                <input type="email"
                                    class="appearance-none w-full py-6 px-3 text-gray-700 leading-tight focus:outline-none"
                                    id="umail" placeholder="Email">
                            </div>
                            <div class="border-b">
                                <input type="text"
                                    class="appearance-none w-full py-6 px-3 text-gray-700 leading-tight focus:outline-none"
                                    id="phone" placeholder="Phone">
                            </div>
                            <div>
                                <input type="text"
                                    class="appearance-none w-full py-6 px-3 text-gray-700 leading-tight focus:outline-none rounded-b-lg"
                                    id="subject" placeholder="Subject">
                            </div>
                        </div>
                        <div class="mb-0">
                            <div class="mb-4">
                                <textarea class="w-full border rounded-xl pl-4 pt-2 focus:outline-none"
                                    id="exampleFormControlTextarea1" rows="8" placeholder="Message"></textarea>
                            </div>
                            <button type="button"
                                class="text-white bg-[#2ce97a] hover:bg-opacity-80 no-underline font-medium rounded-full text-sm px-8 py-2.5 mr-2">
                                Submit</button>
                        </div>
                    </div>
                </div>
            </div>
        </form>
    </section>

    <!-- footer -->
    <footer class="bg-[#070415]">
        <div
            class="flex justify-center mx-auto mx-auto 2xl:max-w-[1320px] xl:max-w-[1140px] lg:max-w-[960px] 2xl:flex-row xl:flex-row lg:flex-row flex-col md:max-w-[720px] max-[320px]:px-[12px] sm:max-w-[540px] gap-[30px] px-6 py-8">
            <div class="lg:w-1/2 text-white text-[12px] font-normal 2xl:text-left xl:text-left text-center">
                Copyright Β©
                <a href="index.html" class="hover:text-white font-semibold">ACZone</a>
                all rights reserved. Powered by Borox.
            </div>
            <div
                class="lg:w-1/2 text-white font-normal text-[12px] flex 2xl:justify-end xl:justify-end lg:justify-end justify-between">
                <a href="javascript:void(0)" class="pr-10 hover:text-white">Privacy Policy</a>
                <a href="javascript:void(0)" class="hover:text-white">Terms and Conditions</a>
            </div>
        </div>
    </footer>

    <!-- scroll Top -->
    <div id="scrollup"
        class="fixed bg-[#2ce97a] text-white rounded-full flex justify-center text-center items-center p-2 right-6 cursor-pointer bottom-6 h-10 w-10 z-20">
        <i class="fa fa-arrow-up" aria-hidden="true"></i>
    </div>

    <!-- Plugins JS -->
    <script src="assets/js/tailwindcss/frostui.js"></script>
    <script src="assets/js/jquery-3.5.1.min.js"></script>
    <script src="assets/js/jquery.fancybox.min.js"></script>
    <script src="assets/js/mixitup.min.js"></script>
    <script src="assets/js/aos.min.js"></script>
    <script src="assets/js/owl.carousel.min.js"></script>
    <script src="assets/js/jquery.parallaxmouse.min.js"></script>

    <!-- Main Js -->
    <script src="assets/js/index.js"></script>
</body>


</html>

This HTML structure includes a container for our portfolio items and a script tag to link our JavaScript file.

Styling with CSS

Now, let’s add some styles to our CSS file. We will use CSS to create a 3D effect for our portfolio items.

/*-----------------------------------------------------------------------------------

-----------------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------------
    Included CSS INDEX
-----------------------------------------------------------------------------------

01. Typography

02. Utilities
    - variables

03. Layouts
    - common
    - header

04. Pages
    - home-page

-----------------------------------------------------------------------------------*/
/*base*/
/* Typography */
/* Quicksand font*/
@font-face {
  font-family: "Syne";
  src: url("../font/Syne-Bold.otf");
  font-weight: 500;
  font-style: normal;
}
@font-face {
  font-family: "Syne";
  src: url("../font/Syne-Extra.otf");
  font-weight: 600;
  font-style: normal;
}

/* utilities */
/* variables */
/* layout */
/* common */
body {
  width: 100%;
  height: 100%;
  position: relative;
  font-family: "Syne";
  font-weight: 400;
}

h1 {
  font-family: "Syne";
  font-weight: 700;
  letter-spacing: 0.01rem;
  line-height: 1.2;
}

h2,
h3,
h4,
h5,
h6 {
  font-family: "Syne";
  font-weight: 400;
  letter-spacing: 0.01rem;
  line-height: 1.2;
}

@-webkit-keyframes shadowRolling {
  0% {
    -webkit-box-shadow: 0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0),
      0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0);
    box-shadow: 0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0),
      0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0);
  }
  12% {
    -webkit-box-shadow: 100px 0 #2ce97a, 0px 0 rgba(121, 99, 224, 0),
      0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0);
    box-shadow: 100px 0 #2ce97a, 0px 0 rgba(121, 99, 224, 0),
      0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0);
  }
  25% {
    -webkit-box-shadow: 110px 0 #2ce97a, 100px 0 #2ce97a,
      0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0);
    box-shadow: 110px 0 #2ce97a, 100px 0 #2ce97a, 0px 0 rgba(121, 99, 224, 0),
      0px 0 rgba(121, 99, 224, 0);
  }
  36% {
    -webkit-box-shadow: 120px 0 #2ce97a, 110px 0 #2ce97a, 100px 0 #2ce97a,
      0px 0 rgba(121, 99, 224, 0);
    box-shadow: 120px 0 #2ce97a, 110px 0 #2ce97a, 100px 0 #2ce97a,
      0px 0 rgba(121, 99, 224, 0);
  }
  50% {
    -webkit-box-shadow: 130px 0 #2ce97a, 120px 0 #2ce97a, 110px 0 #2ce97a,
      100px 0 #2ce97a;
    box-shadow: 130px 0 #2ce97a, 120px 0 #2ce97a, 110px 0 #2ce97a,
      100px 0 #2ce97a;
  }
  62% {
    -webkit-box-shadow: 200px 0 rgba(121, 99, 224, 0), 130px 0 #2ce97a,
      120px 0 #2ce97a, 110px 0 #2ce97a;
    box-shadow: 200px 0 rgba(121, 99, 224, 0), 130px 0 #2ce97a, 120px 0 #2ce97a,
      110px 0 #2ce97a;
  }
  75% {
    -webkit-box-shadow: 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0), 130px 0 #2ce97a, 120px 0 #2ce97a;
    box-shadow: 200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0),
      130px 0 #2ce97a, 120px 0 #2ce97a;
  }
  87% {
    -webkit-box-shadow: 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0),
      130px 0 #2ce97a;
    box-shadow: 200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0), 130px 0 #2ce97a;
  }
  100% {
    -webkit-box-shadow: 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0);
    box-shadow: 200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0);
  }
}

@keyframes shadowRolling {
  0% {
    -webkit-box-shadow: 0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0),
      0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0);
    box-shadow: 0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0),
      0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0);
  }
  12% {
    -webkit-box-shadow: 100px 0 #2ce97a, 0px 0 rgba(121, 99, 224, 0),
      0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0);
    box-shadow: 100px 0 #2ce97a, 0px 0 rgba(121, 99, 224, 0),
      0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0);
  }
  25% {
    -webkit-box-shadow: 110px 0 #2ce97a, 100px 0 #2ce97a,
      0px 0 rgba(121, 99, 224, 0), 0px 0 rgba(121, 99, 224, 0);
    box-shadow: 110px 0 #2ce97a, 100px 0 #2ce97a, 0px 0 rgba(121, 99, 224, 0),
      0px 0 rgba(121, 99, 224, 0);
  }
  36% {
    -webkit-box-shadow: 120px 0 #2ce97a, 110px 0 #2ce97a, 100px 0 #2ce97a,
      0px 0 rgba(121, 99, 224, 0);
    box-shadow: 120px 0 #2ce97a, 110px 0 #2ce97a, 100px 0 #2ce97a,
      0px 0 rgba(121, 99, 224, 0);
  }
  50% {
    -webkit-box-shadow: 130px 0 #2ce97a, 120px 0 #2ce97a, 110px 0 #2ce97a,
      100px 0 #2ce97a;
    box-shadow: 130px 0 #2ce97a, 120px 0 #2ce97a, 110px 0 #2ce97a,
      100px 0 #2ce97a;
  }
  62% {
    -webkit-box-shadow: 200px 0 rgba(121, 99, 224, 0), 130px 0 #2ce97a,
      120px 0 #2ce97a, 110px 0 #2ce97a;
    box-shadow: 200px 0 rgba(121, 99, 224, 0), 130px 0 #2ce97a, 120px 0 #2ce97a,
      110px 0 #2ce97a;
  }
  75% {
    -webkit-box-shadow: 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0), 130px 0 #2ce97a, 120px 0 #2ce97a;
    box-shadow: 200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0),
      130px 0 #2ce97a, 120px 0 #2ce97a;
  }
  87% {
    -webkit-box-shadow: 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0),
      130px 0 #2ce97a;
    box-shadow: 200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0), 130px 0 #2ce97a;
  }
  100% {
    -webkit-box-shadow: 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0);
    box-shadow: 200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0),
      200px 0 rgba(121, 99, 224, 0), 200px 0 rgba(121, 99, 224, 0);
  }
}
#bx-overlay {
  display: block;
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  right: 0;
  left: 0;
  bottom: 0;
  background: #fff;
  z-index: 99;
  display: -webkit-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-align: center;
  -ms-flex-align: center;
  align-items: center;
  -webkit-box-pack: center;
  -ms-flex-pack: center;
  justify-content: center;
}
#bx-overlay .loader {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  display: inline-block;
  position: relative;
  color: #2ce97a;
  left: -100px;
  -webkit-animation: shadowRolling 2s linear infinite;
  animation: shadowRolling 2s linear infinite;
}

/* Header */
#top-menu li.active a {
  color: #2ce97a;
}

.bx-static {
  -webkit-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
  position: absolute;
  z-index: 30;
  padding: 10px 0;
}

.bx-fixed {
  -webkit-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
  position: fixed;
  background-color: #020710 !important;
  -webkit-box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.12);
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.12);
  z-index: 30;
}

.bx-dark {
  background-color: #1d1a29 !important;
}

@media (min-width: 1024px) {
  #mobile-menu {
    display: block !important;
  }
}
@media (max-width: 1024px) {
  #mobile-menu {
    display: none;
  }
}
/* Pages */
/* home-page */
#scrollup.show {
  visibility: visible;
}

#scrollup {
  visibility: hidden;
}

/* portfolio */
.portfolio-tabs ul .active {
  color: #2ce97a !important;
}

.portfolio-img .bottom-contain {
  display: none;
}
.portfolio-img:hover .bottom-contain {
  display: block;
}
.portfolio-img:hover .top-contain {
  display: none;
}

In this CSS code, we define the basic styles for the body and container, and then we create a 3D rotating effect for the portfolio item using the perspective, transform, and transition properties.

Adding Interactivity with JavaScript

To make our portfolio interactive, we will use JavaScript. Let’s add some functionality to our script.js file.

/*----------------------------- Site Loader & Popup --------------------*/
$(window).on("load", function () {
    $("#bx-overlay").fadeOut("slow");
});

$(document).ready(function () {

    /*----------------------------- Scroll Up Button --------------------- */
    var btn = $('#scrollup');

    $(window).scroll(function () {
        if ($(window).scrollTop() > 300) {
            btn.addClass('show');
        } else {
            btn.removeClass('show');
        }
    });

    btn.on('click', function (e) {
        e.preventDefault();
        $('html, body').animate({ scrollTop: 0 }, '300');
    });

    /*--------------------- Aos animation on scroll --------------------*/
    AOS.init({
        once: true
    });

    $("#dropdown-toggle").click(function () {
        $("#mobile-menu").slideToggle("fast");
    });

    /*--------------------- Scroll to fixed navigation bar -------------------------------- */
    $(function () {
        var header = $(".bx-static");
        $(window).scroll(function () {
            var scroll = $(window).scrollTop();

            if (scroll >= 10) {
                header.removeClass('bx-static').addClass("bx-fixed");
            } else {
                header.removeClass("bx-fixed").addClass('bx-static');
            }
        });
    });

    /*--------------------- On click menu scroll section to section -------------------------------- */
    var lastId,
        topMenu = $("#top-menu"),
        topMenuHeight = topMenu.outerHeight() + 15,
        menuItems = topMenu.find("a"),
        scrollItems = menuItems.map(function () {
            var item = $($(this).attr("href"));
            if (item.length) { return item; }
        });

    menuItems.click(function (e) {
        var href = $(this).attr("href"),
            offsetTop = href === "#" ? 0 : $(href).offset().top - topMenuHeight + 1;
        $('html, body').stop().animate({
            scrollTop: offsetTop
        }, 600);
        e.preventDefault();
    });

    $(window).scroll(function () {
        var fromTop = $(this).scrollTop() + topMenuHeight;

        var cur = scrollItems.map(function () {
            if ($(this).offset().top < fromTop)
                return this;
        });
        cur = cur[cur.length - 1];
        var id = cur && cur.length ? cur[0].id : "";

        if (lastId !== id) {
            lastId = id;
            menuItems
                .parent().removeClass("active")
                .end().filter("[href='#" + id + "']").parent().addClass("active");
        }
    });

    /*-------------------- Potfolio --------------------*/
    $('.portfolio-tabs ul li').click(function () {
        $('ul li').removeClass("active");
        $(this).addClass("active");
    });

    /*-------------------- Potfolio for Mixit up --------------------*/
    var portfolioContent = $('.portfolio-content');
    portfolioContent.mixItUp();

    /*--------------------- News carousel -------------------------------- */
    $('.news-carousel').owlCarousel({
        margin: 24,
        loop: true,
        dots: false,
        nav: false,
        smartSpeed: 1000,
        autoplay: true,
        items: 2,
        responsive: {
            0: {
                items: 1,
                nav: false
            },
            400: {
                items: 1,
                nav: false
            },
            576: {
                items: 2,
                nav: false
            },
            768: {
                items: 2,
                nav: false
            },
        }
    });

    /*--------------------- parallaxmouse JS -------------------------------- */
    $(window).parallaxmouse({
        invert: true,
        range: 400,
        elms: [
            { el: $('.shape1'), rate: 0.2 },
            { el: $('.shape2'), rate: 0.2 },
            { el: $('.shape3'), rate: 0.2 },
            { el: $('.shape4'), rate: 0.3 },
            { el: $('.shape5'), rate: 0.2 },
        ]
    });

});

This simple JavaScript code adds an event listener to the button, displaying an alert message when the button is clicked. You can expand this functionality to load different projects dynamically.

Creating 3D Effects with CSS

To enhance the 3D effect, we can add more styles and animations. Here’s how you can create a flipping effect for your portfolio items:

.portfolio-item {
    position: relative;
    width: 300px;
    height: 400px;
    transform-style: preserve-3d;
    transition: transform 1s;
}

.portfolio-item:hover {
    transform: rotateY(180deg);
}

.portfolio-item .front,
.portfolio-item .back {
    position: absolute;
    width: 100%;
    height: 100%;
    backface-visibility: hidden;
}

.portfolio-item .front {
    background-color: #fff;
}

.portfolio-item .back {
    background-color: #f0f0f0;
    transform: rotateY(180deg);
    display: flex;
    justify-content: center;
    align-items: center;
}

.portfolio-item .back img {
    width: 80%;
    height: auto;
}

In this CSS update, we add .front and .back classes to create a flipping card effect. The .front class will display the initial content, while the .back class will display an image or additional details when the item is hovered over.

Enhancing User Experience

A great user experience is key to retaining visitors on your portfolio website. Here are a few tips to enhance your website’s user experience:

Responsive Design

Ensure your portfolio website is responsive. Use media queries in your CSS to adjust the layout for different screen sizes.

@media (max-width: 600px) {
    .portfolio-item {
        width: 100%;
        height: auto;
    }
}

Smooth Animations

Use CSS animations to create smooth transitions and effects.

@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

.portfolio-item {
    animation: fadeIn 2s;
}

Optimized Images

Optimize your images to reduce load times. Use modern formats like WebP and ensure your images are properly sized.

Advanced JavaScript Features

For a more dynamic portfolio, consider using JavaScript frameworks like Three.js to create advanced 3D graphics.

Integrating Three.js

Three.js is a powerful JavaScript library for creating 3D content in the browser. Here’s a basic example of how to integrate Three.js into your portfolio.

  1. Install Three.js:

Include the Three.js library in your project.

<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script>
  1. Create a 3D Scene:

Add the following code to your script.js file to create a basic 3D scene.

// Create scene
const scene = new THREE.Scene();

// Create camera
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
camera.position.z = 5;

// Create renderer
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

// Add cube
const geometry = new THREE.BoxGeometry();
const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);

// Render loop
function animate() {
    requestAnimationFrame(animate);
    cube.rotation.x += 0.01;
    cube.rotation.y += 0.01;
    renderer.render(scene, camera);
}

animate();

This code initializes a Three.js scene, adds a rotating cube, and renders it. You can customize this scene by adding more complex geometries and textures.

SEO Optimization Tips

To ensure your 3D portfolio website ranks well on Google, follow these SEO optimization tips:

Keyword-Rich Content

Include keywords related to 3D portfolios, web development, and your skills throughout your content. Use headings and subheadings to organize your content logically.

Meta Tags

Optimize your meta tags for search engines.

<head>
    <meta name="description" content="A stunning 3D portfolio website created with HTML, CSS, and JavaScript. Explore my work in a new dimension.">
    <meta name="keywords" content="3D portfolio, HTML, CSS, JavaScript, web development, Three.js">
</head>

Alt Text for Images

Use descriptive alt text for all images to improve accessibility and SEO.

<img src="project-image.jpg" alt="Screenshot of 3D portfolio project">

Include internal links to other relevant pages on your website and external links to high-quality resources.

Fast Loading Times

Ensure your website loads quickly by minimizing code, optimizing images, and using a content delivery network (CDN).

Conclusion

Creating a 3D portfolio website using HTML, CSS, and JavaScript can significantly enhance your online presence and showcase your technical skills. By following this guide, you can build a visually stunning and interactive portfolio that stands out to potential clients and employers.

Author

Telegram Group Join Now
WhatsApp Group Join Now
Instagram Group Join Now

By aczone

One thought on “Creating a Stunning 3D Portfolio Website with HTML, CSS, and JavaScript”

Leave a Reply

Your email address will not be published. Required fields are marked *