Question:
How to display the list of items corectly and add a scrolling text slider?

To display a list of items correctly and add a scrolling text slider using JavaScript, you can leverage HTML, CSS, and JavaScript. Below is a simple example demonstrating how to create a list of items and implement a scrolling text slider.


Here is the code.

<style>

  .menu-wrapper {

    width: 300px;

    overflow: hidden;

  }

  

  .menu {

    display: flex;

    white-space: nowrap;

    transition: transform .5s ease;

  }

  

  .menu-item {

    margin-right: 20px;

    flex-shrink: 0;

  }

</style>

<div class="menu-wrapper">

  <button id="prevButton" onclick="moveMenu('prev')">Prev</button>

  <div id="menu" class="menu">

    <span class="menu-item">Some longer text</span>

    <span class="menu-item">Text</span>

    <span class="menu-item">Some text</span>

    <span class="menu-item">Some text</span>

    <span class="menu-item">Longer text</span>

    <span class="menu-item">Some longer text</span>

    <span class="menu-item">Text</span>

    <span class="menu-item">Some text</span>

  </div>

  <button id="nextButton" onclick="moveMenu('next')">Next</button>

</div>

<script>

  var menu = document.getElementById('menu');

  const { children } = menu

  let currentIndex = 0

  const positionMap = [{position: 0}]

  let sum = 0

  let position = 0

  for (const index in children) {

    const menuItem = children[index]

    const {

      offsetWidth

    } = menuItem

    sum -= offsetWidth + 20

    if (sum < -300 || index === children.length - 1) {

      menuItem.style.opacity = 0

      positionMap[positionMap.length - 1].hideIndex = index

      position += sum + offsetWidth + 20

      positionMap.push({

        position: position

      })

      sum = -offsetWidth - 20

    }

  }

  function moveMenu(direction) {

    setOpacity(1)

    if (direction === 'next') {

      if (currentIndex >= (positionMap.length - 1)) return

      currentIndex++

    } else {

      if (currentIndex <= 0) return

      currentIndex--

    }

    setOpacity(0)

    menu.style.transform = `translateX(${positionMap[currentIndex].position}px)`;

  }

  function setOpacity(val) {

    const item = children[positionMap[currentIndex].hideIndex]

    if (item) item.style.opacity = val

  }

</script>


Answered by: >moon

Credit:> Stack Overflow


Suggested blogs:

>5 easy ways to Repair the .NET Framework on Windows

>8 Steps to use Redux Persist in React Native

>Adding a search filter inside the dropdown in AngularJS?

>Adding new column/columns to the existing table in a migration-Laravel

>Authentication with Vue 3 and Firebase

>Build a minimal API using ASP.NET Core with Android Studio

>Build a minimal ASP.Net Core API with Android Studio for Mac


Submit
0 Answers

What Our Clients Say About Us

Client satisfaction is our ultimate goal. Here are some kind words of our precious clients they have used to express their satisfaction with our service.

Why Choose Us ?

We endow businesses with flexible engagement models based on their unique needs. Our strength lies in state-of-the-art technology and affordable consulting services. Try us for fast POCs, full-fledged applications, or technology consulting. Always available for your service.