質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1023閲覧

スクロールしたらテキストに下線がアニメーションで引かれるページで、下線の3つ目以降が動作しない

jb-

総合スコア1

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/08/08 08:10

前提

Wordpress内のページで、「スクロールしたらテキストに下線がアニメーションで引かれるページ」を作りたく、ネットで探したCSSとJSを組み込みました。
こちらを参考にしました。
https://yusukecode.com/scroll-line/
下線2つまではうまく動作するのですが、3つ目以降がなぜか動作しません。
HTMLの指定を書き間違えているのかと思いましたが、試しに1つ目を消してみると、何も変更していない3つ目が動作するので、やっぱり2つまでしか効かない…と思っています。
解決方法があれば教えて頂きたいです。

実現したいこと

スクロールしたら下線がアニメーションで引かれるのを、3つ以上動作させたい。

発生している問題・エラーメッセージ

2つ目までは動作するが、3つ以降が動作しない。

該当のソースコード

JavaScript

<script> let expantion = document.getElementsByClassName('underline-before'); let expantionswitch = ["off","off"]; window.onscroll = function(){ for(let i = 0,len = expantion.length;i < len;i++){ let ex_clientRect = expantion[i].getBoundingClientRect(); let wh = window.innerHeight; if(wh > ex_clientRect.top + 200 && expantionswitch[i] === "off") { expantion[i].classList.add('underline-after'); expantionswitch[i] = "on"; } } } </script>

CSS

<style> .underline-Area { width: 50%; min-width: 200px; height: auto; margin: 0; padding: 20px; border: 1px solid #333; } .underline-Area p { margin: 60px auto; } .underline-before { background: linear-gradient(black, black) 0 100%/0 2px no-repeat; transition: background 3s; text-decoration: none; } .underline-after { background-size: 100% 2px; } </style>

HTML

<div class="underline-Area"> <p>この行に近づくと……<span class="underline-before">ほらここにアンダーラインが引かれます。</span>.underline-beforeというセレクタにtransitionが設定されているので、アニメーションになります。</p> <p>せっかくなのでもう一度<span class="underline-before">ここにもアンダーラインが引かれます。</span></p> <p>せっかくなのでもう一度<span class="underline-before">この箇所以降アンダーラインが引かれません</span></p> </div>

試したこと

正常に動作している箇所をコピペしてみたが、3つ目以降が動かない。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

expantionswitchでon,offの状態を管理していますがexpantionswitchの中身が2個しかないので
上の2個分の要素しか状態を管理できていません。"off"を追加しましょう。

ただ要素を増やしていくつもりならこの方法だと要素を増やすたびに配列の中身を増やさなくてはいけないので別の方法をとったほうがいいと思います。

投稿2022/08/08 08:25

gogoweb_ikeda

総合スコア1426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jb-

2022/08/08 08:37

その個所のoffを増やしたら思い通りの動作になりました。 やはりコピペではなくちゃんと理解してJSを組み込まないといけないなと痛感しております…。 今回はこちらで、また別の方法も別の機会で調べたり勉強したいと思います。 大変助かりました、ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問