
Creating a scrollable list in HTML can be a bit tricky, but with the right combination of CSS and JavaScript, you can make it happen. The key is to use the overflow property in CSS to create a scrollbar.
To make a list scrollable, you need to set the height of the list container to a fixed value, like 200px. This will create a scrollbar when the content exceeds the container's height.
Using JavaScript, you can also dynamically add or remove items from the list, which can affect the scrollability of the list. For example, if you add an item to the list, the list will automatically scroll down to the new item.
Worth a look: Html Fit Image to Container
Creating a Scrollable List
To make a list scrollable, you just need two lines of CSS. Set a fixed height and set overflow to either scroll or auto.
The concept is simple, but it's easy to overlook the importance of setting a fixed height. Without it, the list will take up the rest of the space, even if there are fewer elements than the max display capacity.
Expand your knowledge: Fixed Html
You can use max-height instead of height to remove any unnecessary space.
A practical example of this concept can be found in the Github repository mentioned in the article.
Here's a breakdown of the CSS code:
- Set a fixed height (e.g. `height: 200px`)
- Set overflow to scroll or auto (e.g. `overflow: auto`)
This will make your list scrollable, and it's a basic concept that's easy to implement.
Accessibility and Keyboard Support
Accessibility and keyboard support are crucial aspects of a well-designed HTML scrollable list. The example listboxes on this page implement a keyboard interface that allows users to navigate options using the down and up arrow keys.
The down arrow key moves focus to and selects the next option, while the up arrow key moves focus to and selects the previous option. This is especially useful for users who rely on keyboard navigation.
The Home key moves focus to and selects the first option, and the End key moves focus to and selects the last option.
To enhance accessibility, the example listbox on this page uses ARIA roles, states, and properties. Specifically, it uses aria-activedescendant to manage which option is focused, and scrolls the listbox to position the focused option in view if it's not fully visible.
Intriguing read: Html Tag B
To enhance perceivability, visual keyboard focus and hover are styled using the CSS :hover and :focus pseudo-classes. This makes it easier for users to see which option is currently focused.
Here's a summary of the keyboard interface:
Overflow and Scrolling
The overflow-x and overflow-y properties are used to control horizontal and vertical scrolling, respectively. They can be used together to enable both horizontal and vertical scrolling.
To enable horizontal scrolling, use the overflow-x property with the value of "scroll". This will add a scrollbar to the right of the content, allowing users to scroll horizontally when the content is larger than the container.
The overflow-y property works similarly, but for vertical scrolling. When set to "scroll", it adds a scrollbar to the bottom of the content, enabling users to scroll up and down when the content overflows the container.
Here are some key points to keep in mind:
- The overflow-x and overflow-y properties can be used together to enable both horizontal and vertical scrolling.
- overflow-x: scroll enables horizontal scrolling, while overflow-y: scroll enables vertical scrolling.
- overflow-x and overflow-y can be used with other values, such as "auto" or "hidden", to control how scrollbars are displayed.
The overflow: auto property adds scrollbars only when the content doesn’t fit inside the box. This means that if the content is smaller than the container, no scrollbar will be displayed, but if the content overflows, a scrollbar will appear.
Recommended read: Html Code Block Vertical Scrollbar
User Interaction and Events
User interaction with the html scrollable list is a breeze, thanks to its intuitive features. You can scroll the list with a swipe gesture or with the scrollbar, and you can even force the list to use one or both of them on all platforms by setting the scrollByContent or scrollByThumb property to true.
The list employs native scrolling on most platforms, except non-Mac desktops and devices. To enable native scrolling on all platforms, assign true to the useNativeScrolling property. This will ensure a smooth scrolling experience across all devices.
To take user interaction to the next level, you can also customize the scrolling behavior to suit your needs. For example, you can disable the bouncing effect on mobile devices by setting the bounceEnabled property to false. Alternatively, if you want to disable scrolling completely, simply assign false to the scrollingEnabled property.
A different take: Html Disable a Link
JavaScript and CSS
JavaScript and CSS source code is essential for creating interactive user interfaces.
The CSS source code is typically stored in a separate file, often named listbox.css.
You'll also need JavaScript files, which can be found in the listbox.js and listbox-scrollable.js files.
Sometimes, you might find a single JavaScript file that includes multiple scripts, like listbox.js and listbox-scrollable.js.
Here's a breakdown of the JavaScript and CSS source code files mentioned:
CSS: listbox.css
Javascript: listbox.js
Javascript: listbox-scrollable.js
User Interaction
You can make your List scrollable by using a swipe gesture or a scrollbar. By default, swipe gestures are active on mobile devices and scrollbars are active on desktops.
To force a swipe gesture on desktops, set the scrollByContent property to true. Similarly, to force a scrollbar on mobile devices, set the scrollByThumb property to true.
Native scrolling is employed on most platforms, but you can enable it on all platforms by setting the useNativeScrolling property to true. This is especially useful if you're developing for non-Mac desktops and devices.
Readers also liked: Html Property Attribute
If you disable native scrolling by setting the useNativeScrolling property to false, the List will simulate scrolling on all platforms. You can then control when to show the scrollbar by using the showScrollbar property.
On mobile devices, users can pull the List to scroll it slightly further than its top or boundary. This is known as the bounce effect, and you can disable it by setting the bounceEnabled property to false.
Finally, if you want to disable scrolling completely, simply set the scrollingEnabled property to false.
Consider reading: Prevent Text Selection Css
Api
The List API provides a range of methods for handling scrolling and navigation.
You can get the height of the scrollable content in pixels using the scrollHeight() method.
The scrollHeight() method returns a pixel-measured value that shows the total height of the content that can be scrolled.
To scroll the List to a specific item, you can use the scrollToItem() method, which takes either an item index or a DOM node as an argument.
Additional reading: List Item Html

Here's a summary of the scrolling-related methods exposed by the List API:
You can also use the scrollTo() method to scroll the List to a specific location or the scrollBy() method to scroll the List from the current location by a certain distance.
Broaden your view: Get Method Html Form
Events
Events are a crucial part of user interaction, allowing your UI component to respond to various actions.
To execute certain commands when a List is scrolled, you need to handle the scroll event. Assign the event handling function to the onScroll property when configuring the UI component if it's not going to be changed during its lifetime.
If you're going to change the scroll event handler at runtime or need to attach several handlers, subscribe to it using the on(eventName, eventHandler) method.
For another approach, see: Html Component Library
Featured Images: pexels.com

