Skip to content
  • No data uploaded
  • Instant results

Tailwind CSS FAQ Accordion for Vue 3

A production-ready minimal faq accordion: a frequently-asked-questions section with four expandable items, each toggled by a button that exposes its state via aria-expanded. Pick your brand color, toggle dark mode and corner radius — the live preview and the Vue 3 code update instantly in your browser.

Live component editor

Library
Framework
Style
Theme
Corner radius
Live preview
<script setup>
import { ref } from 'vue';

const q1 = ref(true);
const q2 = ref(false);
const q3 = ref(false);
const q4 = ref(false);
</script>

<template>
  <section class="px-6 py-16">
    <div class="max-w-2xl mx-auto">
      <h2 class="text-3xl font-bold text-center text-slate-900">Frequently asked questions</h2>
      <div class="mt-10 flex flex-col gap-3">
        <div class="bg-white border border-slate-200 shadow-sm rounded-xl">
          <button type="button" class="w-full flex items-center justify-between gap-4 px-5 py-4 text-left font-semibold text-slate-900" aria-controls="faq-a1" @click="q1 = !q1" :aria-expanded="q1">
            <span>Can I cancel anytime?</span><span class="text-xl font-bold text-[#4f46e5]" aria-hidden="true">+</span>
          </button>
          <div id="faq-a1" v-show="q1">
            <p class="px-5 pb-4 text-sm leading-relaxed text-slate-500">Yes. Cancel from your billing page and you keep access until the end of the period.</p>
          </div>
        </div>
        <div class="bg-white border border-slate-200 shadow-sm rounded-xl">
          <button type="button" class="w-full flex items-center justify-between gap-4 px-5 py-4 text-left font-semibold text-slate-900" aria-controls="faq-a2" @click="q2 = !q2" :aria-expanded="q2">
            <span>Do you offer a free trial?</span><span class="text-xl font-bold text-[#4f46e5]" aria-hidden="true">+</span>
          </button>
          <div id="faq-a2" v-show="q2">
            <p class="px-5 pb-4 text-sm leading-relaxed text-slate-500">Every paid plan starts with a 14-day free trial — no credit card required.</p>
          </div>
        </div>
        <div class="bg-white border border-slate-200 shadow-sm rounded-xl">
          <button type="button" class="w-full flex items-center justify-between gap-4 px-5 py-4 text-left font-semibold text-slate-900" aria-controls="faq-a3" @click="q3 = !q3" :aria-expanded="q3">
            <span>Which payment methods do you accept?</span><span class="text-xl font-bold text-[#4f46e5]" aria-hidden="true">+</span>
          </button>
          <div id="faq-a3" v-show="q3">
            <p class="px-5 pb-4 text-sm leading-relaxed text-slate-500">All major cards, UPI, netbanking and invoicing for annual plans.</p>
          </div>
        </div>
        <div class="bg-white border border-slate-200 shadow-sm rounded-xl">
          <button type="button" class="w-full flex items-center justify-between gap-4 px-5 py-4 text-left font-semibold text-slate-900" aria-controls="faq-a4" @click="q4 = !q4" :aria-expanded="q4">
            <span>Is my data secure?</span><span class="text-xl font-bold text-[#4f46e5]" aria-hidden="true">+</span>
          </button>
          <div id="faq-a4" v-show="q4">
            <p class="px-5 pb-4 text-sm leading-relaxed text-slate-500">Data is encrypted in transit and at rest, and we never sell personal information.</p>
          </div>
        </div>
      </div>
    </div>
  </section>
</template>
All components →

Free Tailwind CSS FAQ Accordion for Vue 3 by pGento

Install Tailwind CSS for Vue 3

Create a Vue 3 project with Vite, then add Tailwind CSS v3:

npm create vite@latest my-app -- --template vue
cd my-app
npm install
npm install -D tailwindcss@3 postcss autoprefixer
npx tailwindcss init -p

Set content: ['./index.html', './src/**/*.{vue,js}'] in tailwind.config.js, and add to src/style.css:

@tailwind base;
@tailwind components;
@tailwind utilities;

The brand color is applied with arbitrary values such as bg-[#4f46e5], so no theme configuration is needed.

Use the faq accordion in Vue 3

<!-- App.vue -->
<script setup>
import FaqAccordion from './FaqAccordion.vue';
</script>

<template>
  <FaqAccordion />
</template>

Accessibility & customization

Each question is a <button> with aria-expanded and aria-controls pointing at its answer panel, so screen readers announce open/closed state and keyboard users can operate it with Enter or Space.

Every color, radius and dark-mode choice is baked into plain utility classes, so the copied code has no runtime dependency on this site.

Compatibility

ItemDetails
CSS frameworkTailwind CSS v3.4+
LibraryVue 3 (<script setup>)
Interactive stateq1, q2, q3, q4
Dark modeYes — toggle in the editor
StyleMinimal

Frequently asked questions

How do I install this Tailwind faq accordion in Vue 3?
Create a Vue 3 project, install Tailwind CSS as shown in the installation section, then paste the generated code.
Can I change the color of the faq accordion?
Yes. Use the brand color picker or type any hex code — the preview and code update instantly, and the color is written directly into the classes you copy.
Does the faq accordion support dark mode?
Yes. Toggle “Dark mode” in the editor to generate a dark palette version of the same component.
Is the faq accordion accessible?
Each question is a <button> with aria-expanded and aria-controls pointing at its answer panel, so screen readers announce open/closed state and keyboard users can operate it with Enter or Space.
Is this component free for commercial use?
Yes. The generated code is yours to use in personal and commercial projects without attribution.
Tailwind CSS FAQ Accordion for Vue 3

Embed this tool on your site

Paste this code into any web page. It stays free, fast and ad-free inside your site.

Print or save as PDF

Prints just this tool and its result. Choose “Save as PDF” as the printer to get a file. Branding is stored only in this browser.