歌詞を含むテーブルがあります。平均して、曲には 30 行ほどの行がありますが、一度にすべての行をページの下に表示したくないので、overflow:scroll プロパティを使用してテーブルを div に配置しました。
やりたいことは 2 つあります。一度に div に 4 行または 5 行 (テーブル行) を表示し、曲の進行に合わせて div を下にスクロールして、現在再生中の行が div の一番上にくるようにします。
コードはプロパティ scrollTop と offsetHeight を使用すると思いますが、すべてをまとめる方法がわかりません。
ここにテーブルがあります: jsFiddle
<div id="divlyrics" class="lyrics">
<table>
<tr id="row_0">
<td>
<p id="lyric_0" class="lyric_line">
Song lyrics line 1<br>
</p>
</td>
</tr>
<tr id="row_1">
<td>
<p id="lyric_1" class="lyric_line">
Song lyrics line 2<br>
</p>
</td>
</tr>
<tr id="row_2">
<td>
<p id="lyric_2" class="lyric_line">
Song lyrics line 3<br>
</p>
</td>
</tr>
<tr id="row_3">
<td>
<p id="lyric_3" class="lyric_line">
Song lyrics line 4<br>
</p>
</td>
</tr>
<tr id="row_4">
<td>
<p id="lyric_4" class="lyric_line">
Song lyrics line 5<br>
</p>
</td>
</tr>
<tr id="row_5">
<td>
<p id="lyric_5" class="lyric_line">
Song lyrics line 6<br>
</p>
</td>
</tr>
</table>
</div>
CSS:
.lyrics{
font-family:Arial;
overflow:scroll;
}
.lyric_line{
border:solid 1px;
text-align:center;
}
(実際のテーブルには少なくとも 2 つの行があります。1 つの行は「Line x」のみを表示し、もう 1 つの行は 3 つの異なる形式で歌詞を表示します: 曲の元の言語、音訳、および別の言語への翻訳)。