Como adicionar um botão Sticky Back-to-Top ao seu site
Publicados: 2023-02-12Todos nós já estivemos lá. Você encontrou um guia on-line fantástico, rolou até o fim e pensou: "Uau, adoraria ver o que mais este site tem a oferecer!"
Mas então você tem que rolar.
TODOS.
O.
CAMINHO.
PARA.
O.
PRINCIPAL.
E aí você pensa…. "Hmmm, deixa pra lá." E feche a página.
Como web designer, esta é a última coisa que você quer que alguém faça quando chega a um site que você está construindo. Felizmente, as melhores práticas modernas de web design nos deram a solução para esse problema comum de UX: o botão fixo de voltar ao topo.
O que é um botão fixo Voltar ao topo?
Também conhecido como botão de rolagem para o topo ou imagem para o topo, o botão fixo de voltar ao topo é um elemento de navegação útil que ajuda os usuários a voltar ao início da página da Web que estão visualizando. Um padrão de interface do usuário comum é colocar esse botão no canto inferior direito da tela, tornando-o “fixo” por meio de uma posição fixa para que esteja sempre acessível conforme o usuário rola a página.
Coisas a considerar antes de adicionar um botão Voltar ao topo
Como qualquer tendência de design popular, eu encorajo você a dar um passo para trás antes de implementá-la em seu site para se perguntar: Se eu vou construir isso, quais diretrizes de botão traseiro preciso seguir?
Aqui estão algumas perguntas a serem respondidas antes de criar seu botão de rolagem para o topo:
- Onde será colocado?
- Quão grande (ou pequeno) deve ser?
- Quais padrões de design você deve seguir para permanecer na marca? (Pense em cores, fontes, ícones, etc.)
- Corre o risco de cobrir conteúdo importante do site, como informações em uma barra lateral?
- O que acontece em dispositivos móveis? Será responsivo?
- Você realmente precisa dele?*
*Observação: você poderia argumentar que os usuários hoje estão condicionados a rolar para baixo (e para cima!) em uma página, o que eliminaria a “necessidade” de um botão voltar ao topo. Meu conselho: teste! Adicione um evento do Google Analytics ao clicar ou use uma ferramenta de mapa de calor como o Hotjar para ver como os visitantes do seu site interagem com a página.
A melhor “prática recomendada” a seguir é aquela baseada em dados de seu próprio site e usuários!
Como adicionar um botão Sticky Back-to-Top ao seu site WordPress
Neste tutorial, mostrarei como adicionar exatamente o botão voltar ao topo que usamos aqui no Layout! A única diferença é que colocamos o nosso em um cabeçalho fixo na parte superior da tela, em vez do canto inferior direito. (Mas não se preocupe, é o mesmo conceito!)
Dica profissional: embora este tutorial não seja muito avançado, ainda recomendo experimentá-lo em um site de teste ou ambiente local, para que não haja absolutamente nenhum risco para o seu site ativo. Se você precisar configurar um rapidamente, confira o Local, um aplicativo local gratuito do WordPress que é incrivelmente fácil de usar.
Veja o botão Scroll-to-top da caneta ES6 de Josh Lawler (@joshuamasen) no CodePen.
Para este tutorial de botão fixo de voltar ao topo, usaremos três idiomas:
- HTML para a marcação para criar o botão
- CSS para estilizar o botão e fazer com que ele corresponda à sua marca
- JavaScript para “funcionar” e definir os comportamentos do botão
No HTML, você encontrará as seguintes linhas:
<a class="top-link hide" href=""> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6"><path d="M12 6H0l6-6z"/></svg> <span class="screen-reader-text">Voltar ao início</span> </a>
Este será o seu botão fixo de voltar ao topo! Você pode ver que adicionamos uma classe CSS chamada .top-link
e estamos usando um pouco de JavaScript simples para "fazer funcionar". Também estamos usando um SVG in-line para o botão.
Além de um SVG, você também pode usar um arquivo de imagem ou ícone de fonte para criar o botão. No entanto, preferimos o método SVG porque:
- Ele não ficará pixelado em diferentes tamanhos de tela, como uma imagem rasterizada.
- Os SVGs são universalmente suportados em todos os navegadores. (Sim, experiência do usuário!)
- É fácil estilizar com CSS, então você pode mudar tudo com muita facilidade.
- Leva apenas uma linha de código, tornando-o leve e melhor para o desempenho do site.
A última parte realmente importante que você encontrará no HTML é esta linha:
<span class="screen-reader-text">Voltar ao início</span>
Isso é crítico para usuários que operam com leitores de tela e melhorará a acessibilidade do seu site WordPress. (Pense nisso como uma tag alt para uma imagem, mas para o botão de rolagem para cima!)

Agora vamos falar mais sobre essa classe CSS, .top-link
. Estamos usando isso para realmente estilizar o botão, e é onde você definirá as qualidades, como o tamanho, quanto preenchimento deve haver ao redor dele, a cor, etc.
.top-link { transição: todos os 0,25s com facilidade de entrada e saída; posição: fixa; inferior: 0; direita: 0; display: flex em linha; cursor: ponteiro; itens de alinhamento: centro; justificar-conteúdo: centro; margem: 0 3em 3em 0; raio da borda: 50%; preenchimento: 0,25em; largura: 80px; altura: 80px; cor de fundo: #F8F8F8;
Nota: Estamos usando Sass (uma linguagem de estilo), para escrever nosso CSS um pouco mais rápido. Saiba mais sobre este pré-processador aqui.
Algumas partes importantes deste fragmento: transition: all .25s ease-in-out
; controla o quão "rápido" seu botão aparecerá ou desaparecerá na tela e position: fixed
; é o que faz o botão “grudar” no local que você deseja.
Em seguida, você verá regras para .show
e .hide
. Usaremos JavaScript para alternar entre essas classes para informar ao navegador quando o botão deve (ou não) aparecer na página.
.mostrar { visibilidade: visível; opacidade: 1; } .esconder { visibilidade: oculta; opacidade: 0; }
Antes de entrarmos no JavaScript, há apenas mais algumas linhas que adicionaremos ao CSS.
svg { preenchimento: #000; largura: 24px; altura: 12px; } &:flutuar { cor de fundo: #E8E8E8; svg { preenchimento: #000000; } }
Essas classes estilizarão a imagem SVG para a própria seta e informarão ao navegador como exibir o botão quando um usuário passar o mouse sobre ele.
Por fim, adicionaremos um pouco de CSS para ocultar o texto que diz “voltar ao início” para os leitores de tela.
// Texto destinado apenas para leitores de tela. .texto do leitor de tela { posição: absoluta; caminho de recorte: inserção(50%); margem: -1px; borda: 0; preenchimento: 0; largura: 1px; altura: 1px; estouro: oculto; quebra automática de linha: normal !importante; clipe: rect(1px, 1px, 1px, 1px); &:foco { exibição: bloco; topo: 5px; esquerda: 5px; índice z: 100000; // Acima da barra de ferramentas do WP caminho do clipe: nenhum; cor de fundo: #eee; preenchimento: 15px 23px 14px; largura: automático; altura: automático; decoração de texto: nenhum; altura da linha: normal; cor: #444; tamanho da fonte: 1em; clipe: auto !importante; } }
Agora vamos ao JavaScript! Faremos isso sem carregar o jQuery, o que ajudará a manter seu código leve e rápido de carregar.
A primeira variável ajudará o navegador a encontrar o botão.
// Defina uma variável para nosso elemento de botão. const scrollToTopButton = document.getElementById('js-top');
Em seguida, criaremos uma função que mostra o botão de rolagem para cima se o usuário rolar além da altura da janela inicial.
const scrollFunc = () => { // Obtém o valor de rolagem atual deixe y = window.scrollY; // Se o valor do scroll for maior que a altura da janela, vamos adicionar uma classe ao botão scroll-to-top para mostrá-lo! se (y > 0) { scrollToTopButton.className = "exibição do link superior"; } outro { scrollToTopButton.className = "ocultar link superior"; } };
Também adicionaremos um ouvinte de evento, que observará a rolagem do usuário (para sabermos onde ele está na página).
window.addEventListener("scroll", scrollFunc);
Quase pronto! Em seguida, precisamos definir a função que faz com que o botão realmente leve o usuário de volta ao topo da página. Para fazer isso, criaremos uma variável para o número de pixels que estamos do topo da página. Se esse número for maior que 0, a função o redefinirá para 0, levando-nos ao topo!
Também adicionaremos um pouco de animação aqui, para que o salto não seja muito repentino.
const scrollToTop = () => { // Vamos definir uma variável para o número de pixels que estamos do topo do documento. const c = document.documentElement.scrollTop || documento.corpo.scrollTop; // Se esse número for maior que 0, rolaremos de volta para 0 ou para o início do documento. // Também animaremos esse scroll com requestAnimationFrame: // https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame se (c > 0) { window.requestAnimationFrame(scrollToTop); // ScrollTo recebe uma coordenada x e ay. // Aumente o valor '10' para obter uma rolagem mais suave/lenta! window.scrollTo(0, c - c / 10); } };
Por último, mas não menos importante, só precisamos dizer à página para executar essa função quando alguém clicar em nosso botão fixo de voltar ao topo.
// Quando o botão for clicado, execute nossa função ScrolltoTop acima! scrollToTopButton.onclick = function(e) { e.preventDefault(); role para cima(); }
É isso! Agora você terá um botão back-to-top totalmente funcional e personalizável em seu site WordPress.