CSS3 Marquee Effect, Without Empty Space

后端 未结 3 482
野趣味
野趣味 2020-12-09 06:59

This question here has an answer, which leaves a lot of empty space at the end of each iteration of the marquee: CSS3 Marquee Effect

Is there a way to achieve a smoo

相关标签:
3条回答
  • 2020-12-09 07:17

    Here is a sample how you can do, and by setting the delay and duration you control the space between the texts

    .marquee {
      background-color: #ffffd;
      width: 500px;
      margin: 0 auto;
      overflow: hidden;
      white-space: nowrap;
    }
    .marquee span {
      display: inline-block;
      font-size: 20px;
      position: relative;
      left: 100%;
      animation: marquee 8s linear infinite;
    }
    .marquee:hover span {
      animation-play-state: paused;
    }
    
    .marquee span:nth-child(1) {
      animation-delay: 0s;
    }
    .marquee span:nth-child(2) {
      animation-delay: 0.8s;
    }
    .marquee span:nth-child(3) {
      animation-delay: 1.6s;
    }
    .marquee span:nth-child(4) {
      animation-delay: 2.4s;
    }
    .marquee span:nth-child(5) {
      animation-delay: 3.2s;
    }
    
    @keyframes marquee {
      0%   { left: 100%; }
      100% { left: -100%; }
    }
    <p class="marquee">
      <span>this is a</span>
      <span>simple marquee</span>
      <span>using css</span>
      <span>only tech</span>
      <span>with a delay</span>
    </p>

    0 讨论(0)
  • 2020-12-09 07:27

    CSS3 Marquee Effect, Without Empty Space

    Horizontal Marquee
    

    Horizontal with one right and one left : https://codepen.io/Rayeesac/pen/JjGEYRZ

    Vertical Marquee
    

    Vertical with one top and one bottom: https://codepen.io/Rayeesac/pen/eYJgpVy

    0 讨论(0)
  • 2020-12-09 07:33

    If the marquee is big enough, you can swap one of the collections at mid animation.

    This is as far as you can get with CSS alone, I think

    .marquee {
      width: 100%;
      height: 80px;
      margin: 0 auto;
      overflow: hidden;
      white-space: nowrap;
      border: 1px solid blue;
    }
    .marquee-content {
      display: inline-block;
      margin-top: 5px;
      animation: marquee 15s linear infinite;
    }
    .item-collection-1 {
      position: relative;
      left: 0%;
      animation: swap 15s linear infinite;
    }
    @keyframes swap {
      0%, 50% {
        left: 0%;
      }
      50.01%,
      100% {
        left: 100%;
      }
    }
    .marquee-content:hover {
      animation-play-state: paused
    }
    .item1 {
      display: inline-block;
      height: 70px;
      width: 140px;
      background: cyan;
      vertical-align: top;
      margin-left: 15px;
    }
    .item2 {
      display: inline-block;
      height: 70px;
      width: 100px;
      background: magenta;
      vertical-align: top;
      margin-left: 15px;
      line-height: 14px;
    }
    /* Transition */
    
    @keyframes marquee {
      0% {
        transform: translateX(0)
      }
      100% {
        transform: translateX(-100%)
      }
    }
    <div class="marquee">
    <div class="marquee-content">
        <span class="item-collection-1">
            <span><img src="https://cdn.sstatic.net/Sites/stackoverflow/img/apple-touch-icon@2.png" height="80"></span>
            <span class="item1"></span>
            <span><img src="https://cdn.sstatic.net/Sites/stackoverflow/img/apple-touch-icon@2.png" height="80"></span>
            <span class="item1"></span>
            <span class="item1"></span>
            <span class="item1"></span>
            <span class="item1"></span>
        </span>
        <span class="item-collection-2">
            <span class="item2"></span>
            <span class="item2"></span>
            <span class="item2"></span>
            <span class="item2"></span>
            <span class="item2"></span>
            <span class="item2"></span>
            <span class="item2"></span>
            <span class="item2"></span>
        </span>
    </div>
    </div>

    0 讨论(0)
提交回复
热议问题