Динамическая установка свойства CSS слева с использованием вычисления ширины Angular 6
В настоящее время я создаю аудиоплеер CSS, и я устанавливаю ширину div для отображения текущего прогресса звука, используя [стиль], как показано ниже, и он работает просто великолепно:
<div class="player-progress-current" [style.width.%]="(currentTime * 100)/duration"></div>
Я также хочу нарисовать маленький кружок в конце вышеприведенного div прогресса, установив свойство 'left' CSS другого класса. Это будет на английском языке:
(Parent Width px) - (Progress Width px)
Я пытался использовать функцию calc(), но ей это не нравится, и рассчитанный процент не знает, как использовать ширину, я думаю....
<div class="player-progress-handle" [style.left.px]="calc(100% - (currentTime * 100)/duration"></div>
Классы CSS:
.player-progress-current {
width: 100%;
height: 1px;
background-color: red;
}
.player-progress-handle {
position: relative;
bottom: 1px;
border: 1px solid #f50;
border-radius: 100%;
height: 8px;
width: 8px;
background-color: #f50;
box-sizing: border-box;
margin-top: -4px;
margin-left: -4px;
}
Любые идеи, как лучший способ сделать это? Я уверен, что могу найти хакерский путь, но хотел бы найти правильный путь
1 ответ
Решение
Вы могли бы использовать :after
за ручку и избавимся от расчетов:
.player-progress-current {
position: relative;
width: 50%;
height: 1px;
margin: 20px 0;
background: red;
}
.player-progress-current:after {
content: '';
position: absolute;
right:-3px; bottom: 1px;
border: 1px solid #f50;
border-radius: 55%;
height: 8px;
width: 8px;
background-color: #f50;
box-sizing: border-box;
}
<div class="player-progress-current" [style.width.%]="(currentTime * 100)/duration"></div>