La propiedad scroll-margin de CSS es una de esas en las que he pensado desde hace años como una que debería existir. Y no sé cómo no he dado con ella hasta ahora, a pesar de que está disponible desde el lanzamiento de CSS3. Gran descubrimiento, aunque sea tardío.
scroll-margin
permite definir el margen de un elemento respecto a los límites relativos del elemento que los contiene. Quién no ha necesitado esto cuando se utilizan anchors y se crea un menú con enlaces que llevan a distintas secciones –distintas alturas en el scroll– de la página actual.
Para usarlo hay que aplicar tres propiedades, una al elemento que contiene las secciones, y otras dos a cada una de las secciones:
#container { overflow-y: scroll; scroll-snap-type: y mandatory; } .scrollable-item { scroll-snap-align: start; scroll-margin: 20px; }
Y el HTML:
<div id="container"> <div id="section-1" class="scrollable-item"></div> <div id="section-2" class="scrollable-item"></div> <div id="section-3" class="scrollable-item"></div> </div>
Visto en el infinito manual de W3School.