◎実現したいこと
スクロールをして、数字が表示領域に入ったときに、0から数字がカウントアップされ、180の数字で数字のカウントアップが止まるアニメーションをしたいと思っています。
◎出来ない部分
$(window).scroll(function () { $(function () { var countElm = $('.count'), countSpeed = 5; countElm.each(function () { var self = $(this), countMax = self.attr('data-num'), thisCount = self.text(), countTimer; function timer() { countTimer = setInterval(function () { var countNext = thisCount++; self.text(countNext); if (countNext == countMax) { clearInterval(countTimer); } }, countSpeed); } timer(); }); }); });
「$(window).scroll(function () 」でスクロールしたら、カウントアップが始める部分までは実装できました。
しかし少しスクロールすると、文字が画面に表示されなくてもカウントアップのアニメーションが開始されます。
https://teratail.com/questions/157023
→こちらの記事を参考に、コードを書き換えましたが、どうしてもできませんでした。
個人的には、高さを取得していないからかなと推測しております。
お忙しいと思われますが、教えて頂けると嬉しいです。
◎コード
HTML
<p class="count" data-num="180">0</p><span>名</span>
CSS
/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain) */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { margin: 0; padding: 0; border: 0; font-size: 100%; font: inherit; vertical-align: baseline; } /* HTML5 display-role reset for older browsers */ article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { display: block; } body { line-height: 1; } ol, ul { list-style: none; } blockquote, q { quotes: none; } blockquote:before, blockquote:after, q:before, q:after { content: ''; content: none; } table { border-collapse: collapse; border-spacing: 0; } img { max-width: 100%; } .count { margin-top: 1000px; }
jQuery
$(window).scroll(function () { $(function () { var countElm = $('.count'), countSpeed = 5; countElm.each(function () { var self = $(this), countMax = self.attr('data-num'), thisCount = self.text(), countTimer; function timer() { countTimer = setInterval(function () { var countNext = thisCount++; self.text(countNext); if (countNext == countMax) { clearInterval(countTimer); } }, countSpeed); } timer(); }); }); });
◎その他
MacBookproを使っています。
回答1件
あなたの回答
tips
プレビュー