Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вертикальный прогресс-бар, смена направления прогрсса (https://javascript.ru/forum/events/86182-vertikalnyjj-progress-bar-smena-napravleniya-progrssa.html)

cupoma58 23.11.2024 15:38

Вертикальный прогресс-бар, смена направления прогрсса
 
Вложений: 1
Есть рабочий плеер, для сайта, с вертикальным прогрессом воспроизведения и звука.
HTML:
Код:

<span class="progres-bar" title="прогресс"><span class="progres"></span></span>
CSS:
Код:

.progres-bar {
    position: absolute;
    width: 30px;
    height: 68%;
    top: 0;
    right: 0;
    display: flex;
    align-items: flex-start;              /* сверху-вниз, по оси Y */
    background: #696969;
    cursor: pointer;
}
.progres {
    -webkit-transition: height 0.6s ease; 
    height: 0;
    width: 100%;
    background: #cc7600;
}

JS:
Код:

    var size = (video.currentTime * 100) / video.duration;
    progres.style.height = size + '%';
    .....
    var mouseY = e.offsetY;
    progres.style.height = (mouseY * 100) / pb.offsetHeight  + '%';
    .....
    var value = (mouseY * 100) / sb.offsetHeight;
    saund.style.height = value + '%';
    video.volume = value / 100;

Прогресс растёт сверху-вниз (по Y) и с выбором эпизода/громкости - всё нормально.
При запуске прогресса снизу-вверх (flex:end), выбор более позднего эпизода - сталкивается с фактическим уменьшение времени воспроизведения.
Что посоветуете?

Aetae 23.11.2024 15:46

а) Пересчитывать математику, а не только менять css.
б) Не трогать flex, а просто использовать transform: rotate(180deg).

cupoma58 26.11.2024 12:10

Цитата:

Сообщение от Aetae
просто использовать transform: rotate(180deg)

Благодарю за подсказку. Именно
-webkit-transform: rotate(180deg);

спасло "отца русской демократии". А, ведь, на поверхности лежало.


Часовой пояс GMT +3, время: 22:30.