Logo

dev-resources.site

for different kinds of informations.

Como animar o scrolling para anchor links com CSS

Published at
12/12/2023
Categories
css
webdev
portugues
Author
dougsource
Categories
3 categories in total
css
open
webdev
open
portugues
open
Author
10 person written this
dougsource
open
Como animar o scrolling para anchor links com CSS

Nota: apenas traduzi o texto abaixo e postei aqui.

A propriedade scroll-behavior

A propriedade scroll-behavior informa ao navegador como lidar com o scrolling para anchor links dentro de um elemento.

O valor default, auto, dá um salto forte como você está acostumado. Um valor de scroll informa ao navegador para animar o scrolling. Não há como especificar a atenuação, mas ela está vinculada à taxa de atualização do navegador para fornecer animações suaves e sedosas.

/**
 * Habilita smooth scrolling no document inteiro
 */
html {
    scroll-behavior: smooth;
}
Enter fullscreen mode Exit fullscreen mode

Aqui está uma demonstração.

Normalmente eu o habilito em todo o html document, mas você pode restringi-lo a elementos específicos, se desejar.

/**
 * Habilita smooth scrolling no elemento #be-cool
 */
#be-cool {
    scroll-behavior: smooth;
}
Enter fullscreen mode Exit fullscreen mode

Preocupações com acessibilidade

As animações podem causar problemas para usuários que sofrem de enjôo e outras condições.

Felizmente, Windows, MacOs, iOS e Android oferecem uma maneira para os usuários especificarem que preferem movimentos reduzidos. E todos os navegadores modernos (mas não o IE) fornecem uma maneira de verificar essa configuração em CSS e JavaScript.

Ao usar scroll-behavior, você deve adicionar uma verificação @media para preders-reduced-motion: reduce e reverter para o default auto.

/**
 * Habilita smooth scrolling quando usuários
 * tem prefers-reduced-motion habilitado
 */
@media screen and (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto;
    }
}
Enter fullscreen mode Exit fullscreen mode

Suporte do navegador

A propriedade scroll-behavior funciona na maioria dos navegadores modernos. Também não tem suporte para IE.

Aqui segue a definição completa mais atual do suporte a esse recurso.

No entanto, este é um ótimo recurso aprimorado progressivamente.

Fonte

Newsletter de Go Make Things

portugues Article's
30 articles in total
Favicon
Validação e Sanitização em Aplicações Web
Favicon
Golang básico - Comparação de Igualdade
Favicon
Guia de React re-render: tudo, tudo de uma vez
Favicon
Go + hot reload
Favicon
Como animar o scrolling para anchor links com CSS
Favicon
Como criar uma sticky navigation apenas com CSS
Favicon
Como usar requestAnimationFrame() com vanilla JS
Favicon
Como atualizar a URL do navegador sem refresh a página usando a vanilla JS History API
Favicon
Por que utilizar um elemento form quando submit campos com JavaScript?
Favicon
Quando um framework é melhor que a manipulação nativa do DOM
Favicon
Recursão com vanilla JavaScript
Favicon
Como usar async e await com vanilla JavaScript
Favicon
Construindo um show/hide disclosure component acessível com vanilla JS
Favicon
Eu <3 cascade!
Favicon
Você provavelmente não precisa de um DOMContentLoaded event em seu Javacript
Favicon
Formas de escrever Immediately Invoked Function Expression (IIFE) no JavaScript
Favicon
Event delegation e múltiplos seletores com vanilla JS
Favicon
Usando a propriedade CSS currentColor para contruir componentes extensíveis
Favicon
CurrentColor e SVGs
Favicon
WTF é gzipping (e como é diferente da minificação)?
Favicon
Como eu estruturo meus projetos vanilla JS
Favicon
Uma alternativa vanilla JS para o método moment.js timeFromNow()
Favicon
Recriando o método lodash partition() em vanilla JS
Favicon
Recriando o método lodash inRange() em vanilla JS
Favicon
Recriando o método lodash pull() em vanilla JS
Favicon
Como converter segundos para minutos e horas em vanila JS
Favicon
Gerando números randômicos com vanila JS
Favicon
Obtendo os meses formatados com vanila JS
Favicon
Como ser um desenvolvedor mais produtivo
Favicon
Como construir um site que carregue em menos de um segundo

Featured ones: