CKneeland
CKneeland

Reputation: 119

How to put a div above animated body without covering body

I have a website I'm working on to get a grasp on how to build websites using HTML, CSS, and JS. I'm running into an error where when I put a div above a background animation on the body, the background animation doesn't pass over the div. I don't know how to fix this, and none of my Internet searches seem to solve this issue.

Here is the CodePen for the program: https://codepen.io/ckneeland/pen/Exyjygx

The HTML file is like so:

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

  <meta charset="UTF-8">
  <title>Data</title>
  <link rel="stylesheet" href="./style.css">
</head>
<body>
  <div class="wrapper fade-in" id="particles-js">
    <table class="center-table">
      <tr>
        <td><img class="resize" src="Images/Facebook.png" alt="Facebook"></td>
        <td><img class="resize" src="Images/Instagram.png" alt="Instagram"></td>
        <td><img class="resize" src="Images/Snapchat.png" alt="Snapchat"></td>
        <td><img class="resize" src="Images/Twitter.png" alt="Twitter"></td>
        <td><img class="resize" src="Images/YouTube.png" alt="YouTube"></td>
      </tr>
      <tr>
        <br>
        <br>
        <td><img class="resize" src="Images/TikTok.png" alt="TikTok"></td>
        <td><img class="resize2" src="Images/Google2.png" alt="Google"></td>
        <td><img class="resize" src="Images/Venmo2.png" alt="Venmo"></td>
        <td><img class="resize" src="Images/Reddit2.png" alt="Reddit"></td>
        <td><img class="resize" src="Images/LinkedIn.png" alt="LinkedIn"></td>
      </tr>
    </table>
  </div>
  <script src="http://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script>
  <script src="./script.js"></script>
</body>
</html>

And the JS / CSS files are on the CodePen, but I don't think they're the issue here

The pictures won't show up since I didn't add them to the project here

Also, a small side note: How can I center this div object vertically? It is already centered horizontally.

Upvotes: 0

Views: 114

Answers (2)

Igor Lebedisnky
Igor Lebedisnky

Reputation: 66

particlesJS("particles-js", {
  particles: {
    number: { value: 80, density: { enable: true, value_area: 800 } },
    color: { value: "#ffffff" },
    shape: {
      type: "circle",
      stroke: { width: 0, color: "#000000" },
      polygon: { nb_sides: 5 },
      image: { src: "img/github.svg", width: 100, height: 100 }
    },
    opacity: {
      value: 0.2,
      random: false,
      anim: { enable: false, speed: 1, opacity_min: 0.1, sync: false }
    },
    size: {
      value: 3,
      random: true,
      anim: { enable: false, speed: 40, size_min: 0.1, sync: false }
    },
    line_linked: {
      enable: true,
      distance: 150,
      color: "#ffffff",
      opacity: 0.4,
      width: 1
    },
    move: {
      enable: true,
      speed: 6,
      direction: "none",
      random: false,
      straight: false,
      out_mode: "out",
      bounce: false,
      attract: { enable: false, rotateX: 600, rotateY: 1200 }
    }
  },
  interactivity: {
    detect_on: "canvas",
    events: {
      onhover: { enable: true, mode: ["repulse", "bubble"] },
      onclick: { enable: true, mode: "push" },
      resize: true
    },
    modes: {
      grab: { distance: 400, line_linked: { opacity: 1 } },
      bubble: { distance: 400, size: 40, duration: 2, opacity: 8, speed: 3 },
      repulse: { distance: 200, duration: 0.4 },
      push: { particles_nb: 4 },
      remove: { particles_nb: 2 }
    }
  },
  retina_detect: true
});
var count_particles, stats, update;
stats = new Stats();
stats.setMode(0);
stats.domElement.style.position = "absolute";
stats.domElement.style.left = "0px";
stats.domElement.style.top = "0px";
document.body.appendChild(stats.domElement);
count_particles = document.querySelector(".js-count-particles");
update = function () {
  stats.begin();
  stats.end();
  if (window.pJSDom[0].pJS.particles && window.pJSDom[0].pJS.particles.array) {
    count_particles.innerText = window.pJSDom[0].pJS.particles.array.length;
  }
  requestAnimationFrame(update);
};
requestAnimationFrame(update);
<body>
  <div id="particles-js">
  <div class="fade-in" >
    <table class="center-table">
      <tr>
        <td><img class="resize" src="Images/Facebook.png" alt="Facebook"></td>
        <td><img class="resize" src="Images/Instagram.png" alt="Instagram"></td>
        <td><img class="resize" src="Images/Snapchat.png" alt="Snapchat"></td>
        <td><img class="resize" src="Images/Twitter.png" alt="Twitter"></td>
        <td><img class="resize" src="Images/YouTube.png" alt="YouTube"></td>
      </tr>
      <tr>
        <br>
        <br>
        <td><img class="resize" src="Images/TikTok.png" alt="TikTok"></td>
        <td><img class="resize2" src="Images/Google2.png" alt="Google"></td>
        <td><img class="resize" src="Images/Venmo2.png" alt="Venmo"></td>
        <td><img class="resize" src="Images/Reddit2.png" alt="Reddit"></td>
        <td><img class="resize" src="Images/LinkedIn.png" alt="LinkedIn"></td>
      </tr>
    </table>
  </div>
    </div>
  <script src="http://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script>
  <script src="./script.js"></script>
</body>
</html>

hope this is the result you looked for , basically I have added a div for the animated background separate from the wrapper fadein div , and fadein class determined as postion: fixed; than you can position it with left: xx; top:xx; right:xx; bottom:xx; properties

Upvotes: 0

jvda
jvda

Reputation: 306

Use the developer tools to see where elements end. Then use absolute positioning along with an appropriate z-index to create an overlay.

In your example, as little as .center-table { position: absolute } could be what youre after.

As for your second question concenring vertical alignment, I suggest looking into layouting using flexbox.

Upvotes: 1

Related Questions