Scrolling comes to Rive in the form of two constraints; one to add scrolling to overflowed content, and another to create a scroll bar. Both constraints work in conjunction with the existing layout components. We plan to provide generalized scrolling components for quicker setup in future.
To create a content scroll region, set up a hierarchy that includes:
Scroll view - the Layout that defines the area that is the scroll region
Scroll content - the Layout that contains the items to be scrolled (this is the Layout you will apply the Scroll Constraint to). The scroll amount will be determined by the size of this Layout. Typically you want to set this Layout to hug (or fixed)
Scroll items - the Layout items to be scrolled
Select your Scroll content Layout and use the add action within the constraint inspector to add a Scroll Content constraint.Once added, use the options fly-out to adjust the Scroll content properties.
This property allows you to set the percentage scroll of the content where 0% is scrolled to the top/left and 100% is scrolled to the bottom/right. This property works when the content is set to scroll in one or all directions and can be keyed on the timeline
This property allows you to set the 0 based index of the Scroll item to scroll to. This only works when scroll is set to either Vertical or Horizontal and can be keyed on the timeline.
Scroll Percent and Scroll Index both control the offset within the Scroll content area. As such, you should only set one or the other because there will be contention when both are set at the same time. For example, you should only key one of these values on a given frame in your timeline.
In order to use Scroll Percent and Scroll Index together with physical scroll dragging, you should create an empty “reset” timeline/state which you should transition to as soon as the scroll area is interacted with. One way to do this is to add a Mouse down listener to the Scroll View.
This option is on by default. When enabled, the Scroll view scrolls with a mouse wheel or trackpad, in addition to a pointer drag. Turn it off to make the Scroll view drag-only.When scroll views are nested, such as a horizontal strip inside a vertical list, each wheel or trackpad gesture scrolls the view that matches its direction. A flick that starts in the inner view keeps scrolling the inner view instead of passing to the outer one.Once you have applied your desired properties, switch to animate mode and start playback of a State Machine to preview the applied scroll constraint. You should be able to click/drag/release, or use a mouse wheel or trackpad, within the Scroll view area to manually control the scroll.
In order to scroll Lists, use the same setup as described above in Content Scrolling, but rather than adding multiple Scroll items to the Scroll content layout, you can add a single List. See Data Binding Lists for more information.There are some additional properties that apply when scrolling Lists. These will only be enabled once a List has been added to the Scroll content.
When enabled, the List will only generate Artboard components for the items currently in the Content view area. This improves performance when scrolling lists containing a large number of items. Note that virtualization can only be applied in one direction (either vertical or horizontal, not both).
To create a content bar, set up a hierarchy that includes:
Scroll Bar - the Layout that defines the area that is the scroll bar and track
Scroll Thumb - the Layout that defines the draggable scroll thumb
To create a scroll bar, select a Layout Component acting as the scroll bar thumb. From the constraints inspector, add a Scroll Bar Thumb constraint.Use the target button within the options panel to connect a scrolling Layout. As described in the Scrolling Content section above, this should be the Layout that your Scroll Constraint was applied to.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Rive","colors":{"primary":"#ffa41c","light":"#ffa41c","dark":"#ffa41c"},"logo":{"light":"https://mintcdn.com/rive/tBktbqSaEr9ZwywZ/logo/rive_top_logo_black.svg?fit=max\u0026auto=format\u0026n=tBktbqSaEr9ZwywZ\u0026q=85\u0026s=e09b8659935986a837947ae7c3b104e0","dark":"https://mintcdn.com/rive/tBktbqSaEr9ZwywZ/logo/rive_top_logo_white.svg?fit=max\u0026auto=format\u0026n=tBktbqSaEr9ZwywZ\u0026q=85\u0026s=d2ccc2c4dec459d584f578475de89248","href":"https://rive.app?utm_source=docs\u0026utm_medium=header_nav"},"favicon":"https://mintcdn.com/rive/IGEy4oJSivuQmjey/favicon_black.png?fit=max\u0026auto=format\u0026n=IGEy4oJSivuQmjey\u0026q=85\u0026s=986c81e5b82e1138420d773296030a3a","appearance":{"default":"dark"},"background":{"decoration":"grid"},"navbar":{"links":[{"href":"/tutorials/learn-rive","label":"Learn"},{"href":"/community/support","label":"Support"}],"primary":{"type":"button","label":"Get Rive","href":"https://rive.app/downloads?utm_source=docs\u0026utm_medium=header_nav"}},"footer":{"socials":{"youtube":"https://www.youtube.com/channel/UCPal2R1FxwRTPylhP_7ofEg","x":"https://twitter.com/rive_app","instagram":"https://www.instagram.com/rive.app","github":"https://github.com/rive-app","discord":"https://discord.gg/rive-app"},"links":[{"header":"Resources","items":[{"label":"Community","href":"https://community.rive.app?utm_source=docs\u0026utm_medium=footer_nav"},{"label":"Blog","href":"https://rive.app/blog?utm_source=docs\u0026utm_medium=footer_nav"},{"label":"Case Studies","href":"https://rive.app/blog/case-studies?utm_source=docs\u0026utm_medium=footer_nav"},{"label":"Marketplace","href":"https://rive.app/marketplace?utm_source=docs\u0026utm_medium=footer_nav"},{"label":"Feature Requests","href":"https://community.rive.app/c/feature-requests"}]},{"header":"Company","items":[{"label":"Careers","href":"https://rive.app/careers?utm_source=docs\u0026utm_medium=footer_nav"},{"label":"Terms of Service","href":"/docs/legal/terms-of-service"},{"label":"Acceptable Use Policy","href":"/docs/legal/acceptable-use-policy"},{"label":"Privacy Policy","href":"/docs/legal/privacy-policy"},{"label":"Your Privacy Choices","href":"https://rive.app/?cookie-settings"}]}]},"fonts":{"heading":{"family":"Tomorrow Placeholder","weight":500,"source":"https://framerusercontent.com/assets/nCpxWS6DaPlPe0lHzStXAPCo3lw.woff2","format":"woff2"}},"integrations":{"amplitude":{"apiKey":"38803036884a752b104ee4bf501e0945"},"cookies":{"key":"rive_analytics","value":"granted"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"variables":{"runtimeCurrentNameApple":"New Runtime","runtimeLegacyNameApple":"Legacy Runtime","monthlyCreditsVoyager":"$20","monthlyCreditsEnterprise":"$40","pricingCadetMonthly":"$17","pricingCadetYearly":"$108","pricingVoyagerMonthly":"$49","pricingVoyagerYearly":"$384","pricingEnterpriseYearly":"$1,440","cliAllowanceFree":"50","cliAllowanceCadet":"500","cliAllowanceVoyager":"5,000","versionWeb":"2.40.1","versionReact":"4.33.0","versionApple":"6.24.0","versionAndroid":"11.9.2","versionReactNative":"0.5.5","versionFlutter":"0.14.11","versionDevFlutter":"0.15.0-dev.4","versionUnity":"0.4.5","versionUnreal":"0.4.25","supportForm":"https://forms.rive.app/support?utm_medium=support_page","supportFormEducational":"https://forms.rive.app/education?utm_medium=support_page"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"rive","hasAudioNarration":false,"actualSubdomain":"rive","customDomains":["rive.app"],"gitSource":{"type":"github","owner":"rive-app","repo":"rive-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aecc69dc6ee43bd9a030ee4","collectionId":"9fe0a221-f3e5-455d-8b17-45fd5abbfbb1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aecc69dc6ee43bd9a030ee4"},"feedback":{"edits":true,"issues":true,"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aee68270b65ceb1ec8d6262","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"Runtimes","count":279},{"language":"default","tag":"Scripting","count":188},{"language":"default","tag":"Scripting API","count":167},{"language":"default","tag":"Editor","count":100},{"language":"default","tag":"Fundamentals","count":64},{"language":"default","tag":"GPU","count":45},{"language":"default","tag":"Design","count":32},{"language":"default","tag":"Artboards","count":25},{"language":"default","tag":"Interfaces","count":24},{"language":"default","tag":"Advanced Topics","count":22}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":"p{font-size:14px}ul li{font-size:14px}ol li{font-size:14px}.signature .code-block{border:none}.signature .code-block [data-floating-buttons=\"true\"]{display:none}.signature .code-block [data-component-part=\"code-block-root\"]{background:none;padding:0}.dark .card{background-color:var(--background-dark)!important;border-color:rgb(255 255 255 / 0.1)!important}.dark .card:hover{border-color:var(--primary-light)!important}"}],"page":{"pagePath":"editor/constraints/scroll-constraint","slug":"/editor/constraints/scroll-constraint","pageMetadata":{"title":"Scroll Constraints","description":null,"href":"/editor/constraints/scroll-constraint"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,hr:`hr`,li:`li`,p:`p`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,OptimizedImage,Tip}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Scrolling comes to Rive in the form of two constraints; one to add scrolling to overflowed content, and another to create a scroll bar. Both constraints work in conjunction with the existing layout components. We plan to provide generalized scrolling components for quicker setup in future.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`content-scrolling`,children:`Content scrolling`}),`\n`,_jsx(_components.p,{children:`To create a content scroll region, set up a hierarchy that includes:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Scroll view - the Layout that defines the area that is the scroll region`}),`\n`,_jsx(_components.li,{children:`Scroll content - the Layout that contains the items to be scrolled (this is the Layout you will apply the Scroll Constraint to). The scroll amount will be determined by the size of this Layout. Typically you want to set this Layout to hug (or fixed)`}),`\n`,_jsx(_components.li,{children:`Scroll items - the Layout items to be scrolled`}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-hierarchy.png?fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=e21a5aa701cc124d8bf026ec841b629d`,alt:`Image`,\"data-og-width\":`584`,width:`584`,\"data-og-height\":`516`,height:`516`,\"data-path\":`images/editor/scroll-content-hierarchy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-hierarchy.png?w=280\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=0fc54785ffb8c9154b4bdc7279c435f5 280w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-hierarchy.png?w=560\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=45cbdbdeb74b1e033285a8de42498c56 560w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-hierarchy.png?w=840\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=90c0fd60d0ec1802b737b1b10dd3f1de 840w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-hierarchy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=1a158f6a620fc5c07d38ff31f2475635 1100w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-hierarchy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=ce4ba493546e06dd4119055d8d1721d4 1650w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-hierarchy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=3c6481ddf892a9713abdff8a8e28eafb 2500w`}),`\n`,_jsx(_components.p,{children:`Select your Scroll content Layout and use the add action within the constraint inspector to add a Scroll Content constraint.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/1ee7adc4-4698-4f6d-a0e7-8ec73f53c492.webp?fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=126ee3c4a0d0d31671b627cdcca0c174`,alt:`Image`,\"data-og-width\":`870`,width:`870`,\"data-og-height\":`788`,height:`788`,\"data-path\":`images/editor/layouts/1ee7adc4-4698-4f6d-a0e7-8ec73f53c492.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/1ee7adc4-4698-4f6d-a0e7-8ec73f53c492.webp?w=280\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=8c71924712c6b36be2421d8eb0289eaf 280w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/1ee7adc4-4698-4f6d-a0e7-8ec73f53c492.webp?w=560\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=01355f0d0b2d7b77f34fb92829891e07 560w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/1ee7adc4-4698-4f6d-a0e7-8ec73f53c492.webp?w=840\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=6928120bc770193343b330402451cf8b 840w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/1ee7adc4-4698-4f6d-a0e7-8ec73f53c492.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=5e04ab88672dfed00eca02aee2eaab72 1100w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/1ee7adc4-4698-4f6d-a0e7-8ec73f53c492.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=c4b7e552a6d6484c7e8f37fc02f3b046 1650w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/1ee7adc4-4698-4f6d-a0e7-8ec73f53c492.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=53d2eb811d7539e8d0226f1a2696f277 2500w`}),`\n`,_jsx(_components.p,{children:`Once added, use the options fly-out to adjust the Scroll content properties.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-properties.png?fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=2e8d2660514ce95ebdc8c7ce042a1501`,alt:`Image`,\"data-og-width\":`1056`,width:`1056`,\"data-og-height\":`768`,height:`768`,\"data-path\":`images/editor/scroll-content-properties.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-properties.png?w=280\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=3239b27e011fd642cd1185d590e71e9a 280w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-properties.png?w=560\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=625195b6666f7c64f31d37184bc454b2 560w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-properties.png?w=840\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=e8f6b1a2f2e86d4d68310e052c96b1a3 840w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-properties.png?w=1100\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=a14a09fce6d72adea613790a91a1d814 1100w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-properties.png?w=1650\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=30b4d1f2a1173ed8a5466f0c8c735477 1650w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-content-properties.png?w=2500\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=412e04d61bb8b8d443cffb41d8b4cbee 2500w`}),`\n`,_jsx(Heading,{level:`4`,id:`direction`,children:`Direction`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Vertical`}),` - Only scrolls in the vertical direction`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Horizontal`}),` - Only scrolls in the horizontal direction`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`All`}),` - Scrolls in both directions`]}),`\n`,_jsx(Heading,{level:`4`,id:`scroll-percent-x/y-animatable`,children:`Scroll percent X/Y (animatable)`}),`\n`,_jsx(_components.p,{children:`This property allows you to set the percentage scroll of the content where 0% is scrolled to the top/left and 100% is scrolled to the bottom/right. This property works when the content is set to scroll in one or all directions and can be keyed on the timeline`}),`\n`,_jsx(Heading,{level:`4`,id:`scroll-index-animatable`,children:`Scroll index (animatable)`}),`\n`,_jsx(_components.p,{children:`This property allows you to set the 0 based index of the Scroll item to scroll to. This only works when scroll is set to either Vertical or Horizontal and can be keyed on the timeline.`}),`\n`,_jsx(Tip,{children:`Scroll Percent and Scroll Index both control the offset within the Scroll content area. As such, you should only set one or the other because there will be contention when both are set at the same time. For example, you should only key one of these values on a given frame in your timeline.`}),`\n`,_jsx(Tip,{children:`In order to use Scroll Percent and Scroll Index together with physical scroll dragging, you should create an empty “reset” timeline/state which you should transition to as soon as the scroll area is interacted with. One way to do this is to add a Mouse down listener to the Scroll View.`}),`\n`,_jsx(Heading,{level:`4`,id:`physics`,children:`Physics`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Elastic`}),` - An iOS style scroll with deceleration and rubber banding at the edges`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Clamped`}),` - A basic drag and drop with no physics`]}),`\n`,_jsx(Heading,{level:`4`,id:`snap`,children:`Snap`}),`\n`,_jsx(_components.p,{children:`When enabled, the scroll content will always settle with a whole item at the top/left of the scroll area.`}),`\n`,_jsx(Heading,{level:`4`,id:`wheel-/-trackpad`,children:`Wheel / Trackpad`}),`\n`,_jsx(_components.p,{children:`This option is on by default. When enabled, the Scroll view scrolls with a mouse wheel or trackpad, in addition to a pointer drag. Turn it off to make the Scroll view drag-only.`}),`\n`,_jsx(_components.p,{children:`When scroll views are nested, such as a horizontal strip inside a vertical list, each wheel or trackpad gesture scrolls the view that matches its direction. A flick that starts in the inner view keeps scrolling the inner view instead of passing to the outer one.`}),`\n`,_jsx(_components.p,{children:`Once you have applied your desired properties, switch to animate mode and start playback of a State Machine to preview the applied scroll constraint. You should be able to click/drag/release, or use a mouse wheel or trackpad, within the Scroll view area to manually control the scroll.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`list-scrolling`,children:`List scrolling`}),`\n`,_jsxs(_components.p,{children:[`In order to scroll Lists, use the same setup as described above in Content Scrolling, but rather than adding multiple Scroll items to the Scroll content layout, you can add a single List. See `,_jsx(_components.a,{href:`/editor/data-binding/lists`,children:`Data Binding Lists`}),` for more information.`]}),`\n`,_jsx(_components.p,{children:`There are some additional properties that apply when scrolling Lists. These will only be enabled once a List has been added to the Scroll content.`}),`\n`,_jsx(Heading,{level:`4`,id:`virtualize`,children:`Virtualize`}),`\n`,_jsx(_components.p,{children:`When enabled, the List will only generate Artboard components for the items currently in the Content view area. This improves performance when scrolling lists containing a large number of items. Note that virtualization can only be applied in one direction (either vertical or horizontal, not both).`}),`\n`,_jsx(Heading,{level:`4`,id:`carousel`,children:`Carousel`}),`\n`,_jsx(_components.p,{children:`When enabled, the List will scroll endlessly in either direction. In order to use Carousel mode, Virtualize must be enabled.`}),`\n`,_jsx(_components.hr,{}),`\n`,_jsx(Heading,{level:`2`,id:`creating-a-scroll-bar`,children:`Creating a scroll bar`}),`\n`,_jsx(_components.p,{children:`To create a content bar, set up a hierarchy that includes:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Scroll Bar - the Layout that defines the area that is the scroll bar and track`}),`\n`,_jsx(_components.li,{children:`Scroll Thumb - the Layout that defines the draggable scroll thumb`}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-bar-hierarchy.png?fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=dd2d0a3b46839040ce6354e49d098caf`,alt:`Image`,\"data-og-width\":`588`,width:`588`,\"data-og-height\":`186`,height:`186`,\"data-path\":`images/editor/scroll-bar-hierarchy.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-bar-hierarchy.png?w=280\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=b7381945a82ebda9f2f497144c96a31b 280w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-bar-hierarchy.png?w=560\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=99a33f92fca7152ccf051b804f7f447e 560w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-bar-hierarchy.png?w=840\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=bb8295f283cfeaddec8fb5cf00a90609 840w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-bar-hierarchy.png?w=1100\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=bfc741192ffa36235a81c4cbb74d6b9d 1100w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-bar-hierarchy.png?w=1650\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=5107f9930d1dd2d2532a62616cd8f8a3 1650w, https://mintcdn.com/rive/IMrXM-oXoMvrTV9Y/images/editor/scroll-bar-hierarchy.png?w=2500\u0026fit=max\u0026auto=format\u0026n=IMrXM-oXoMvrTV9Y\u0026q=85\u0026s=fd64bd47fa69996d174c346efcb46a3e 2500w`}),`\n`,_jsx(_components.p,{children:`To create a scroll bar, select a Layout Component acting as the scroll bar thumb. From the constraints inspector, add a Scroll Bar Thumb constraint.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/0c295a18-6d04-471d-ba86-c74e4988c4a9.webp?fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=c484e400fd672a537734d7a24177f51d`,alt:`Image`,\"data-og-width\":`1488`,width:`1488`,\"data-og-height\":`1312`,height:`1312`,\"data-path\":`images/editor/layouts/0c295a18-6d04-471d-ba86-c74e4988c4a9.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/0c295a18-6d04-471d-ba86-c74e4988c4a9.webp?w=280\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=8542f88d90d30d8a4f8167e8e9bb9a24 280w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/0c295a18-6d04-471d-ba86-c74e4988c4a9.webp?w=560\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=690f14980b2d3d167b91c3e3695c4672 560w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/0c295a18-6d04-471d-ba86-c74e4988c4a9.webp?w=840\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=16058fe7045b21d4d08d72fad28bc6f1 840w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/0c295a18-6d04-471d-ba86-c74e4988c4a9.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=aeb0c47546d3edcc4634720f85522cf4 1100w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/0c295a18-6d04-471d-ba86-c74e4988c4a9.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=932fb4f0f6967bcfe60c39679e670500 1650w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/0c295a18-6d04-471d-ba86-c74e4988c4a9.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=72807dcac0092632af307dcac8a5dbd1 2500w`}),`\n`,_jsx(_components.p,{children:`Use the target button within the options panel to connect a scrolling Layout. As described in the Scrolling Content section above, this should be the Layout that your Scroll Constraint was applied to.`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/2f05011a-cf88-41b5-9a96-ae4712d500d9.webp?fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=9529f1fab9a4e02cc465a8c47b04b507`,alt:`Image`,\"data-og-width\":`1466`,width:`1466`,\"data-og-height\":`1124`,height:`1124`,\"data-path\":`images/editor/layouts/2f05011a-cf88-41b5-9a96-ae4712d500d9.webp`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/2f05011a-cf88-41b5-9a96-ae4712d500d9.webp?w=280\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=82d7fa5caed0536f0167215688d34840 280w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/2f05011a-cf88-41b5-9a96-ae4712d500d9.webp?w=560\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=4a618864b13a8443d39bcdbe81911ea8 560w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/2f05011a-cf88-41b5-9a96-ae4712d500d9.webp?w=840\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=cd1ef00939fe371892f3c89c812ddf6a 840w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/2f05011a-cf88-41b5-9a96-ae4712d500d9.webp?w=1100\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=47d3a23291a296a11c03cadea6fdb45a 1100w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/2f05011a-cf88-41b5-9a96-ae4712d500d9.webp?w=1650\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=d576e246f9f45bc793830929f550c6ca 1650w, https://mintcdn.com/rive/KnNrDuhU1mIj7cOb/images/editor/layouts/2f05011a-cf88-41b5-9a96-ae4712d500d9.webp?w=2500\u0026fit=max\u0026auto=format\u0026n=KnNrDuhU1mIj7cOb\u0026q=85\u0026s=acb7c39bf3ba5ee580d8577acb6473bc 2500w`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Scroll Constraints","description":null,"href":"/editor/constraints/scroll-constraint"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Content scrolling","slug":"content-scrolling","depth":2,"children":[{"title":"Direction","slug":"direction","depth":4,"children":[]},{"title":"Scroll percent X/Y (animatable)","slug":"scroll-percent-x/y-animatable","depth":4,"children":[]},{"title":"Scroll index (animatable)","slug":"scroll-index-animatable","depth":4,"children":[]},{"title":"Physics","slug":"physics","depth":4,"children":[]},{"title":"Snap","slug":"snap","depth":4,"children":[]},{"title":"Wheel / Trackpad","slug":"wheel-/-trackpad","depth":4,"children":[]}]},{"title":"List scrolling","slug":"list-scrolling","depth":2,"children":[{"title":"Virtualize","slug":"virtualize","depth":4,"children":[]},{"title":"Carousel","slug":"carousel","depth":4,"children":[]}]},{"title":"Creating a scroll bar","slug":"creating-a-scroll-bar","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/rive/6157a238f0df2356/rive-init.js","/docs/_mintlify/custom/rive/f98a4b1fb6965efa/rive-consent.js"],"subdomain":"rive","siteName":"Rive","title":"Scroll Constraints - Rive","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T20:38:39.688Z","originalFileLocation":"editor/constraints/scroll-constraint.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"application-name\" content=\"Rive\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/rive/QOppeg00QlFTw5Bu/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/rive/QOppeg00QlFTw5Bu/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/rive/QOppeg00QlFTw5Bu/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/rive/QOppeg00QlFTw5Bu/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/rive/QOppeg00QlFTw5Bu/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/rive/QOppeg00QlFTw5Bu/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/rive/QOppeg00QlFTw5Bu/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/rive/QOppeg00QlFTw5Bu/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/rive/QOppeg00QlFTw5Bu/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Scroll Constraints - Rive\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Rive\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://rive.app/docs/editor/constraints/scroll-constraint\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://rive.mintlify.site/docs/_mintlify/api/og/v2?division=Constraints\u0026amp;title=Scroll+Constraints\u0026amp;theme=9d194ea41709afb0505e42e9\u0026amp;signature=58087a0b1d330f5b7d18386e805dd5aeb4aecdec5be6070f28f2847dbb797aa8\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Scroll Constraints - Rive\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://rive.mintlify.site/docs/_mintlify/api/og/v2?division=Constraints\u0026amp;title=Scroll+Constraints\u0026amp;theme=9d194ea41709afb0505e42e9\u0026amp;signature=58087a0b1d330f5b7d18386e805dd5aeb4aecdec5be6070f28f2847dbb797aa8\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/rive/QOppeg00QlFTw5Bu/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Rive\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ffa41c\">\u003clink data-mint-head rel=\"canonical\" href=\"https://rive.app/docs/editor/constraints/scroll-constraint\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/editor/constraints/scroll-constraint.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://rive.app/#organization\",\"name\":\"Rive\",\"url\":\"https://rive.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/rive/tBktbqSaEr9ZwywZ/logo/rive_top_logo_black.svg?fit=max\u0026auto=format\u0026n=tBktbqSaEr9ZwywZ\u0026q=85\u0026s=e09b8659935986a837947ae7c3b104e0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://rive.app/docs#website\",\"name\":\"Rive\",\"url\":\"https://rive.app/docs\",\"publisher\":{\"@id\":\"https://rive.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://rive.app/docs/editor/constraints/scroll-constraint#webpage\",\"url\":\"https://rive.app/docs/editor/constraints/scroll-constraint\",\"name\":\"Scroll Constraints\",\"dateModified\":\"2026-11-05T20:38:39.688Z\",\"isPartOf\":{\"@id\":\"https://rive.app/docs#website\"},\"breadcrumb\":{\"@id\":\"https://rive.app/docs/editor/constraints/scroll-constraint#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://rive.app/docs/editor/constraints/scroll-constraint#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Advanced Topics\",\"item\":\"https://rive.app/docs/editor/ai-agent/ai-agent\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Rigging \u0026 Control\",\"item\":\"https://rive.app/docs/editor/manipulating-shapes/manipulating-shapes\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Constraints\",\"item\":\"https://rive.app/docs/editor/constraints/constraints-overview\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Scroll Constraints\",\"item\":\"https://rive.app/docs/editor/constraints/scroll-constraint\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://rive.app/docs/editor/constraints/scroll-constraint#article\",\"headline\":\"Scroll Constraints\",\"name\":\"Scroll Constraints\",\"url\":\"https://rive.app/docs/editor/constraints/scroll-constraint\",\"mainEntityOfPage\":{\"@id\":\"https://rive.app/docs/editor/constraints/scroll-constraint#webpage\"},\"dateModified\":\"2026-11-05T20:38:39.688Z\",\"publisher\":{\"@id\":\"https://rive.app/#organization\"},\"isPartOf\":{\"@id\":\"https://rive.app/docs#website\"}}]}\u003c/script>","siteName":"Rive","nav":{"global":null,"tabs":[{"tab":"Home","pages":[{"title":"Home","href":"/getting-started/introduction"}]},{"tab":"Editor","groups":[{"group":" ","pages":[{"title":"Using the Rive Editor","sidebarTitle":"Get Rive","href":"/editor/get-rive"},{"group":"Editor Interface","pages":[{"title":"Interface Overview","sidebarTitle":"Overview","href":"/editor/interface-overview/overview"},{"title":"File Browser","href":"/editor/interface-overview/file-browser"},{"title":"Viewport","href":"/editor/interface-overview/stage"},{"title":"Toolbar","href":"/editor/interface-overview/toolbar"},{"title":"Sidebar","href":"/editor/interface-overview/sidebar"},{"title":"Inspector","href":"/editor/interface-overview/inspector"},{"title":"Debug Panel","href":"/editor/interface-overview/debug-panel"}]},{"group":"Workflows","pages":[{"title":"Selection and Navigation","href":"/editor/interface-overview/selection-and-navigation"},{"title":"Keyboard Shortcuts","href":"/editor/keyboard-shortcuts"},{"title":"Dependencies Graph","href":"/editor/workflows/dependency-graph"},{"title":"Tagging","href":"/editor/tagging"},{"title":"Revision History","href":"/editor/fundamentals/revision-history"},{"title":"Best Practices","href":"/getting-started/best-practices"}]}]},{"group":"Fundamentals","pages":[{"group":"Design","pages":[{"title":"Artboards","href":"/editor/fundamentals/artboards"},{"title":"Components","href":"/editor/fundamentals/components"},{"group":"Drawing","pages":[{"title":"Shapes and Paths Overview","href":"/editor/fundamentals/shapes-and-paths-overview"},{"title":"Shape Tools","href":"/editor/fundamentals/procedural-shapes"},{"title":"Shape Builder","href":"/editor/design/shape-builder"},{"title":"Pen Tool Overview","href":"/editor/fundamentals/pen-tool-overview"},{"title":"Freehand Drawing with Pencil, Brush, and Eraser","sidebarTitle":"Freehand Drawing","href":"/editor/design/freehand-drawing"},{"title":"Fill and Stroke","href":"/editor/fundamentals/fill-and-stroke"},{"title":"Edit Vertices","href":"/editor/fundamentals/edit-vertices"},{"title":"Bucket Tool","sidebarTitle":"Bucket","href":"/editor/design/bucket-tool"},{"title":"Shape Bend Tool","href":"/editor/design/shape-bend-tool"},{"title":"Trim Path","href":"/editor/manipulating-shapes/trim-path"},{"title":"Clipping","href":"/editor/manipulating-shapes/clipping"}]},{"title":"Align and Distribute","href":"/editor/fundamentals/align-and-distribute"},{"group":"Text","pages":[{"title":"Text","sidebarTitle":"Overview","href":"/editor/text/text-overview"},{"title":"Text Runs","href":"/editor/text/text-runs"},{"title":"Text Styles","href":"/editor/text/text-styles"},{"title":"Text Modifiers","href":"/editor/text/text-modifiers"},{"title":"Text Input","href":"/editor/text/text-input"}]},{"group":"Hierarchical Relationships","pages":[{"title":"Hierarchy","href":"/editor/interface-overview/hierarchy"},{"title":"Groups","href":"/editor/fundamentals/groups"},{"title":"Solos","href":"/editor/manipulating-shapes/solos"},{"title":"Transform Spaces","href":"/editor/fundamentals/transform-spaces"},{"title":"Freeze and Origin","href":"/editor/fundamentals/freeze-and-origin"},{"title":"Animating Draw Order","sidebarTitle":"Custom Draw Order","href":"/editor/animate-mode/animating-draw-order"}]},{"group":"Responsive Design","pages":[{"title":"Overview","sidebarTitle":"Layouts Overview","href":"/editor/layouts/layouts-overview"},{"title":"Tools","sidebarTitle":"Tools","href":"/editor/layouts/layout-tools"},{"title":"Parameters","href":"/editor/layouts/layout-parameters"},{"title":"Component Sizing","href":"/editor/layouts/component-sizing"},{"title":"Layout Animation","href":"/editor/layouts/layout-animation"},{"title":"N-Slicing","href":"/editor/layouts/n-slicing"}]},{"title":"Rulers \u0026 Guides","href":"/editor/design/rulers-and-guides"}]},{"group":"Assets","pages":[{"title":"Assets","sidebarTitle":"Overview","href":"/editor/fundamentals/assets-overview"},{"title":"SVG \u0026 Vector Assets","href":"/editor/assets/svg"},{"title":"Photoshop Files","href":"/editor/assets/psd"},{"title":"Font Assets","href":"/editor/text/fonts"},{"title":"Audio Assets","href":"/editor/assets/audio"},{"title":"Libraries","sidebarTitle":"Libraries","href":"/editor/libraries"}]},{"group":"Animation","pages":[{"title":"Animate Mode Overview","sidebarTitle":"Overview","href":"/editor/animate-mode/animate-mode-overview"},{"title":"Timeline","href":"/editor/animate-mode/timeline"},{"title":"Keys","href":"/editor/animate-mode/keys"},{"title":"Interpolation (Easing)","href":"/editor/animate-mode/interpolation-easing"}]},{"group":"Interaction","pages":[{"group":"State Machines","pages":[{"title":"State Machine Overview","sidebarTitle":"Overview","href":"/editor/state-machine/state-machine"},{"title":"States","href":"/editor/state-machine/states"},{"title":"Transitions","href":"/editor/state-machine/transitions"},{"title":"Layers","href":"/editor/state-machine/layers"}]},{"title":"Listeners","href":"/editor/state-machine/listeners"},{"group":"Events","pages":[{"title":"Events Overview","sidebarTitle":"Overview","href":"/editor/events/overview"},{"title":"Open URL Events","href":"/editor/events/open-url-events"},{"title":"Audio Events","href":"/editor/events/audio-events"}]}]},{"group":"Data","pages":[{"title":"Data Binding Overview","href":"/editor/data-binding/overview"},{"title":"View Models \u0026 Instances","href":"/editor/data-binding/view-models"},{"title":"View Model Properties","href":"/editor/data-binding/property-types"},{"title":"Binding Data","href":"/editor/data-binding/binding-data"},{"title":"Controlling Data","href":"/editor/data-binding/controlling-data"},{"group":"Advanced Data Binding","pages":[{"title":"Enums","href":"/editor/data-binding/enums"},{"title":"Lists","href":"/editor/data-binding/lists"},{"title":"Converters","href":"/editor/data-binding/converters"},{"title":"Stateful Components","href":"/editor/data-binding/stateful-components"},{"title":"Property Groups","href":"/editor/data-binding/property-groups"},{"title":"Migration Guide","href":"/editor/data-binding/migration-guide"}]}]},{"group":"Publishing","pages":[{"title":"Exporting for Runtime","href":"/editor/exporting/exporting-for-runtime"},{"title":"Sharing \u0026 Embedding","href":"/editor/embed-urls/overview"},{"title":"Exporting Videos \u0026 Images","href":"/editor/exporting/exporting-for-video-and-static-design"},{"title":"Exporting for Backup","href":"/editor/exporting/exporting-for-backup"}]}]},{"group":"Advanced Topics","pages":[{"group":"AI","pages":[{"title":"AI Agent","href":"/editor/ai-agent/ai-agent"},{"title":"Rive MCP Integration","sidebarTitle":"MCP Integration","href":"/editor/ai/mcp"}]},{"group":"Rigging \u0026 Control","pages":[{"title":"Manipulating Shapes Overview","sidebarTitle":"Overview","href":"/editor/manipulating-shapes/manipulating-shapes"},{"title":"Meshes","href":"/editor/manipulating-shapes/meshes"},{"title":"Bones","href":"/editor/manipulating-shapes/bones"},{"title":"Joysticks","href":"/editor/manipulating-shapes/joysticks"},{"group":"Constraints","pages":[{"title":"Constraints Overview","sidebarTitle":"Overview","href":"/editor/constraints/constraints-overview"},{"title":"IK Constraint","href":"/editor/constraints/ik-constraint"},{"title":"Distance Constraint","href":"/editor/constraints/distance-constraint"},{"title":"Scale Constraint","href":"/editor/constraints/scale-constraint"},{"title":"Rotation Constraint","href":"/editor/constraints/rotation-constraint"},{"title":"Transform Constraint","href":"/editor/constraints/transform-constraint"},{"title":"Translation Constraint","href":"/editor/constraints/translation-constraint"},{"title":"Follow Path Constraint","description":null,"href":"/editor/constraints/follow-path-constraint"},{"title":"Scroll Constraints","href":"/editor/constraints/scroll-constraint"}]}]},{"group":"Accessibility","pages":[{"title":"Semantics","description":"Make your experiences accessible to screen readers by defining semantic types, properties, states, and actions","href":"/editor/accessibility/semantics"},{"title":"Focus","href":"/editor/accessibility/focus"},{"title":"Reduced Motion","href":"/editor/accessibility/reduced-motion"}]},{"group":"Admin \u0026 Workspaces","pages":[{"group":"Workspaces","pages":[{"title":"Workspaces","sidebarTitle":"Overview","href":"/account-admin/workspaces/workspaces-overview"},{"title":"Managing Workspaces","href":"/account-admin/workspaces/managing-workspaces"},{"title":"Managing Workspace Members","sidebarTitle":"Workspace Members","href":"/account-admin/workspaces/managing-workspace-members"}]},{"title":"Bring Your Own S3 Bucket","href":"/account-admin/bring-your-own-bucket"}]},{"group":"Legacy Features","pages":[{"title":"Inputs","href":"/editor/state-machine/inputs"},{"title":"Events at Runtime","href":"/editor/events/general-events"}]}]}]},{"tab":"Scripting","pages":[{"title":"Scripting","href":"/scripting/getting-started"}]},{"tab":"Runtimes","pages":[{"title":"Runtimes","href":"/runtimes/getting-started"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli/overview"}]},{"tab":" ","pages":[{"title":" ","href":"/tutorials/learn-rive"}]},{"tab":" ","pages":[{"title":" ","href":"/community/support"}]}]},"basePath":"","title":"Scroll Constraints - Rive","buildId":"dpl_ATnXPMW25DMPUr9VBw6kL6MfBt6T","deploymentId":"dpl_ATnXPMW25DMPUr9VBw6kL6MfBt6T","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CypZe82l.js","lightbox-handle-r17bVUz3.js"]}