Author: | mdbassit |
---|---|
Views Total: | 211 views |
Official Page: | Go to website |
Last Update: | February 14, 2023 |
License: | MIT |
Preview:

Description:
FancySelect is a JavaScript library that turns a single select element into a customizable, fully accessible dropdown list.
More Features:
- Supports icons.
- Auto re-position to prevent overflowing.
- Allows to add new options dynamically.
How to use it:
1. Import the stylesheet fancyselect.min.css and JavaScript fancyselect.min.js.
<script type="text/javascript" src="fancyselect.min.js"></script> <link rel="stylesheet" type="text/css" href="fancyselect.min.css" />
2. That’s it. The library will automatically apply custom styles to the native select elements found within the document.
<select id="default"> <option>Option 1</option> <option>Option 2</option> <option>Option 3</option> ... </select>
3. Apply your own styles to the select.
<select id="custom"> <option>Option 1</option> <option>Option 2</option> <option>Option 3</option> ... </select>
.custom { --fsb-border: 0; --fsb-radius: 2em; --fsb-color: #fff; --fsb-background: #2F86A6; --fsb-font-size: 1em; --fsb-shadow: 0 1px 1px rgba(0, 0, 0, .1); --fsb-padding: .75em 1.5em; --fsb-arrow-padding: 1.5em; --fsb-arrow-size: .5em; --fsb-arrow-color: currentColor; --fsb-icon-color: currentColor; --fsb-list-height: 200px; --fsb-list-border: var(--fsb-border); --fsb-list-radius: .75em; --fsb-list-color: var(--fsb-color); --fsb-list-background: #34BE82; --fsb-hover-color: var(--fsb-color); --fsb-hover-background: #2FDD92; }
4. Add icons to options.
<select id="default"> <option data-icon="1.svg">Option 1</option> <option data-icon="2.svg">Option 2</option> <option data-icon="3.svg">Option 3</option> ... </select>
5. Add new options to the custom element.
const mySelect = document.getElementById('my-select'); const newItems = ['Option4', 'Option5', 'Option6']; newItems.forEach(item => { const option = document.createElement('option'); option.textContent = item; mySelect.appendChild(option); }); // Update the custom select FancySelect.update(mySelect);
6. Disable the native select element.
mySelect.disabled = true;
Changelog:
v0.5.0 (02/14/2023)
- Open the list box on click on the native select’s label element
- Improve the styling of options that have a long label
- Fix list box overflowing inside a flex parent
v0.4.0 (02/02/2023)
- Improve the display of long labels
- Add support for an optional custom item label renderer
- Fix a bug where the list box occupies space when closed
v0.3.3 (01/01/2023)
- Add type=”button” to button elements
v0.3.2 (10/31/2022)
- Bugfix
v0.3.1 (10/26/2022)
- Fix a bug when closing the list box on a second click
v0.3.0 (10/24/2022)
- Close the list box on a second click