JSFiddle - React, Tailwind, and code Playground

HTML

<div class="loopSlider" style="height: 100px;">
  <ul>
    <li>
      <a href="#">この1回目のテキストが2週目から挙動がおかしい。</a>
    </li>
    <li>
      <a href="#">こんにちは。今日は良い天気ですね。</a>
    </li>
    <li>
      <a href="#">この3回目のテキストが長い場合だけ、1回目のテキストにかぶって見えてしまう。たとえばこのように何行か続くくらい長い場合だけで、もし短ければかぶったりしない。</a>
    </li>
  </ul>
</div>

CSS

.loopSlider {
    margin: 0 auto;
    text-align: left;
    position: relative;
    overflow: hidden;
    background: #242424;
    margin: 0 20px;
    border-radius: 2px;
    max-width: 250px;
}
.loopSliderWrap {
    top: 0;
    left: 0;
    overflow: hidden;
    position: absolute;
}
ul {
    position: relative;
    padding: 5px;
}
li {
    margin: 0px 5px 5px 5px;
    padding-bottom: 5px;
}
a {
    color: #fff;
    text-decoration: none;
    display: block;
}

JavaScript

$(function(){
    var setElm = $('.loopSlider'),
    slideSpeed = 2000;
 
    setElm.each(function(){
        var self = $(this),
        selfHeight = self.innerHeight(),
        findUl = self.find('ul'),
        findLi = findUl.find('li'),
        listHeight = findLi.outerHeight(),
        listCount = findLi.length,
        loopHeight = listHeight * listCount;
 
        findUl.wrapAll('<div class="loopSliderWrap" />');
        var selfWrap = self.find('.loopSliderWrap');
 
        if(loopHeight > selfHeight){
            findUl.css({height:loopHeight}).clone().appendTo(selfWrap);
 
            selfWrap.css({height:loopHeight*2});
 
            function loopMove(){
                selfWrap.animate({top:'-' + (loopHeight) + 'px'},slideSpeed*listCount,'linear',function(){
                    selfWrap.css({top:'0'});
                    loopMove();
                });
            };
            loopMove();
 
            setElm.hover(function() {
                selfWrap.pause();
            }, function() {
                selfWrap.resume();
            });
        }
    });
});