Вы можете попробовать это с CSS-анимацией, просто переключив классы на элементе:
<div id="the-progress-bar" class="b9k-progress">
<div class="the-progress-bar-progress"></div>
</div>
.the-progress-bar {
background-color: orangered;
}
.the-progress-bar-progress {
position: relative;
width: 100%; height: 100%;
background-color: green;
transition: transform 2s;
transform: scaleX(0);
transform-origin: 0 0;
}
.the-progress-bar-progress--25perc { transform: scaleX(.25); }
.the-progress-bar-progress--50perc { transform: scaleX(.5); }
.the-progress-bar-progress--75perc { transform: scaleX(.75); }
.the-progress-bar-progress--100perc { transform: scaleX(1); }
И вы можете использовать эту функцию-пример, чтобы просто изменить класс, примененный кпрогресс:
function changeProgress(e) {
var progressBar = document.getElementById('the-progress-bar');
progressBar.classList = 'b9k-progress';
var targetClass = e.target.getAttribute('data-progressClass');
if(targetClass && targetClass != '') {
progressBar.classList.add(targetClass);
};
};
<button onclick='changeProgres();' data-progressClass="">ZERO</button>
<button onclick='changeProgres();' data-progressClass="the-progress-bar-progress--25perc">25%</button>
<button onclick='changeProgres();' data-progressClass="the-progress-bar-progress--50perc">50%</button>
или
function changeProgress(progressClass__string) {
var targetClass = progressClass__string || '';
document.getElementById('the-progress-bar').classList = 'b9k-progress ' + progressClass__string;
};
<button onclick="changeProgres();">ZERO</button>
<button onclick="changeProgres('the-progress-bar-progress--25perc');">25%</button>
<button onclick="changeProgres('the-progress-bar-progress--50perc');">50%</button>