html - 如何将数值绑定到 CSS 以创建时间线?
问题描述
我正在尝试在时间线上定位 div 元素。这些元素将根据数组定位,并且该数组将由从 0 到 1 的浮点数组成。0 是时间线的开始,1 是结束。
let events = [0, 0.25, 0.5, 1]
我正在使用 AngularCLI。我想我会用 *NgFor 遍历我的列表,但是我只是不知道如何使用我的数组的值将我的 CSS 元素放置在正确的比例上。
这是我的想法:
解决方案
我认为您可以从这样的事情开始(请参阅Stackbliz 上的演示):
模板
<div #containerDiv class="container">
<hr>
<div *ngFor="let pos of [0,0.25,0.5,1]"
[ngStyle]="{'left.px': _getStyle(containerDiv,pos)}"
class="black-ball-container">
<div>{{pos}}</div>
<div class="black-ball">
</div>
</div>
</div>
打字稿
_getStyle($div: HTMLDivElement, pos: number) {
const rect: DOMRect | ClientRect = $div.getBoundingClientRect();
return `${pos * rect.width}`;
}
scss
$height: 10px;
.container {
position: relative;
display: flex;
align-items: flex-end;
max-width: 100%;
hr {
position: absolute;
left: 0;
bottom: $height/4;
margin: 0;
margin-bottom: $height/2;
border: 1px solid;
width: 100%;
}
.black-ball-container {
position: absolute;
display: flex;
flex-direction: column;
align-items: center;
}
.black-ball {
height: $height;
width: $height;
background-color: black;
border-radius: $height;
border: 3px solid white;
}
}
根据评论,Stackblitz 上也有这个改进版本
推荐阅读
- c++ - 如何使数字居中并添加列表
- image - 如何从 Flutter 中的 url 获取图像的扩展名?
- java - Java 上的 Sikuli 无法识别图像
- laravel - Laravel:显示根目录之外的图像
- javascript - crbug/1173575,非 JS 模块文件已弃用
- flutter - 在 Flutter 中重构 TextStyle 小部件时,我得到一个无效的常量值
- python - 发生 ValueError 异常后,如何重新提示使用输入?
- r - 如何在列表输出中添加更多列
- spring-boot - Webflux:CancelledServerWebExchangeException 似乎无缘无故出现在指标中
- aws-lambda - Winston 在结束 lambda 执行之前强制刷新