Snippets Layout

Bootstrap 5 Poll Layout with Live Results

A set of three voting polls with single and multiple choice, where voting or View results reveals animated percentage bars.

Bootstrap 5 No jQuery Apr 2020 3.4K views

<section class="wdw-stage">
  <div class="container" style="max-width:1080px">
    <div class="text-center mb-4 mb-lg-5">
      <span class="wdw-eyebrow">Community polls</span>
      <h2 class="wdw-heading display-6 mt-1 mb-0">Ask once, see answers instantly</h2>
    </div>
    <div class="row g-4">
      <div class="col-md-6 col-lg-4">
        <form class="wdw-card p-4 h-100 d-flex flex-column wdw-poll" data-type="radio" data-votes="46,31,9,12,2" data-start="results" data-mine="0" novalidate>
          <fieldset class="d-flex flex-column flex-grow-1 border-0 p-0 m-0">
            <legend class="h5 fw-bold wdw-heading mb-1 float-none">How is my site?</legend>
            <p class="small wdw-muted mb-3">Pick one option.</p>
            <div class="d-grid gap-2 mb-3">
              <label class="wdw-opt"><input class="form-check-input" type="radio" name="site" value="0"><span class="wdw-opt-label">Excellent</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="radio" name="site" value="1"><span class="wdw-opt-label">Good</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="radio" name="site" value="2"><span class="wdw-opt-label">Can be improved</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="radio" name="site" value="3"><span class="wdw-opt-label">Needs a redesign</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="radio" name="site" value="4"><span class="wdw-opt-label">No comment</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
            </div>
          </fieldset>
          <div class="d-flex align-items-center gap-3 mt-auto">
            <button type="submit" class="btn btn-primary rounded-pill px-4">Vote</button>
            <button type="button" class="btn btn-link text-decoration-none px-0 wdw-toggle">View results</button>
          </div>
          <p class="small wdw-muted mt-3 mb-0 wdw-total" aria-live="polite"></p>
        </form>
      </div>
      <div class="col-md-6 col-lg-4">
        <form class="wdw-card p-4 h-100 d-flex flex-column wdw-poll" data-type="checkbox" data-votes="58,34,12,18,6" novalidate>
          <fieldset class="d-flex flex-column flex-grow-1 border-0 p-0 m-0">
            <legend class="h5 fw-bold wdw-heading mb-1 float-none">Where do you get your news?</legend>
            <p class="small wdw-muted mb-3">Select all that apply.</p>
            <div class="d-grid gap-2 mb-3">
              <label class="wdw-opt"><input class="form-check-input" type="checkbox" name="news" value="0"><span class="wdw-opt-label">Internet</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="checkbox" name="news" value="1"><span class="wdw-opt-label">Television</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="checkbox" name="news" value="2"><span class="wdw-opt-label">Radio</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="checkbox" name="news" value="3"><span class="wdw-opt-label">Newspaper</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="checkbox" name="news" value="4"><span class="wdw-opt-label">Others</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
            </div>
          </fieldset>
          <div class="d-flex align-items-center gap-3 mt-auto">
            <button type="submit" class="btn btn-primary rounded-pill px-4">Vote</button>
            <button type="button" class="btn btn-link text-decoration-none px-0 wdw-toggle">View results</button>
          </div>
          <p class="small wdw-muted mt-3 mb-0 wdw-total" aria-live="polite"></p>
        </form>
      </div>
      <div class="col-md-12 col-lg-4">
        <form class="wdw-card wdw-aurora border-0 p-4 h-100 d-flex flex-column wdw-poll wdw-poll-dark" data-type="radio" data-votes="64,36,22,9,4" novalidate>
          <fieldset class="d-flex flex-column flex-grow-1 border-0 p-0 m-0">
            <legend class="h5 fw-bold mb-1 float-none text-white">Light or dark mode?</legend>
            <p class="small mb-3 text-white-50">Quick one. Pick a side.</p>
            <div class="d-grid gap-2 mb-3">
              <label class="wdw-opt"><input class="form-check-input" type="radio" name="theme" value="0"><span class="wdw-opt-label">Dark, always</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="radio" name="theme" value="1"><span class="wdw-opt-label">Light, always</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="radio" name="theme" value="2"><span class="wdw-opt-label">Follow system</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="radio" name="theme" value="3"><span class="wdw-opt-label">Depends on the time</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
              <label class="wdw-opt"><input class="form-check-input" type="radio" name="theme" value="4"><span class="wdw-opt-label">No preference</span><span class="wdw-opt-bar"></span><span class="wdw-opt-pct"></span></label>
            </div>
          </fieldset>
          <div class="d-flex align-items-center gap-3 mt-auto">
            <button type="submit" class="btn btn-light rounded-pill px-4">Vote</button>
            <button type="button" class="btn btn-link link-light text-decoration-none px-0 wdw-toggle">View results</button>
          </div>
          <p class="small text-white-50 mt-3 mb-0 wdw-total" aria-live="polite"></p>
        </form>
      </div>
    </div>
  </div>
</section>

Built on Bootstrap 5.3.8 with plain JavaScript — no jQuery. Supports light and dark mode via data-bs-theme.

Free to use in personal and commercial projects under the MIT license.