Home > Enterprise >  How can I animate my HTML text on scroll?
How can I animate my HTML text on scroll?

Time:10-09

I am working on a project and I want to make it look as sleek as possible, I want the website to look beautiful while also being responsive and functioning, I am trying to animate text emelents to appear so that when you scroll to them, they slide in from the sides, or something like that, I have tried Fireship's method but thtat does not seem to be working. Here is my code:

   @import url('https://fonts.googleapis.com/css2?family=Roboto Mono:wght@700&display=swap');
html body {
  background: #0e1212;
  font-family: 'Roboto Mono', monospace;
  padding: 0;
  margin: 0;
}

ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  background-color: none;
  font-family: 'Roboto Mono', monospace;
}

.main {
  display: grid;
  justify-content: center;
  min-height: 100vh;
  text-align: center;
    position: absolute;
  top: 25%;
  width: 100%;
}

li {
  float: left;
}

li a {
  display: block;
  color: #DBDBDB;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
}

li a:hover {
  color: #622cd8;;
  transition: 0.5s;
  animation-name: example;
  animation-duration: 0.5s;
  animation-iteration-count: 1;
  animation-fill-mode: forwards;
}

.active {
  color: #808080;
}

.active:hover {
  color: #808080;
  animation-name: active;
}

@keyframes active {
  0% {
    color: #808080;
  }
  100% {
    color: #808080;
  }
  }
 
  @keyframes example {
    0% {
      color: #DBDBDB;
    }
    100% {
      color: #622cd8;
      
    }

  } .hidden{
  opacity: 0;
  filter: blur(5px);
  transform: translateX(-100%);
}
.show {
  opacity: 1;
  filter: blur(0);
  transform: translateX(0);
}
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="home.css">
  <script src='script.js'> </script>
  <title>Home</title>
</head>
<body>
  


</head>
<body>

<ul id='menu' >
  <li><a  href="#home" id="home">.home()</a></li>
  <li><a  href="#news">.about()</a></li>
  <li><a  href="#contact">.stuffs()</a></li>
  <li><a  href="#about">.apply()</a></li>
</ul>


  

<div >
  <section>
    <h1 style="text-align: center; color:#DBDBDB; font-size: 100px" >cosmic<span style="color: #622cd8">.club()</span></h1>
    <p style="font-size: 25px; color: #ABACAC; position: relative; top: -5%">a modern, advanced, and minimalistic web service</p>
  </section>
  <section>
    <h1>More</h1>
    <p>this is also a centered section</p>
  </section>
</div>
  
</body>
  
</html>

Can I use pure CSS or do I have to use Javascript

CodePudding user response:

The simplest solution is to use this library: https://michalsnik.github.io/aos/

CodePudding user response:

html file :

<section>
  <div >
    <div >   
        <p>
          Lorem ipsum dolor sit amet consectetur .
        </p>
    </div>
  </div>
</section>

CSS file:

.reveal{
  position: relative;
  transform: translateY(150px);
  opacity: 0;
  transition: 1s all ease;
}

.reveal.active{
  transform: translateY(0);
  opacity: 1;
}

js file:

function reveal() {
  var reveals = document.querySelectorAll(".reveal");

  for (var i = 0; i < reveals.length; i  ) {
    var windowHeight = window.innerHeight;
    var elementTop = reveals[i].getBoundingClientRect().top;
    var elementVisible = 150;

    if (elementTop < windowHeight - elementVisible) {
      reveals[i].classList.add("active");
    } else {
      reveals[i].classList.remove("active");
    }
  }
}

window.addEventListener("scroll", reveal);

  • Related