みかづきブログ・カスタム

基本的にはちょちょいのほいです。

CSSセレクタの前方一致を使って、ページ内リンクをまるっとセレクトする 🕸

f:id:kimizuka:20210224214044p:plain

属性セレクタの前方一致を使って、href属性が#から始まる要素をまるっと取得すればページ内リンクを一網打尽にできます。

[attr^=value]
attr という名前の属性の値が value で始まる要素を表します。

https://developer.mozilla.org/ja/docs/Web/CSS/Attribute_selectors より引用

CSS

[href^='#'] { // href属性が#から始まる要素をセレクト
 
}

JavaScript

document.querySelectorAll('[href^="#"]'); // href属性が#から始まる要素をセレクト


ただし、この方法でセレクトできるのは、href属性を持ったDOMのみです。
JavaScriptのイベントでhrefやhashを操作するDOM、例えばnext/linkなどを使っている場合などは、当然ながら対象外なので過信は禁物です。

nextjs.org