JSFiddle - React, Tailwind, and code Playground

HTML

<script src="http://openlayers.org/api/OpenLayers.js"></script>
<div id="map"></div>

CSS

#map {
    border: 6px solid #7AC49F;
    border-radius: 30px 30px 30px 30px;
    bottom: 0;
    display: block;
    height: auto;
    left: 0;
    margin: 39px 10px 10px;
    position: absolute;
    right: 0;
    top: 0;
    background-color:#eee;
}
div.olMapViewport {
    border-radius: 25px;
    display: block;
}
.olLayerDiv {
    border-radius: 25px;
    display: block;
}
}

JavaScript

var map = new OpenLayers.Map('map', {
    theme: null,
    controls: [new OpenLayers.Control.Navigation()]
});
layer = new OpenLayers.Layer.WMS("OpenLayers WMS",
    "http://vmap0.tiles.osgeo.org/wms/vmap0", {
    layers: 'basic'
});
map.addLayer(layer);
map.setCenter([3, 49], 5);

var startPt = new OpenLayers.Geometry.Point(2, 45);
var endPt = new OpenLayers.Geometry.Point(7, 55);

//style
var style = {
    strokeColor: "#0500bd",
    strokeWidth: 15,
    strokeOpacity: 0.5,
    strokeColor: '#0000ff'
};

drawAnimatedLine(new OpenLayers.Geometry.Point(2, 45), new OpenLayers.Geometry.Point(7, 55), style, 50, 2000, function () {
    drawAnimatedLine(new OpenLayers.Geometry.Point(7, 55), new OpenLayers.Geometry.Point(13, 52), style, 50, 2000);
});

function drawAnimatedLine(startPt, endPt, style, steps, time, fn) {
    var directionX = (endPt.x - startPt.x) / steps;
    var directionY = (endPt.y - startPt.y) / steps;
    var i = 0;
    var prevLayer;
    var ivlDraw = setInterval(function () {
        if (i > steps) {
            clearInterval(ivlDraw);
            if (fn) fn();
            return;
        }
        var newEndPt = new OpenLayers.Geometry.Point(startPt.x + i * directionX, startPt.y + i * directionY);
        var line = new OpenLayers.Geometry.LineString([startPt, newEndPt]);
        var fea = new OpenLayers.Feature.Vector(line, {}, style);
        var vec = new OpenLayers.Layer.Vector();
        vec.addFeatures([fea]);
        map.addLayer(vec);
        if(prevLayer) map.removeLayer(prevLayer);
        prevLayer = vec;
        i++;
    }, time / steps);
}