I recently solved this with CSS keyframe animation.
Essentially, your ticker needs a wrapper div with an overflow hidden on it. Elements containing tickers should display an inline block, so they are on the line:
<div class="ticker-wrap"> <div class="ticker"> <div class="ticker__item">Letterpress chambray brunch.</div> <div class="ticker__item">Vice mlkshk crucifix beard chillwave meditation hoodie asymmetrical Helvetica.</div> <div class="ticker__item">Ugh PBR&B kale chips Echo Park.</div> </div> </div>
CSS example:
.ticker-wrap { position: fixed; bottom: 0; width: 100%; overflow: hidden; height: 4rem; background-color: rgba(51, 51, 51, 0.5); padding-left: 100%; // offsets items to begin } .ticker { display: inline-block; height: 4rem; line-height: 4rem; white-space: nowrap; padding-right: 100%; // taken from container as display inline-block } .ticker__item { display: inline-block; padding: 0 2rem; font-size: 2rem; color: white; }
I have a demo that uses css keyframe animation to then transform content completely from one side to the other endlessly. notabene Variants with a vendor prefix are not shown.
@keyframes ticker { 0% { -webkit-transform: translate3d(0, 0, 0); transform: translate3d(0, 0, 0); } 100% { -webkit-transform: translate3d(-100%, 0, 0); transform: translate3d(-100%, 0, 0); } }
The only thing you need is to set the duration of the animation and apply it to .ticker.
.ticker { animation-name: ticker; animation-iteration-count: infinite; animation-timing-function: linear; animation-duration: 25s;
You can see the full demo.
source share