質問するログイン新規登録

回答編集履歴

1

sannkou

2024/01/19 11:43

投稿

yambejp
yambejp

スコア118094

answer CHANGED
@@ -27,5 +27,40 @@
27
27
  <div class="copy">テキスト入ります。ダミーですテキスト入ります。</div>
28
28
  </a>
29
29
  </div>
30
-
31
- ```
30
+ ```
31
+ # 参考
32
+ 「.shuffle-con-a」内の要素間の移動でシャッフルを発生させない場合。
33
+ やりようは色々あると思いますがこんな感じがお手軽で良いかも
34
+ mouseoverがmouseenterになるのでご注意ください
35
+ ```javascript
36
+ <script src=" https://cdn.jsdelivr.net/npm/shuffle-text@0.4.0/build/shuffle-text.min.js "></script>
37
+ <script>
38
+ window.addEventListener('DOMContentLoaded', ()=>{
39
+ document.querySelectorAll('.shuffle-con-a .ttl,.shuffle-con-a .copy').forEach(el=>{
40
+ el.start=function(){new ShuffleText(this).start()};
41
+ el.dataset.txt=el.textContent;
42
+ });
43
+ document.addEventListener('mouseenter',({target})=>{
44
+ if(target.matches('.shuffle-con-a')){
45
+ target.querySelectorAll('[data-txt]').forEach(el=>{
46
+ el.start();
47
+ });
48
+ }
49
+ },true);
50
+ document.addEventListener('mouseout',({target})=>{
51
+ target.closest('.shuffle-con-a')?.querySelectorAll('[data-txt]').forEach(el=>{
52
+ const timerId=setInterval(()=>{
53
+ if(el.textContent==el.dataset.txt) clearInterval(timerId);
54
+ el.textContent=el.dataset.txt;
55
+ },100);
56
+ });
57
+ });
58
+ });
59
+ </script>
60
+ <div class="content">
61
+ <a href="#" class="shuffle-con-a"> <img src="img.jpg" alt="img">
62
+ <div class="ttl">タイトル入るタイトルテキスト入ります。</div>
63
+ <div class="copy">テキスト入ります。ダミーですテキスト入ります。</div>
64
+ </a>
65
+ </div>
66
+ ```