Se você deseja que seja apenas CSS, a lógica de desativação deve ser definida pelo CSS.
Para mover a lógica nas definições de CSS, você precisará usar seletores de atributos. Aqui estão alguns exemplos :
Desative o link que tem um href exato: =
Você pode optar por desativar os links que contêm um valor de href específico, como:
<a href="//website.com/exact/path">Exact path</a>
[href="https://stackoverflow.com//website.com/exact/path"]{
pointer-events: none;
}
Desative um link que contenha um caminho: *=
Aqui, qualquer link que contenha /keyword/
no caminho será desativado
<a href="//website.com/keyword/in/path">Contains in path</a>
[href*="/keyword/"]{
pointer-events: none;
}
Desative um link que comece com: ^=
o [attribute^=value]
operador segmenta um atributo que começa com um valor específico. Permite descartar sites e caminhos raiz.
<a href="//website.com/begins/with/path">Begins with path</a>
[href^="//website.com/begins/with"]{
pointer-events: none;
}
Você pode até usá-lo para desativar links não https. Por exemplo :
a:not([href^="https://"]){
pointer-events: none;
}
Desative um link que termina com: $=
O [attribute$=value]
operador segmenta um atributo que termina com um valor específico. Pode ser útil descartar extensões de arquivo.
<a href="/path/to/file.pdf">Link to pdf</a>
[href$=".pdf"]{
pointer-events: none;
}
Ou qualquer outro atributo
CSS pode direcionar qualquer atributo HTML. Poderia ser rel
, target
, data-custom
e assim por diante ...
<a href="#" target="_blank">Blank link</a>
[target=_blank]{
pointer-events: none;
}
Combinando seletores de atributos
Você pode encadear várias regras. Digamos que você deseja desativar todos os links externos, mas não aqueles que apontam para o seu site:
a[href*="//"]:not([href*="my-website.com"]) {
pointer-events: none;
}
Ou desabilite os links para arquivos pdf de um site específico:
<a href="//website.com/path/to/file.jpg">Link to image</a>
[href^="//website.com"][href$=".jpg"] {
color: red;
}
Suporte do navegador
Os seletores de atributos são suportados desde o IE7. :not()
seletor desde o IE9.