Search code examples
htmlcssmarquee

Text Marquee is cutting off


I have to use a marquee with quite a long string of text. I've worked this code a few different ways but in the end, the text is always cut off after a few words (or the first line). I need the entirety of all the text to continue scrolling. If we could keep it within the CSS, that'd be ideal. Thanks!

You can see it here: http://braidsmusic.com/test

.scroll-left {
  height: 100px;
  overflow: hidden;
  position: relative;
}

.scroll-left h1 {
  position: absolute;
  width: 150%;
  height: 100%;
  margin: 0;
  line-height: 50px;
  text-align: center;
  /* Starting position */
  -moz-transform: translateX(100%);
  -webkit-transform: translateX(100%);
  transform: translateX(100%);
  /* Apply animation to this element */
  -moz-animation: scroll-left 10s linear infinite;
  -webkit-animation: scroll-left 10s linear infinite;
  animation: scroll-left 10s linear infinite;
}


/* Move it (define the animation) */

@-moz-keyframes scroll-left {
  0% {
    -moz-transform: translateX(100%);
  }
  100% {
    -moz-transform: translateX(-100%);
  }
}

@-webkit-keyframes scroll-left {
  0% {
    -webkit-transform: translateX(100%);
  }
  100% {
    -webkit-transform: translateX(-100%);
  }
}

@keyframes scroll-left {
  0% {
    -moz-transform: translateX(100%);
    /* Browser bug fix */
    -webkit-transform: translateX(100%);
    /* Browser bug fix */
    transform: translateX(100%);
  }
  100% {
    -moz-transform: translateX(-100%);
    /* Browser bug fix */
    -webkit-transform: translateX(-100%);
    /* Browser bug fix */
    transform: translateX(-100%);
  }
}
<div class="scroll-left">
  <h1 style="color: #ccc; line-height:90px;">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
    dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</h1>
</div>


Solution

    • scroll-left width automatic fill with text width. So use fit-content;
    • changed start position to 30%

    body{
    overflow-x:hidden;
    }
    
    .scroll-left {
      height:auto;
      width:fit-content;
    }
    
    .scroll-left h1 {
      height:auto;
      margin: 0;
      /* Starting position */
      -moz-transform: translateX(30%);
      -webkit-transform: translateX(30%);
      transform: translateX(30%);
      /* Apply animation to this element */
      -moz-animation: scroll-left 30s linear infinite;
      -webkit-animation: scroll-left 30s linear infinite;
      animation: scroll-left 30s linear infinite;
    }
    
    
    /* Move it (define the animation) */
    
    @-moz-keyframes scroll-left {
      0% {
        -moz-transform: translateX(30%);
      }
      100% {
        -moz-transform: translateX(-100%);
      }
    }
    
    @-webkit-keyframes scroll-left {
      0% {
        -webkit-transform: translateX(30%);
      }
      100% {
        -webkit-transform: translateX(-100%);
      }
    }
    
    @keyframes scroll-left {
      0% {
        -moz-transform: translateX(30%);
        /* Browser bug fix */
        -webkit-transform: translateX(30%);
        /* Browser bug fix */
        transform: translateX(30%);
      }
      100% {
        -moz-transform: translateX(-100%);
        /* Browser bug fix */
        -webkit-transform: translateX(-100%);
        /* Browser bug fix */
        transform: translateX(-100%);
      }
    }
    <div class="scroll-left">
      <h1 style="color: #ccc; white-space:nowrap;">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore 
    
    et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
        dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in 
    
    culpa qui officia deserunt mollit anim id est laborum.</h1>
    </div>