Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/finsweet/attributes/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The fs-accordion attribute enables you to create fully accessible, keyboard-navigable accordions in Webflow without relying on Webflow Interactions. It supports nested accordions, multiple accordion groups, and works seamlessly with CMS lists.

Basic Setup

Single Accordion

Create a basic accordion with a trigger and content:
<div fs-accordion-element="accordion">
  <!-- Trigger button -->
  <button fs-accordion-element="trigger">
    Accordion Title
    <div fs-accordion-element="arrow"></div>
  </button>
  
  <!-- Content -->
  <div fs-accordion-element="content">
    <p>This is the accordion content that will be shown/hidden.</p>
  </div>
</div>

Accordion Group

Wrap multiple accordions in a group to control their behavior:
<div fs-accordion-element="group">
  <div fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">Item 1</button>
    <div fs-accordion-element="content">Content 1</div>
  </div>
  
  <div fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">Item 2</button>
    <div fs-accordion-element="content">Content 2</div>
  </div>
  
  <div fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">Item 3</button>
    <div fs-accordion-element="content">Content 3</div>
  </div>
</div>

Elements

fs-accordion-element=“group”

Defines a group of accordion elements. Use this to control whether multiple accordions can be open simultaneously.
<div fs-accordion-element="group">
  <!-- Multiple accordions -->
</div>

fs-accordion-element=“accordion”

Defines an individual accordion element. This is the container for a single accordion item.
<div fs-accordion-element="accordion">
  <!-- Trigger and content -->
</div>

fs-accordion-element=“trigger”

Defines the clickable element that opens/closes the accordion. This is typically a button or clickable div.
<button fs-accordion-element="trigger">
  Click to expand
</button>
For accessibility, the trigger should be a <button> element or have role="button" and appropriate ARIA attributes.

fs-accordion-element=“content”

Defines the content container that will be shown/hidden when the trigger is clicked.
<div fs-accordion-element="content">
  <p>Your accordion content goes here.</p>
</div>

fs-accordion-element=“arrow”

Defines an arrow or icon element that rotates when the accordion opens/closes.
<button fs-accordion-element="trigger">
  Accordion Title
  <div fs-accordion-element="arrow"></div>
</button>

Settings

Single Mode

Allow only one accordion to be open at a time within a group:
<div fs-accordion-element="group" fs-accordion-single="true">
  <div fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">Item 1</button>
    <div fs-accordion-element="content">Content 1</div>
  </div>
  
  <div fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">Item 2</button>
    <div fs-accordion-element="content">Content 2</div>
  </div>
</div>
When fs-accordion-single="true" is set, opening one accordion will automatically close others in the same group.

Initial State

Control which accordions are open by default:
<!-- Open the first accordion -->
<div fs-accordion-element="group" fs-accordion-initial="1">
  <!-- Accordions -->
</div>

<!-- Open multiple accordions (comma-separated) -->
<div fs-accordion-element="group" fs-accordion-initial="1,3,5">
  <!-- Accordions -->
</div>

<!-- All accordions closed by default -->
<div fs-accordion-element="group" fs-accordion-initial="none">
  <!-- Accordions -->
</div>
Accordion numbering starts at 1, not 0. The first accordion is 1, the second is 2, etc.

Active Class

Customize the CSS class applied to open accordions:
<div fs-accordion-element="group" fs-accordion-activeclass="open">
  <div fs-accordion-element="accordion">
    <!-- When open, this div will have class "open" -->
  </div>
</div>
Default active class: is-accordion-active

Styling

CSS Classes

The accordion automatically applies CSS classes to help with styling:
/* Active accordion */
.is-accordion-active {
  /* Your styles */
}

/* Arrow rotation */
[fs-accordion-element="arrow"] {
  transition: transform 0.3s ease;
}

.is-accordion-active [fs-accordion-element="arrow"] {
  transform: rotate(180deg);
}

/* Content animation */
[fs-accordion-element="content"] {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.3s ease;
}

.is-accordion-active [fs-accordion-element="content"] {
  grid-template-rows: 1fr;
}

[fs-accordion-element="content"] > * {
  overflow: hidden;
}

Content Animation

For smooth height animations, use the grid technique:
[fs-accordion-element="content"] {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 300ms ease-out;
}

[fs-accordion-element="accordion"].is-accordion-active [fs-accordion-element="content"] {
  grid-template-rows: 1fr;
}

[fs-accordion-element="content"] > div {
  overflow: hidden;
}

CMS Integration

With CMS Lists

Accordions work seamlessly with Webflow CMS Collections:
<div fs-accordion-element="group" fs-accordion-single="true">
  <!-- Webflow CMS Collection List -->
  <div class="w-dyn-list">
    <div class="w-dyn-items">
      <div class="w-dyn-item" fs-accordion-element="accordion">
        <button fs-accordion-element="trigger">
          <div class="question-text">Question from CMS</div>
          <div fs-accordion-element="arrow"></div>
        </button>
        <div fs-accordion-element="content">
          <div class="answer-text">Answer from CMS</div>
        </div>
      </div>
    </div>
  </div>
</div>

With fs-list

Accordions automatically integrate with the fs-list attribute:
<div fs-list-element="list">
  <div fs-list-element="item" fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">
      <span fs-list-field="question">Question</span>
    </button>
    <div fs-accordion-element="content">
      <p fs-list-field="answer">Answer</p>
    </div>
  </div>
</div>
When using accordions with fs-list, accordion states are automatically managed when list items are filtered or paginated.

Nested Accordions

Create nested accordions by placing accordion elements inside content areas:
<div fs-accordion-element="group">
  <!-- Parent accordion -->
  <div fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">Parent Item</button>
    <div fs-accordion-element="content">
      <p>Parent content</p>
      
      <!-- Nested accordion group -->
      <div fs-accordion-element="group">
        <div fs-accordion-element="accordion">
          <button fs-accordion-element="trigger">Child Item 1</button>
          <div fs-accordion-element="content">
            <p>Child content 1</p>
          </div>
        </div>
        
        <div fs-accordion-element="accordion">
          <button fs-accordion-element="trigger">Child Item 2</button>
          <div fs-accordion-element="content">
            <p>Child content 2</p>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

Accessibility

The accordion attribute automatically implements accessibility features:
  • Proper ARIA attributes (aria-expanded, aria-controls)
  • Keyboard navigation (Space and Enter keys)
  • Focus management
  • Screen reader announcements

Manual Accessibility

If needed, you can add additional ARIA attributes:
<div fs-accordion-element="accordion">
  <button fs-accordion-element="trigger" 
          aria-label="Expand to read more about this topic">
    Accordion Title
  </button>
  <div fs-accordion-element="content">
    Content
  </div>
</div>

Complete Examples

<div fs-accordion-element="group" 
     fs-accordion-single="true"
     fs-accordion-initial="1">
  
  <div fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">
      <h3>What is Finsweet Attributes?</h3>
      <div fs-accordion-element="arrow"></div>
    </button>
    <div fs-accordion-element="content">
      <p>Finsweet Attributes is a collection of powerful, no-code tools that extend Webflow's capabilities.</p>
    </div>
  </div>
  
  <div fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">
      <h3>How do I install it?</h3>
      <div fs-accordion-element="arrow"></div>
    </button>
    <div fs-accordion-element="content">
      <p>Simply add the script tag to your Webflow project and start using the attributes.</p>
    </div>
  </div>
  
  <div fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">
      <h3>Is it free?</h3>
      <div fs-accordion-element="arrow"></div>
    </button>
    <div fs-accordion-element="content">
      <p>Yes! All Finsweet Attributes are completely free and open source.</p>
    </div>
  </div>
  
</div>

Common Use Cases

FAQ Section

Create an FAQ section where only one question is open at a time:
<div fs-accordion-element="group" fs-accordion-single="true">
  <!-- FAQ items -->
</div>

Feature List

Create an expandable feature list where multiple items can be open:
<div fs-accordion-element="group">
  <!-- Feature items -->
</div>

Documentation Sidebar

Create collapsible navigation sections:
<nav>
  <div fs-accordion-element="accordion">
    <button fs-accordion-element="trigger">Getting Started</button>
    <div fs-accordion-element="content">
      <a href="/intro">Introduction</a>
      <a href="/install">Installation</a>
    </div>
  </div>
</nav>
Do not use Webflow Interactions on the same elements that have fs-accordion attributes. This can cause conflicts and unexpected behavior.

Browser Support

The fs-accordion attribute is compatible with all modern browsers and IE11+.