CSS - scroll-margin Property



CSS scroll-margin Property

CSS scroll-margin is a shorthand property that defines the margin of an element within the snap area.

A scroll snap area is the area of a scrolling container that an element will snap to when the user scrolls.

Possible Values

  • <length> − An outset from the corresponding edge of the scroll container. A length value is a numeric value, such as px, em.

Applies to

All the HTML elements.

DOM Syntax

object.style.scrollMargin = "length";

The following diagram demonstrates the scroll margin structure for reference:

scroll margin structure

CSS Scroll Margin - Zero value

The following example demonstrates how to remove the space around the scrolling sections by setting the scroll-margin property to 0 −

<html>
<head>
<style>
   .scroll-container {
      width: 300px;
      height: 200px;
      overflow-x: hidden;
      overflow-y: scroll;
      scroll-snap-type: y mandatory;
   }
   .scrolling-section1,
   .scrolling-section2,
   .scrolling-section3 {
      width: 300px;
      height: 200px;
      scroll-snap-align: start;
   }
   .scrolling-section1 {
      background-color: rgb(220, 235, 153);
      scroll-margin: 0;
   }
   .scrolling-section2 {
      background-color: rgb(230, 173, 218);
      scroll-margin: 0;
   }
   .scrolling-section3 {
      background-color: rgb(119, 224, 210);
      scroll-margin: 0;
   }
</style>
</head>
<body>
   <h3>Scroll the content using the scrollbar arrows to see the effect.</h3>
   <div class="scroll-container">
      <div class="scrolling-section1">scroll-margin: 0</div>
      <div class="scrolling-section2">scroll-margin: 0</div>
      <div class="scrolling-section3">scroll-margin: 0</div>
   </div>
</body>
</html>

CSS Scroll Margin - Length Value

The following example demonstrates how to use the CSS scroll-margin property. When you scroll the content, you will notice that the space between the elements changes −

<html>
<head>
<style>
   .scroll-container {
      width: 300px;
      height: 200px;
      overflow-x: hidden;
      overflow-y: scroll;
      scroll-snap-type: y mandatory;
   }
   .scrolling-section1,
   .scrolling-section2,
   .scrolling-section3 {
      width: 300px;
      height: 200px;
      scroll-snap-align: start;
   }
   .scrolling-section1 {
      background-color: rgb(220, 235, 153);
      scroll-margin: 20px;
   }
   .scrolling-section2 {
      background-color: rgb(230, 173, 218);
      scroll-margin: 2em;
   }
   .scrolling-section3 {
      background-color: rgb(119, 224, 210);
      scroll-margin: 10px;
   }
</style>
</head>
<body>
   <h3>Scroll the content using the scrollbar arrows to see the effect.</h3>
   <div class="scroll-container">
      <div class="scrolling-section1">scroll-margin: 20px</div>
      <div class="scrolling-section2">scroll-margin: 2em</div>
      <div class="scrolling-section3">scroll-margin: 10px</div>
   </div>
</body>
</html>

CSS scroll-margin - Related Properties

Following is the list of CSS properties of scroll-margin:

property value
scroll-margin-top Sets top margin of the scroll snap area of an element.
scroll-margin-bottom Sets bottom margin of the scroll snap area of an element.
scroll-margin-left Sets left margin of the scroll snap area of an element.
scroll-margin-right Sets right margin of the scroll snap area of an element.
scroll-margin-block Specifies an element's margins for vertical scrolling.
scroll-margin-inline Specifies scroll margins of an element in the inline dimension.
Advertisements