Back

Innovating Cloud-Themed Floating Pagination

Discover how to craft a whimsical cloud-inspired pagination system that drifts smoothly like clouds in the sky, playfully guiding users through content.

Component Explanation

Crafting a Unique Cloud-Themed Floating Pagination System

Welcome to an exciting journey where we turn a simple pagination component into a playful, sky-inspired navigation element. Our cloud-themed floating pagination is designed not only to function smoothly but also to introduce a delightful visual experience for users interacting with your web content.

HTML Structure

We begin by defining our HTML content within a <nav> which semantically denotes a navigation section. This will make it easier for screen readers to understand the purpose of this component, enhancing accessibility. Inside, we utilize an unordered list <ul>, where each page number and navigation button is an <li> that holds a button. This ensures each link is interactive and keyboard-accessible.

  <nav aria-label="Page navigation" class="cloud-pagination-container">
    <ul class="pagination">
      <li><button aria-label="Previous" class="cloud-page-btn">←</button></li>
      <li><button aria-label="Page 1" class="cloud-page-btn">1</button></li>
      <li><button aria-label="Page 2" class="cloud-page-btn">2</button></li>
      <li><button aria-label="Page 3" class="cloud-page-btn">3</button></li>
      <li><button aria-label="Next" class="cloud-page-btn">→</button></li>
    </ul>
  </nav>

Ensure each button has an aria-label attribute. This crucial accessibility feature makes it clear what action the button will perform, so all users can navigate effortlessly, even with assistive technologies.

CSS Styling

For our floating effect, we use modern design principles: a gentle cloud effect achieved through gradients and a slight shadow. Claymorphism inspires the illusion of soft, tangible elements. To create the cloud effect, we apply gradients to the .pagination class, ensuring a seamless display with rounded corners achieved through border-radius and suitable shadows for depth.

  .pagination {
    display: flex;
    list-style: none;
    padding: 0;
    transition: transform 1s ease, box-shadow 1s ease;
    background: linear-gradient(to bottom, rgba(255, 255, 255, 0.7), rgba(240, 240, 255, 0.7));
    padding: 10px;
    border-radius: 15px;
    box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1);
  }

Responsive and Interactive Buttons

Each button within the .cloud-page-btn class is flexible and accessible, responding to hover and focus for a comforting user experience. Hover states keep the interaction engaging, while focus styles signify active interaction for keyboard navigation.

  .cloud-page-btn {
    border: none;
    background: none;
    color: #333;
    font-size: 18px;
    margin: 0 10px;
    cursor: pointer;
    transition: color 0.3s ease;
  }
  .cloud-page-btn:hover {
    color: #0275d8;
  }
  .cloud-page-btn:focus {
    outline: none;
    color: #d9534f;
  }

JavaScript Interactivity

The floating effect triggered on button click is seamlessly managed by simple JavaScript. This snippet selects each button and implements a transformation class to imitate the clouds' gentle float, enhancing the visual narrative without overcomplicating the code.

  document.querySelectorAll('.cloud-page-btn').forEach(button => {
    button.addEventListener('click', () => {
      document.querySelector('.pagination').classList.add('floating');
      setTimeout(() => {
        document.querySelector('.pagination').classList.remove('floating');
      }, 1000);
    });
  });

This is executed with accessibility in mind, ensuring that all interactions are intuitive and require minimal effort from the user. The transitions and animations are set to respect user preferences, minimizing or avoiding them if prefers-reduced-motion is detected.

Conclusion

Through this cloud-floating pagination component, not only have we redefined navigation systems into an engaging UI element, but we've also adhered to modern web standards—ensuring accessibility, ease, and an immersive user experience. By blending playful elements and functional design, we've delivered a component that delights users with every page they navigate.

Whole code

<nav aria-label="Page navigation" class="cloud-pagination-container">
  <ul class="pagination">
    <li><button aria-label="Previous" class="cloud-page-btn">&#x2190;</button></li>
    <li><button aria-label="Page 1" class="cloud-page-btn">1</button></li>
    <li><button aria-label="Page 2" class="cloud-page-btn">2</button></li>
    <li><button aria-label="Page 3" class="cloud-page-btn">3</button></li>
    <li><button aria-label="Next" class="cloud-page-btn">&#x2192;</button></li>
  </ul>
</nav>

<script>
document.querySelectorAll('.cloud-page-btn').forEach(button => {
  button.addEventListener('click', () => {
    document.querySelector('.pagination').classList.add('floating');
    setTimeout(() => {
      document.querySelector('.pagination').classList.remove('floating');
    }, 1000);
  });
});
</script>

<style>
.cloud-pagination-container {
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 20px 0;
}
.pagination {
  display: flex;
  list-style: none;
  padding: 0;
  transition: transform 1s ease, box-shadow 1s ease;
  background: linear-gradient(to bottom, rgba(255, 255, 255, 0.7), rgba(240, 240, 255, 0.7));
  padding: 10px;
  border-radius: 15px;
  box-shadow: 0 8px 15px rgba(0, 0, 0, 0.1);
}
.pagination.floating {
  transform: translateY(-10px);
  box-shadow: 0 12px 25px rgba(0, 0, 0, 0.15);
}
.cloud-page-btn {
  border: none;
  background: none;
  color: #333;
  font-size: 18px;
  margin: 0 10px;
  cursor: pointer;
  transition: color 0.3s ease;
}
.cloud-page-btn:hover {
  color: #0275d8;
}
.cloud-page-btn:focus {
  outline: none;
  color: #d9534f;
}
</style>
      
Thank you for reading this article.

Comments

No comments yet. Be the first to comment!

More paginations

Similar

See also