フォーラムへの返信
-
投稿者投稿
-
めちゃくちゃ早い実装とアップデートまでありがとうございます!
早速アップデートさせていただきましたがまだ実装できていないので実装進めたいと思います!!
ほんとありがとうございます。自由度が高すぎるのでほんと実装のパターンが無限にあって悩ましいです(; ・`ω・´)
いま作っているのも近いうちリリースされると思うので、リリースされたらお伝えさせてくださいw
♥ 0いいねをした人: いませんありがとうございます!
aタグでラップしたいのは
PC のブラウザでリンク上にマウスホバーした時に左下にURLが表示さるといいなというところです。
これを実現したいというのが一番大きいです。
全然詳しくないのですがaタグでラップすることで明示的にリンクになるのでアクセシビリティ的にもいいのかも?って勝手に思っています。間違っていたらすいません。
要素の中に別のリンクが指定されていた場合、そこだけ別のリンクになるのにも違和感を感じてしまいます。「ホバーしたことにする」
これしたいですよね。。
できないことがわかったので要素全体をリンクにするときはJavaScript で実装することが多いです(; ・`ω・´)
JavaScript の書き方にもよるのですが、不要なaタグを削除したり1つ目のリンクで上書きするということが多いです。ちょっと書き方雑なのですが、最近はこんな感じで
.linkbox
というclass をつけることで実装しました。
aタグの中にaタグが入ったままになるので一般的なものにするなら削除する形に修正が必要だと思います。document.addEventListener(‘DOMContentLoaded', function () { const linkBoxes = document.querySelectorAll(‘.linkbox'); linkBoxes.forEach(linkBox => { // .linkbox 内のすべての <a> タグを取得 const aTags = linkBox.querySelectorAll(‘a'); if (aTags.length === 0) return; // <a> タグがなければスキップ // 最初の <a> タグの href を取得 const firstATag = aTags[0]; const href = firstATag.getAttribute(‘href'); if (!href) return; // href がなければスキップ // 2つ目以降の <a> タグの href を上書き for (let i = 1; i < aTags.length; i++) { aTags[i].setAttribute(‘href', href); } // <a> タグで .linkbox をラップ const wrapperATag = document.createElement(‘a'); wrapperATag.setAttribute(‘href', href); // 元の target 属性を保持 const target = firstATag.getAttribute(‘target'); if (target) { wrapperATag.setAttribute(‘target', target); } // ラップする <a> タグにスタイルを設定 wrapperATag.style.textDecoration = ‘none'; // アンダーラインを消す wrapperATag.style.color = ‘inherit'; // テキストの色を親要素から継承 // .linkbox の親要素にラップを追加 const parent = linkBox.parentNode; parent.replaceChild(wrapperATag, linkBox); wrapperATag.appendChild(linkBox); }); });
わからんことばかりなので間違っていたらすいません(´;ω;`)
めちゃくちゃ早い返信ありががとうございます!!
閲覧者さんには右クリックで遷移しても問題ないかなと思いつつ、実装中に右クリックから検証ツールを開きたいときにつらかったのでありがたいです。どのリンクをどう取り扱うかなどたくさん問題があるかもしれませんが個人的には、aタグで外もしくは内側にラップできるようにもなったらうれしいな思います。
PC のブラウザでリンク上にマウスホバーした時に左下にURLが表示さるといいなというところです。
スマホファーストの時代なのでPC 対応どこまで必要かというところはありますがwアップデート楽しみにしています、よろしくお願いします_(._.)_
♥ 0いいねをした人: いません -
投稿者投稿