Skrrboy
@Skrrboy

Могу ли я увеличить ширину через скрипт?

У меня есть линия, ее ширина в css:
.progress {
    left: 0;
    background-color: #4169e1;
    position: absolute;
    top: 50%;
    height: 4px;
    width: 0%;   //вот эту ширину, изначально 0% в начальной точке
    transform: translateY(-50%);
    z-index: -1;
    transition: 0.5s all;
}


В функии при нажатии кнопки должна увеличиваться длинна линии пропорционально количеству нажатий (всего 4 точки, т.е. 3 нажатия)
next.addEventListener('click', () => {
    currentActive++;
    if (currentActive > circles.length){
        currentActive = circles.length;
    }
    // console.log(currentActive);

    update();
});

function update () {
    circles.forEach( (circle, i) => {
        if (i<currentActive) {
            circle.classList.add('active');
        }else {
            circle.classList.remove('active');
        }
    });

    
    progress.style.width += (33 + '%');  //пытаюсь увеличить на 33% при каждом нажатии
}

Вопрос: могу ли я увеличивать ширину width в css при помощи увеличения в js , таким образом? Она увеличивается на 33% при первом клике, а далее не происходит увеличения. Я не cовем понимаю почему
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
Fox-NT
@Fox-NT
В твоем случае, JS просто передает строку в CSS "33%". Для JS - это просто текст, не иначе.
При сложении, ты просто получишь "33%33%", т.к. сложил две строки.

Уверен, что это можно решить как-то еще правильнее, но вот так можно реализовать увеличение при клике, на 33% от ширины родителя.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
lamer350
@lamer350
กำลังสูงสุด
просто вы нигде ширину не добавляете, вам вот тут: progress.style.width = (33 + '%')
необходимо получить старую ширину и добавить к ней необходимое для вас увеличение, только js не будет считать в %, вам нужно конвертировать математически все в вычисление количество пикселей
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы