Logotipo de Bitdoze

Desplazamiento Suave en Carrd: Enlaces de Anclaje Nativos + Código Personalizado

El desplazamiento suave en Carrd sin complicaciones: usa los Scroll Points nativos y los enlaces de anclaje gratis, o añade código personalizado para controlar la velocidad, el easing y la compensación del encabezado fijo.

Dragos

Actualizado Publicado 77 min de lectura

Desplazamiento Suave en Carrd: Enlaces de Anclaje Nativos + Código Personalizado

El desplazamiento suave ya viene integrado en Carrd. Los Scroll Points deslizan a los visitantes hasta cualquier anclaje sin escribir código, en todos los planes, incluido el Free. Eso cambia el orden de esta guía, porque la mayoría de los tutoriales de «desplazamiento suave para Carrd», versiones anteriores de este incluidas, empiezan con un snippet de embed que en realidad no necesitas.

Lo que no ha cambiado: el navegador sigue necesitando un destino al que desplazarse, y tu navegación sigue necesitando enlaces de anclaje que apunten a él. Lo que ha cambiado es quién hace la animación. El JavaScript del sitio publicado por el propio Carrd ejecuta un desplazamiento con easing vía requestAnimationFrame (750 ms por defecto) cuando se dispara un enlace de Scroll Point (verificado en el JS inline de un sitio Carrd publicado y en producción, septiembre de 2026), así que la vía nativa cubre el caso habitual. Haz clic en un enlace de navegación y la página se desliza.

El código embed personalizado sigue teniendo su sitio en tres situaciones: quieres una curva de easing o una duración que el ajuste de velocidad de Carrd no ofrece, necesitas una compensación de encabezado fijo que se adapte a tu encabezado, o quieres extras como una barra de progreso de desplazamiento o un botón de volver arriba con animación suave. Todo lo que sigue va desde «gratis y sin código» hasta «pega este snippet», así que detente en la primera opción que resuelva tu caso. La vía nativa no cuesta nada en ningún plan de Carrd.

Actualización 2026

Carrd ya se desplaza suavemente hasta los Scroll Points de forma nativa. Trata los snippets de código de abajo como opcionales. Úsalos solo para velocidad personalizada, easing o una compensación de encabezado fijo.

Carrd.co

Algunos tutoriales de Carrd:

La lista completa con plugins, temas y tutoriales de Carrd la puedes encontrar en mi web carrdme.com.

Por Qué Importa el Desplazamiento Suave

En un sitio de una sola página toda la historia de navegación es desplazamiento. Los visitantes hacen clic en «Precios» y esperan aterrizar ahí con cierta sensación de la distancia que acaban de recorrer.

  1. Mejor orientación del usuario - La página se mueve visiblemente a través de su propia estructura, así que los visitantes entienden dónde queda el destino en relación con todo lo demás.

  2. Sensación profesional - Las interacciones pequeñas como esta separan una página montada con prisas de una terminada. La navegación de una sola página vive o muere por detalles como este.

  3. Menos desorientación - Un salto instantáneo del hero al pie desorienta en las secciones largas de Carrd. Un deslizamiento no.

También funciona con la navegación que ya uses: un encabezado fijo, un menú flotante o una navegación lateral. El desplazamiento suave las mejora a todas.

¿Aún Necesitas Código para el Desplazamiento Suave en Carrd?

Respuesta corta: no, no para el desplazamiento a anclajes simple. Añade un Scroll Point, enlázalo con #name y listo. Carrd anima el desplazamiento en el navegador.

Todavía necesitas código cuando quieres algo de esto:

  • Una curva de easing, o una duración fuera de los cinco niveles de velocidad de Carrd
  • Una compensación de encabezado fijo que siga la altura real de tu encabezado, para que el contenido no quede aparcado debajo de él
  • Extras decorativos: una barra de progreso de desplazamiento, un botón de volver arriba con estilo, efectos activados por el scroll

Si nada de eso aplica, salta a Cómo Usar los Scroll Points de Carrd para un Desplazamiento Suave Nativo e ignora el resto de esta página.

Cómo Resuelve Carrd los Enlaces #hash: Scroll Points vs. Secciones

Antes de elegir un método, ayuda saber qué hace Carrd cuando un #hash cambia. La versión antigua de este artículo mezclaba los Scroll Points con los IDs de sección. Son funciones distintas con huellas distintas en el DOM.

Según el JavaScript del sitio publicado de un sitio Carrd en producción (inspeccionado en septiembre de 2026), el manejador de hashchange resuelve un hash en este orden:

Bajo el capó

  1. [data-scroll-id=“hash”] - es un Scroll Point. Carrd se desplaza suavemente hasta él si su sección está visible.
  2. #hash-section - es una Sección. Carrd muestra o cambia a esa sección con un fundido. Sin animación de desplazamiento, porque no hay nada que desplazar.
  3. Cualquier otra cosa - Carrd vuelve a la sección de inicio y limpia el hash. Eso incluye enlaces a IDs de elementos simples como #container01.

Una sección llamada contact sí que se renderiza como <section id="contact-section"> en el DOM publicado, y un Scroll Point no tiene id en absoluto, solo data-scroll-id. Por eso los snippets genéricos de scroll suave basados en document.getElementById(hash) no encuentran nada en un sitio Carrd.

Diagrama de la resolución de enlaces hash de Carrd: primero data-scroll-id, luego nombre-de-seccion-section

La peculiaridad del volver arriba

Si la sección de destino ya está activa, un enlace de Sección se desplaza suavemente de vuelta a la parte superior de la página en lugar de no hacer nada. Cambiar a otra sección la muestra ya en la parte superior, sin animación de desplazamiento. Además, hacer clic dos veces en el mismo enlace hace que Carrd reescriba el hash para volver a disparar el manejador. Un script personalizado que escuche hashchange puede apilar una segunda animación sobre la de Carrd, que es de donde viene el salto de la «doble animación».

Cómo Usar los Scroll Points de Carrd para un Desplazamiento Suave Nativo

Esta es la vía por defecto. Es gratis en todos los planes de Carrd, incluido el Free (3 sitios), y no necesita elemento Embed. Los Scroll Points son simples elementos Control.

  • Añade un elemento Control de tipo Scroll Point donde deba quedar el punto enlazable
  • Apunta cualquier botón o enlace a él con #name
  • Enlaza desde fuera con yourdomain.com/#name, o usa URLs especiales del estilo scrollpoint:next

Apto para el plan gratis

Los Scroll Points y los Section Breaks son elementos Control. No hace falta un plan Pro. Documentación: usar Scroll Points.

Paso 1: Añade un Elemento Control de Tipo Scroll Point

  1. En el editor de Carrd, haz clic en + (Add Element)
  2. Elige Control
  3. Pon Type en Scroll Point
  4. Nómbralo solo con letras minúsculas, números y guiones: signup, pricing, contact
  5. Colócalo exactamente donde deba quedar el punto enlazable, normalmente justo encima de un encabezado

La restricción de minúsculas es real. Carrd pasa el hash a minúsculas antes de compararlo e ignora cualquier hash con caracteres que no sean letras, números y guiones, así que #sign up o #sign_up no resolverán. Si luego no encuentras un nombre, abre More Actions → Elements… (el Panel de Elementos añadido en agosto de 2026) para ver una lista de todos los elementos de la página.

Los Scroll Points publicados también llevan los atributos data-scroll-behavior (default, center, previous), data-scroll-offset y data-scroll-speed, y el JS de Carrd lee los tres. La velocidad va de 1 a 5 y corresponde a 1250, 1000, 750 (el valor por defecto), 500 y 250 ms. El offset se suma a la posición de aterrizaje, en unidades del tamaño de fuente raíz de la página. Si los ajustes de tu Scroll Point exponen velocidad u offset, pruébalos antes de recurrir al código.

Paso 2: Enlázalo con #name

Cualquier campo URL de Carrd acepta el hash:

Verifica: publica el sitio, haz clic en el enlace y observa dos cosas. El hash de la URL debería cambiar a #pricing, y la página debería deslizarse en lugar de teletransportarse. Si la URL no cambia, el enlace está mal. Si la URL cambia pero la página salta al instante, estás apuntando a una Sección, no a un Scroll Point.

Paso 3: Enlaces Profundos y URLs Especiales scrollpoint:

Los Scroll Points funcionan como anclajes reales desde fuera de la página. Comparte https://yourdomain.com/#pricing en un email o una publicación social y Carrd se desplazará hasta el punto al cargar.

Para one-pagers secuenciales, Carrd también acepta URLs especiales (ver los tipos de URL en la documentación):

  • scrollpoint:next - siguiente Scroll Point hacia abajo
  • scrollpoint:previous - el anterior hacia arriba
  • scrollpoint:first - primer Scroll Point
  • scrollpoint:last - el último

Son prácticas en botones de «Siguiente sección» al final de cada bloque.

Verifica: abre yourdomain.com/#pricing en una ventana de incógnito nueva. Deberías aterrizar desplazado hasta el bloque de precios con el hash visible en la barra de direcciones.

Modo de fallo: una errata en el nombre falla sin dar error. Carrd simplemente vuelve a la sección de inicio. Comprueba la escritura exacta en el Panel de Elementos antes de perseguir otras causas.

Requisitos Previos: Planes de Carrd y el Elemento Embed

Las opciones de código de abajo (2, 3, 5 y el botón suave de la 6) pegan código personalizado, y el código personalizado necesita el elemento Embed. Ahí es donde Carrd restringe las funciones. Los precios de abajo son de carrd.co/pro a fecha de septiembre de 2026.

Función Plan necesario Coste
Scroll Points, Section Breaks Cualquiera, incluido Free 0 $
Elemento Embed (código personalizado) Pro Standard y superior 19 $/año, 10 sitios
Advanced Settings (IDs de elementos fijos, Events) Pro Plus y superior 49 $/año, 25 sitios

Lista completa de planes por si necesitas más sitios: Free (3 sitios), Pro Lite a 9 $/año (3 sitios), Lite 10 a 14 $/año, Lite 25 a 29 $/año, Pro Standard a 19 $/año (10 sitios, incluye embeds, widgets, formularios y analítica), Pro Plus a 49 $/año (25 sitios, añade Advanced Settings, Events, redirecciones y protección con contraseña), Plus 50 a 89 $/año, Plus 100 a 159 $/año. Consulta la comparativa de planes de Carrd en nuestra reseña de Carrd.co si quieres una segunda opinión antes de pagar.

Regla de decisión: empieza en Free con los Scroll Points. Sube a Carrd Pro Standard (19 $/año) solo cuando de verdad necesites código personalizado. Pro Plus (49 $/año) solo merece la pena por los Advanced Settings y los Events.

Comparar planes de Carrd
  • Una cuenta de Carrd (cualquier plan para los Scroll Points nativos, Pro Standard+ para las opciones con código)
  • Un sitio publicado sobre el que probar - los embeds no hacen nada en el editor
  • La altura de tu encabezado fijo en píxeles, si tienes uno
  • 10 minutos y una pestaña del navegador con las dev tools abiertas

Restricciones por plan

Scroll Points y Section Breaks: gratis. El elemento Embed (todas las opciones de código de abajo): Pro Standard a 19 $/año. Advanced Settings con IDs de elementos fijos y eventos On Click: Pro Plus a 49 $/año.

El Flujo del Embed, una Sola Vez

Para cada opción de código de abajo:

  1. Haz clic en + (Add Element) → Embed
  2. Type: Code
  3. Style: Hidden
  4. Location: Head, Body Top o Body End (la documentación sobre incrustar código personalizado enumera los tres)
Elemento Embed de Carrd con Type en Code y Style en Hidden; usa Head para snippets de solo estilo y Body End para marcado y scripts

Convención de ubicación usada en esta guía:

  • Snippets de solo <style> → Hidden, Head
  • Cualquier cosa con <div>, <button> o <script> → Hidden, Body End

Nada se renderiza en el editor

Los embeds no muestran nada en el editor de Carrd. Tienes que publicar el sitio para verlos funcionar. Esta es la razón número uno del «mi desplazamiento suave no hace nada». Estás previsualizando en el sitio equivocado.

Si nunca has usado un embed Hidden antes, el tutorial de la ventana modal emergente de Carrd recorre el mismo flujo para otra función, y el alternador de modo oscuro de Carrd es otra personalización basada en embed de la que merece la pena copiar patrones. Un aviso de cookies es otro ejemplo de embed Hidden si quieres más práctica.

Opción 1: CSS scroll-behavior (Sáltatelo en Carrd)

El clásico de una línea, html { scroll-behavior: smooth; }, es el snippet que la mayoría de los tutoriales antiguos de Carrd reparten, a menudo con scroll-padding-top para un encabezado fijo. En un sitio Carrd actual empeora el desplazamiento. Lo probé contra una página Carrd real publicada antes de reescribir esta sección.

Carrd mueve la página con su propio bucle de animación y llama a window.scroll() una vez por frame. Con scroll-behavior: smooth activado, el navegador convierte cada una de esas llamadas en un nuevo desplazamiento suave propio, así que la página apenas se mueve durante la mayor parte de la animación de 750 ms de Carrd y luego pega un tirón hasta el destino. En mi prueba el mismo salto de Scroll Point tardó aproximadamente el doble y empezó con una pausa visible.

scroll-padding-top tampoco ayuda. Carrd se desplaza a coordenadas que calcula él mismo, y un Scroll Point no tiene id al que el navegador pueda saltar, así que el padding nunca se aplica a los enlaces de Scroll Point ni de Sección.

Quítala si ya la tienes

Si un embed antiguo de tu sitio contiene html { scroll-behavior: smooth; }, borra esa regla, o el embed entero si es lo único que contiene. Los Scroll Points nativos se deslizan mejor sin ella.

Para una compensación de encabezado fijo, usa el offset del Scroll Point descrito en el Paso 1, o el valor headerOffset de la Opción 2.

Verifica: después de quitar la regla, publica y haz clic en un enlace de Scroll Point. El deslizamiento debería empezar de inmediato en lugar de atascarse.

Opción 2: Velocidad de Desplazamiento Personalizada con JavaScript

Recurre a esto solo cuando la velocidad nativa no encaje en tu diseño. Te da un control de duración y una curva de easing. Sustituye a los dos scripts casi idénticos que traían las versiones anteriores de este artículo: un solo script ahora cubre velocidad y offset.

html
<script>
(function() {
  const scrollDuration = 800;           // ms
  const headerOffset = 80;              // sticky header height in px
  const prefersReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;

  function easeInOutQuad(t) { return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t; }

  function smoothScroll(target) {
    const start = window.pageYOffset;
    const end = target.getBoundingClientRect().top + start - headerOffset;
    const distance = end - start;
    if (prefersReduced || distance === 0) { window.scrollTo(0, end); return; }
    let startTime = null;
    function animate(now) {
      if (!startTime) startTime = now;
      const progress = Math.min((now - startTime) / scrollDuration, 1);
      window.scrollTo(0, start + distance * easeInOutQuad(progress));
      if (progress < 1) requestAnimationFrame(animate);
    }
    requestAnimationFrame(animate);
  }

  // Carrd's own click handler sits on window, so stopping the event here
  // keeps Carrd from starting a second animation for the same link.
  document.addEventListener('click', function(e) {
    const link = e.target.closest('a[href^="#"]');
    if (!link) return;
    const name = link.getAttribute('href').slice(1).toLowerCase();
    if (!/^[a-z0-9-]+$/.test(name)) return;
    const point = document.querySelector('[data-scroll-id="' + name + '"]');
    if (!point) return; // Section link: Carrd switches sections itself
    const section = point.closest('section');
    if (section && section.classList.contains('inactive')) return;
    e.preventDefault();
    e.stopPropagation();
    history.pushState(null, '', '#' + name);
    smoothScroll(point);
  });
})();
</script>

Pégalo en un elemento Embed con Code, Hidden, Body End. No en Head. El artículo antiguo decía Head, lo cual era incorrecto para scripts como este.

Configuración:

  • scrollDuration = 800 - milisegundos para el desplazamiento completo. 600 se siente ágil, 800 es el valor por defecto aquí, de 1000 a 1200 se siente lento y cinematográfico.
  • headerOffset = 80 - ponlo a 0 si no tienes encabezado fijo. La Opción 3 cubre cómo ajustarlo.

El script solo toma el control de los enlaces que apuntan a un Scroll Point en la sección que estás viendo. Maneja el clic antes de que lo vea el propio manejador de Carrd, actualiza él mismo el hash de la URL y ejecuta una animación. Los enlaces de Sección, y los Scroll Points que viven en una sección oculta, siguen pasando por Carrd, porque Carrd tiene que cambiar de sección primero.

Un solo dueño del desplazamiento

Carrd ya se desplaza suavemente hasta los Scroll Points, así que cualquier script personalizado tiene que impedir que Carrd anime el mismo clic. La versión anterior de este snippet escuchaba hashchange y corría en paralelo a Carrd. En una página Carrd real funcionaba en el primer clic, pero un segundo clic en el mismo enlace dejaba ganar a la animación de Carrd y perdía la compensación del encabezado. Esta versión detiene el clic en su lugar. Quita también cualquier regla html { scroll-behavior: smooth; } (ver Opción 1), o ralentizará igualmente esta animación.

Verifica: publica, haz clic en un enlace de Scroll Point y luego haz clic de nuevo en el mismo enlace inmediatamente. Los clics sobre el mismo enlace hacen que Carrd vuelva a disparar su manejador de hash, así que esta es la forma más rápida de sacar a la luz animaciones apiladas. Mira la consola del navegador por errores mientras estás ahí.

Modos de fallo:

  • Se atasca o anima dos veces - otro embed o una regla scroll-behavior: smooth olvidada también está desplazando. Quítala
  • Nada se desplaza - errata en el nombre del Scroll Point. Abre More Actions → Elements… y copia el nombre exacto
  • Aterriza en el sitio equivocado - eso es un problema de offset, ve a la Opción 3

Opción 3: Desplazamiento Suave con Compensación de Encabezado Fijo

Esta no es un segundo script. El snippet de la Opción 2 ya lleva la compensación integrada. Pon headerOffset a la altura de tu encabezado fijo en píxeles.

Configuración Ajuste
Sin encabezado fijo const headerOffset = 0;
Encabezado fijo de altura fija const headerOffset = 80; (ajústalo a tu encabezado)
La altura del encabezado varía mídela (abajo)

Si la altura de tu encabezado difiere entre escritorio y móvil, fijar un número aterrizará mal en uno de ellos. Mídela en su lugar:

js
const headerOffset = (document.querySelector('header') || {}).offsetHeight || 80;

Pon eso en lugar del const headerOffset = 80; fijo. Si tu elemento fijo no es una etiqueta header, ajusta el selector a la clase que Carrd o tu tutorial de encabezado fijo le haya dado.

Por qué existe esta opción: el offset propio de Carrd (data-scroll-offset) es un valor fijo por Scroll Point, y scroll-padding-top no se aplica a desplazamientos que van a coordenadas explícitas (ver Opción 1). Un encabezado que cambia de altura necesita el offset medido en código.

Vía de escape de Pro Plus

En Pro Plus, Advanced Settings expone Events, incluido On Click en Buttons y Links. Para un único CTA que necesite desplazamiento personalizado, ejecutar tu función de scroll desde un evento On Click es más limpio que interceptar cada cambio de hash de la página. Ver Advanced Settings. Los IDs de elementos fijos están detrás de la misma barrera de Pro Plus según la documentación, otra razón por la que los Scroll Points son el mejor mecanismo de anclaje.

Verifica: con tu encabezado totalmente expandido (abre el menú móvil si lo hace más alto), haz clic hacia una sección cerca del final de una página larga. El encabezado debería quedar justo debajo del encabezado fijo.

Modos de fallo: seguir quedándose corto o pasarse significa que headerOffset es incorrecto para el breakpoint actual. Funciona en escritorio pero mal en móvil significa que la altura del encabezado difiere y necesitas la versión medida.

Opción 4: Transiciones de Sección con la Animación On Section Change

Si tu sitio está construido con secciones de Carrd, no tienes un problema de desplazamiento. Tienes un problema de transición. Los enlaces de sección muestran y ocultan secciones enteras como si fueran páginas. Lo «suave» que los visitantes esperan aquí es un fundido entre secciones, y Carrd lo trae integrado.

Primero, el montaje (configurar una sección en la documentación):

  1. Add Element (+) → Control → Type: Section Break
  2. Nómbralo (work, pricing) con la misma regla de minúsculas
  3. Enlázalo con #work
  4. Enlaza externamente con yourdomain.com/#work
  5. Las URLs especiales section:next, section:previous, section:first, section:last funcionan igual que las de scrollpoint:

Luego la transición: selecciona el elemento Page, abre la pestaña Animation y elige un efecto «On Section Change». Carrd anima el cambio de forma nativa. Un sitio demo de Carrd publicado inspeccionado en septiembre de 2026 traía transition: opacity 0.5s ease-in-out como valor por defecto, lo cual es una observación, no un valor documentado de especificación.

Los Section Breaks son elementos Control, así que esto se queda en el plan gratis.

Scroll Points vs. Secciones

Los Scroll Points se desplazan dentro de la sección que estás viendo. Los Section Breaks cambian qué sección es visible. Si la gente se queja de que «el desplazamiento suave no funciona» en tu sitio, normalmente tienen enlaces de sección y lo que quieren es esta opción.

Scroll Point

Úsalo cuando: todo vive en una única página visible y quieres que el viewport se deslice hasta un bloque.

DOM: [data-scroll-id="signup"]

Enlace: #signup - se desplaza suavemente (nativo, gratis)

Control de animación: el ajuste de velocidad del Scroll Point (cinco niveles). Para easing personalizado, usa la Opción 2.

Section

Úsalo cuando: tu sitio Carrd está dividido en secciones y la navegación se siente como moverse entre páginas.

DOM: id="work-section"

Enlace: #work - muestra/cambia esa sección con un fundido

Control de animación: elemento Page → pestaña Animation → On Section Change

Verifica: publica y haz clic en #work desde dos secciones distintas. Luego haz clic en #work estando ya en work. Ese segundo clic es la peculiaridad: se desplaza suavemente de vuelta a la parte superior de la página. Espéralo en lugar de depurarlo.

Modo de fallo: «el desplazamiento suave no funciona en mis enlaces de sección» - correcto, no funcionará. Las secciones cambian; no se desplazan. Usa la animación On Section Change de esta opción, o reconstruye la página alrededor de Scroll Points si de verdad quieres un one-pager con scroll.

Opción 5: Barra de Progreso de Desplazamiento

Una barra de color en la parte superior que muestra cuánto han bajado los visitantes por la página. Independiente, combina con cualquier opción de desplazamiento de arriba.

html
<style>
  .scroll-progress {
    position: fixed;
    top: 0;
    left: 0;
    width: 0%;
    height: 3px;
    background: #4f46e5;
    z-index: 99999;
    transition: width 0.1s;
  }
</style>

<div class="scroll-progress" id="scrollProgress"></div>

<script>
(function() {
  const progressBar = document.getElementById('scrollProgress');

  function updateProgress() {
    const scrollTop = window.pageYOffset;
    const docHeight = document.documentElement.scrollHeight - window.innerHeight;

    if (docHeight > 0) {
      progressBar.style.width = (scrollTop / docHeight) * 100 + '%';
    }
  }

  window.addEventListener('scroll', updateProgress);
  updateProgress();
})();
</script>

Cambia background: #4f46e5 por el color de tu marca.

Ubicación

Este snippet contiene un <div> y un <script>, así que va en un embed Hidden en Body End, no en Head. Mantener todo el snippet en un solo embed Body End es más simple que repartir estilo y marcado entre dos embeds.

Verifica: publica (el editor no muestra nada), desplázate despacio y la barra debería crecer del 0 % al 100 % a lo ancho de la página.

Modos de fallo: barra invisible, sospecha una colisión de z-index con tu encabezado fijo - la barra usa 99999, súbelo o baja el encabezado. Barra clavada en 0, abre la consola del navegador; un error de JS mata updateProgress. Que no se vea nada en el editor es el comportamiento esperado.

Opción 6: Volver Arriba en Carrd (browser:top Nativo vs Botón Suave)

Dos vías para devolver a los visitantes a la parte superior de un one-pager largo.

Enlace nativo (gratis)

Pon la URL de cualquier enlace a browser:top. Es un tipo de URL documentado que significa «desplazarse a la parte superior de la página actual». Cero código, funciona en Free.

El JS publicado de Carrd tiene una función de ir arriba (_scrollToTop) que usa la misma animación de 750 ms con easing que los Scroll Points, así que espera un deslizamiento en lugar de un salto. Asocié esa función a browser:top por nombre en el JS en lugar de hacer clic en un enlace browser:top real, así que compruébalo en tu propio sitio.

Botón suave (Pro Standard+)

Un botón con estilo que desliza hacia arriba. Necesita el elemento Embed, así que Pro Standard a 19 $/año. Código completo abajo. El botón aparece tras 300 px de desplazamiento y llama a scrollTo({top: 0, behavior: 'smooth'}) al hacer clic.

Esta es la vía animada de volver arriba en Carrd.

El snippet del botón suave, en un Embed con Code, Hidden, Body End:

html
<style>
  .back-to-top {
    position: fixed;
    bottom: 30px;
    right: 30px;
    width: 50px;
    height: 50px;
    background: #4f46e5;
    color: white;
    border: none;
    border-radius: 50%;
    cursor: pointer;
    font-size: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    visibility: hidden;
    transition: all 0.3s ease;
    z-index: 1000;
    box-shadow: 0 4px 15px rgba(0,0,0,0.2);
  }

  .back-to-top.visible {
    opacity: 1;
    visibility: visible;
  }

  .back-to-top:hover {
    background: #4338ca;
    transform: translateY(-3px);
  }
</style>

<button class="back-to-top" id="backToTop" aria-label="Back to top">↑</button>

<script>
  const backToTopButton = document.getElementById('backToTop');

  // Show/hide button based on scroll position
  window.addEventListener('scroll', function() {
    if (window.pageYOffset > 300) {
      backToTopButton.classList.add('visible');
    } else {
      backToTopButton.classList.remove('visible');
    }
  });

  // Smooth scroll to top
  backToTopButton.addEventListener('click', function() {
    window.scrollTo({
      top: 0,
      behavior: 'smooth'
    });
  });
</script>
Elemento Embed de Carrd con Code, estilo Hidden y ubicación Body End para el marcado y el script del botón de volver arriba

El aria-label="Back to top" hace trabajo de accesibilidad para lectores de pantalla y ya está en el snippet. Consérvalo si le cambias el estilo. Si tu SO tiene «reducir movimiento» activado y el salto se siente instantáneo, es behavior: 'smooth' siendo anulado a nivel de plataforma, no un bug en el código.

Verifica: publica, baja más de 300 px y confirma que el botón aparece con un fundido. Haz clic en él y observa el deslizamiento hasta arriba.

Modos de fallo: el botón nunca aparece - el <button> más el <script> están en Head en lugar de Body End, o un error de JS detuvo el listener. El salto es instantáneo, no suave - comprueba que behavior: 'smooth' sigue en tu copia y que el SO no está forzando el movimiento reducido.

Para una versión con estilo más completa, con manejo del foco de teclado y opciones de etiqueta, usa el tutorial completo del botón de volver arriba para Carrd.

Configurar los Enlaces de Anclaje en la Navegación de Carrd

Conectar la navegación a los anclajes es el mismo trabajo independientemente del método de desplazamiento que hayas elegido.

  • Cada URL de enlace empieza con # y coincide exactamente con el nombre del Scroll Point o de la Sección
  • Los nombres van en minúsculas, solo letras más números más guiones
  • Los destinos de Scroll Point usan #signup; los de Sección usan #work
  • Prueba cada elemento de navegación una vez en escritorio y otra en un teléfono después de publicar

Tres estilos de navegación cubren la mayoría de los sitios Carrd:

  1. Botones y enlaces integrados - pon el campo URL a #pricing. Nada más que hacer.

  2. Una barra de navegación móvil responsive de Carrd - los anclajes se comportan igual, pero los encabezados móviles suelen ser más altos o más bajos que en escritorio. Si usas un offset de Scroll Point o headerOffset, pruébalo específicamente en los breakpoints móviles.

  3. Widgets de terceros de menú flotante o navegación lateral - mismas URLs #name. Estos van por embed, así que recuerda que necesitan Pro Standard y solo se renderizan en el sitio publicado.

Verifica: después de publicar, haz clic en cada elemento de navegación una vez en un navegador de escritorio y otra en un teléfono. Observa cómo el hash de la URL cambia en cada clic.

Modos de fallo: un elemento salta al instante a una vista distinta «tipo página» - es un enlace de Sección, ver la Opción 4. Todo funciona en escritorio pero aterriza corto en móvil - la altura del encabezado en ese breakpoint no coincide con tu offset de Scroll Point o headerOffset.

Accesibilidad: Respeta prefers-reduced-motion

Una línea de respeto

No todo el mundo quiere que la página se mueva bajo sus pies. El desplazamiento animado provoca náuseas a algunos visitantes con trastornos vestibulares, y lo declaran a nivel de SO. Respétalo.

La animación nativa de Scroll Point de Carrd no comprueba este ajuste (no hay chequeo de prefers-reduced-motion en su JS publicado), así que la vía nativa siempre anima. El script de la Opción 2 sí lo comprueba, arriba del todo:

js
const prefersReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;

Cuando eso es true, el script de la Opción 2 salta directo al destino con window.scrollTo(0, end) y se salta el bucle de animación. El soporte es amplio: Chrome 74+, Firefox 63+, Safari 10.1+ (datos de MDN, septiembre de 2026).

Dos cosas más ya que estás: conserva el aria-label en el botón de volver arriba de la Opción 6, y no dependas solo de la animación de desplazamiento para decirle a los visitantes dónde están. Acompáñala de una estructura de encabezados visible o de resaltado en la navegación.

Verifica: con el script de la Opción 2 instalado, activa «Reducir movimiento» en la accesibilidad de macOS o en los ajustes de animaciones de Windows. Recarga el sitio publicado y haz clic en un enlace de Scroll Point. Debería saltar al instante, sin errores de consola y sin frames de animación a medias.

Solución de Problemas del Desplazamiento Suave en Carrd

Prueba en el sitio publicado, no en el editor

Los embeds no renderizan nada en el editor de Carrd. Si tu desplazamiento suave «no funciona», publica primero y luego abre la URL en vivo (incógnito evita la caché vieja) antes de cambiar cualquier código.

No pasa nada en el editor ni en la vista previa

Los embeds se eliminan de la salida del editor a propósito. La documentación de Carrd dice que hay que publicar para ver el código personalizado en acción. Publica y luego prueba en la URL real.

Doble animación o saltos con un script personalizado

Carrd ya se desplaza suavemente hasta los Scroll Points. Si tu script también anima en hashchange, dos animaciones se apilan. Elimina un dueño del desplazamiento: o borras el script personalizado y usas los Scroll Points nativos, o conservas el script y asumes que ahora es él quien anima. Prueba con dos clics rápidos en el mismo enlace, ya que los clics repetidos sobre el mismo hash vuelven a disparar el manejador de Carrd a propósito.

Los enlaces no funcionan o saltan al sitio equivocado

Los nombres de los Scroll Points deben ser letras minúsculas, números y guiones. Carrd pasa el hash a minúsculas antes de compararlo, pero un enlace con un espacio, un guion bajo o una errata (#sign_up, #pricng) nunca llega al Scroll Point. Carrd vuelve a la sección de inicio en su lugar. Abre More Actions → Elements… (Panel de Elementos, añadido en agosto de 2026) y copia los nombres exactos en lugar de escribirlos de memoria.

El contenido se esconde detrás de mi encabezado fijo

La compensación es demasiado pequeña: ya sea el propio offset del Scroll Point o el headerOffset de la Opción 2. scroll-padding-top no lo arreglará en Carrd (ver Opción 1). Las alturas del encabezado en móvil suelen diferir de las de escritorio. La Opción 3 muestra la versión medida con offsetHeight que se adapta por viewport.

Hacer clic dos veces en el mismo enlace se comporta raro

Peculiaridad esperada. Carrd reescribe el mismo hash (history.replaceState y luego location.replace) para volver a disparar su propio manejador, así que el segundo clic es un evento de navegación real. Los listeners personalizados pueden apilar una animación extra encima. Es una molestia cosmética, no una pérdida de datos.

Los enlaces de sección no son suaves en absoluto

Nunca lo serán. Los enlaces de sección cambian las secciones visibles con un fundido; no se desplazan. Si la sección ya está activa, Carrd se desplaza suavemente de vuelta arriba en su lugar. Para cambios de sección animados usa la Opción 4, o reconstruye con Scroll Points si quieres desplazamiento de verdad.

La velocidad de desplazamiento no se siente bien

Eso es scrollDuration en la Opción 2, en milisegundos. De 600 a 1000 se siente natural para la mayoría. La velocidad nativa de Carrd tiene cinco niveles (de 250 a 1250 ms, ver Paso 1). Si ninguno encaja, o quieres una curva de easing distinta, la Opción 2 es la solución.

Quitar el Desplazamiento Suave (Reversión)

Deshacer es trivial en Carrd, ya que todo son embeds por sitio y elementos de control. Sin restos de CSS o JS del lado de Carrd.

  • Código personalizado: borra el elemento Embed (o solo su código). Recarga el sitio publicado y vuelves al comportamiento nativo.
  • Un Scroll Point o Section Break: borra el elemento Control. Pero actualiza antes los enlaces #name que apunten a él, o esos enlaces quedarán muertos. El orden importa: arregla los enlaces de navegación, luego borra el destino.
  • Una regla scroll-behavior: smooth olvidada: bórrala de su embed Head (ver Opción 1). Nada más que limpiar.

Como revertir es tan barato, no hay razón para no probar una opción de código en un dominio de staging publicado antes que en tu dominio principal.

Prueba Carrd.co

Conclusión

La regla de decisión, en orden:

  1. Scroll Points para la navegación por anclajes. Gratis, desplazamiento suave nativo de Carrd, cero código.
  2. Velocidad y offset del Scroll Point si el deslizamiento nativo es demasiado rápido, demasiado lento o aterriza bajo un encabezado fijo. Sáltate el CSS de la Opción 1; ralentiza a Carrd.
  3. JavaScript de las Opciones 2 y 3 solo para easing personalizado o un offset que tenga que seguir la altura de tu encabezado.
  4. Opción 4 si tienes un sitio por secciones y quieres cambios de sección animados en lugar de desplazamiento.

Combina cualquiera de ellas con un menú flotante o una navegación lateral para una navegación one-pager completa.

Si quieres ir más lejos con el layout de Carrd, carrdme.com tiene plugins que merecen un vistazo, incluido un plugin de pestañas para Carrd para organizar contenido largo y un plugin de acordeón para Carrd para secciones de FAQ.

Prueba Carrd.co Plugin de pestañas de Carrd