![eyecatch](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYqJPVcmb-jap9fNSaJXjAMKWPbusCc1897Zv1Tluza6Hxo8ijxhEAwMsZgTFsoaRvYP3z18xUGy96scHRJMmpxaB39yf2eHkr8m4x2sOOezeOP2mbivM19dd-Dv1YbrDwTqqa7yp-J3gkfrQmqmg7EQO7EKs_tohbvtoazf3WABO37FP0p_2UEUvk/s1600-rw/1628895885_0.jpg)
同期スクロールに、悶え苦しんでしまった、ユゲタです。
同期スクロールって何かというと、
2つの関連したリストを表示するような場合に、それぞれリストがスクロールするほど長い状態の時、
その2つのリストの片方をスクロールしたら、もう片方がそれを追従するようにリストをスクロールさせたい場合に、
同期スクロールという方法をとるようにする事なんですが、
javascriptで、リストのスクロールイベントをキャッチして、もう片方のリストのスクロール値を変更してあげればいいだけなんですが、
思いもよらず、うまく動かなかったので、その苦労の状態を備忘録しておきたいと思います。
相互の動機スクロールでの問題点
とりあえず、まずは最初にコードを書いてみます。
<link rel="stylesheet" href="common.css">
<div class="flex">
<ul id="a">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
</ul>
<ul id="b">
<li>a</li>
<li>b</li>
<li>c</li>
<li>d</li>
<li>e</li>
<li>f</li>
<li>g</li>
<li>h</li>
<li>i</li>
<li>j</li>
<li>k</li>
<li>l</li>
<li>m</li>
<li>n</li>
<li>o</li>
<li>p</li>
<li>q</li>
<li>r</li>
<li>s</li>
<li>t</li>
</ul>
</div>
<script src="scroll_sync.js"></script>
ul,li{
list-style:none;
margin:0;
padding:0;
}
ul{
margin:10px;
overflow:scroll;
width:300px;
height:300px;
border:1px solid black;
}
li{
padding:5px;
border-bottom:1px solid #ccc;
}
.flex{
display:flex;
}
document.getElementById("a").addEventListener("scroll" , scroll_sync);
function scroll_sync(e){
let target = null;
switch(e.target.id){
case "a":
target = document.getElementById("b");
break;
}
target.scrollTop = e.target.scrollTop;
}
![](data:image/jpeg;base64,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)
これを実行すると、左側のスクロールをした場合に、右側が一緒にスクロールします。
そして、今度は、右側のスクロールをした時に、左側のスクロールをさせたい場合に、
効率を考えて、同じscroll_sym関数を利用するために、次のコードをjsに付け足してみました。
document.getElementById("b").addEventListener("scroll" , scroll_sync);
サンプルの画面では、ぎこちなくスクロール同期されていますが、少しemenentが増えてくると
片方がうまくスクロールされなくなります。
これは、対象のスクロールイベントが発火してしまって、相互にスクロール同期をやり合う、コンフリクトに近い状態になているようです。
回避方法は力技
とにかくぎこちなさをなくすために、今回とった策として、次のようなjsコードにしてみました。
window.a = document.getElementById("a");
window.b = document.getElementById("b");
a.addEventListener("scroll" , scroll_sync);
b.addEventListener("scroll" , scroll_sync);
function scroll_sync(e){
let target = null;
if(window.scroll_sync_target && window.scroll_sync_target !== e.target){return;}
switch(e.target.id){
case "a":
target = window.b;
break;
case "b":
target = window.a;
break;
}
window.scroll_sync_target = e.target;
target.scrollTop = e.target.scrollTop;
setTimeout((function(){if(window.scroll_sync_target){delete window.scroll_sync_target}}) , 300);
}
最初に発火したタイミングで、window.scroll_sync_targetに、発火したエレメントを保持しておき、
0.3秒後に、そのフラグを削除しています。(もう少し短い秒数でもいいですが)
そして、対象エレメントのイベント発火の際に、window.scroll_sync_targetと同じエレメントでなければ、
returnして、処理をしないようにしています。
あと、毎回getElementをしている非効率を、グローバル変数で、最初一回のみの処理にすることで、
ほんのちょっぴり効率を良くしています。
でも、そもそもの、scrollイベントのタイムラグがあるため、多少のぎこちなさは残りますし、
めちゃくちゃ素早くスクロールすると、同期されない場合もあります。
この辺は、他のイベントと組み合わせて行うしかないでしょうね。
とりあえず、今回は2つのスクロール同期をやってみましたが、Googleのスプレッドシートのフレームのように、縦横でのスクロール同期などを
やる場合もあるので、この辺の精度の良さ追求しておきたいですね。
Googleもちょびっとぎこちないんで、仕方ないかもしれませんが・・・
デモ
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- a
- b
- c
- d
- e
- f
- g
- h
- i
- j
- k
- l
- m
- n
- o
- p
- q
- r
- s
- t
0 件のコメント:
コメントを投稿