Вы можете сделать это с простым фоном, где будет легко управлять анимацией, а также размером ваших точек:
.dots {
height:5px; /*to control the overall height*/
width:200px; /*to control the overall width*/
margin:50px;
background-image:
repeating-linear-gradient(to right,
transparent,transparent 5px, /*5px of transparent*/
blue 5px,blue 10px); /*then 5px of blue */
background-size:200% 100%;
animation:change 3s linear infinite;
}
@keyframes change{
to {
background-position:right;
}
}
<div class="dots"></div>
Чтобы изменить направление, просто измените положение:
.dots {
height:5px;
width:200px;
margin:50px;
background-image:
repeating-linear-gradient(to right,
transparent,transparent 5px,
blue 5px,blue 10px);
background-size:200% 100%;
background-position:right;
animation:change 3s linear infinite;
}
@keyframes change{
to {
background-position:left;
}
}
<div class="dots"></div>
Вы можете проверить это для более подробной информации о различных используемых значениях: Использование процентных значений с положением фона на линейном градиенте
Еще одна идея с использованием анимации при преобразовании:
.dots {
height:5px;
width:200px;
margin:50px;
position:relative;
overflow:hidden;
}
.dots::before {
content:"";
position:absolute;
top:0;
left:0;
right:-100%;
bottom:0;
background-image:
repeating-linear-gradient(to right,
transparent,transparent 5px,
blue 5px,blue 10px);
animation:change 3s linear infinite;
}
@keyframes change{
to {
transform:translateX(-50%);
}
}
<div class="dots"></div>
Изменение направления:
.dots {
height:5px;
width:200px;
margin:50px;
position:relative;
overflow:hidden;
}
.dots::before {
content:"";
position:absolute;
top:0;
left:-100%;
right:0;
bottom:0;
background-image:
repeating-linear-gradient(to right,
transparent,transparent 5px,
blue 5px,blue 10px);
animation:change 3s linear infinite;
}
@keyframes change{
to {
transform:translateX(50%);
}
}
<div class="dots"></div>