【发布时间】:2020-07-20 19:12:52
【问题描述】:
我想显示一个由句子组成的大文本,它是合理的,并且在特定位置有换行符。这些换行符当然与句子的结束位置无关。一个句子可以从一行的中间开始,并继续到下一行。
我有一个 sentences.json 文件,其中包含有关全文的文本片段(“句子”)的信息
让我们说:
[
{
"line":1,
"text": "Hello<br>",
"time": "00:10"
},
{
"line":2,
"text": "How are you?",
"time": "00:25"
},
{
"line":3,
"text": "Great and <br> you?",
"time": "01:10"
},
...]
这是通过
导入到sentence.component.tsimport * as data from '../sentences.json';
...
export class SentenceComponent implements OnInit {
sentences: any = (data as any).default;
我想将每个句子显示为 a,以便在悬停时更改背景颜色。这样当点击时,我可以根据句子的“时间”字段播放来自特定位置的音频。
所以在 sentence.component.html 我做
<span *ngFor="let sentence of sentences"
[id]="sentence.line"
[ngStyle]="hoveredID === sentence.line ? hoveredStyle : normalStyle"
(mouseover) = "showHovered(sentence.line)"
(mouseout) = "showNormal()"
(click)="play(sentence.time)">
{{sentence.text}}
</span>
根据 Aurelien Giraud 对 ["How can I add a class to an element on hover?"] (How can I add a class to an element on hover?) 的回答 ["How can I add a class to an element on hover?"] (How can I add a class to an element on hover?) by Aurelien Giraud]
现在,所有跨度都在一个 div 中,因为在 app.component.html 我有
<div>
<app-sentence></app-sentence>
</div>
并且 div 有样式(在 app.component.css 中设置)
text-align: justify;
一些“句子”应该在其中有一个换行符,因为它们从一行中间开始并在下一行继续。
我尝试将<br> 作为“文本”的一部分并没有帮助。因为当我使用{{sentence.text}}在span里面输入文字时,并没有生成<br>标签,只是在句子中间显示文字"<br>"。
任何想法如何做到这一点?
当点击某个句子时,从特定时间播放音频/视频文件最简单的方法是什么?
【问题讨论】: