Skip to main content

Prevent Click

The preventClickOnDrag option prevents unintended click events that occur after dragging. This is especially important when panels contain links or buttons.

Try dragging a panel and releasing to see the difference in click handling.

import Flicking from "@egjs/flicking";
import "@egjs/flicking/dist/flicking.css";
import "./styles.css";

// preventClickOnDrag: true (default)
const _flick1 = new Flicking("#flick-prevent", {
  align: "center",
  preventClickOnDrag: true
});

let count1 = 0;
document.querySelectorAll("#flick-prevent .flicking-panel").forEach(el => {
  el.addEventListener("click", () => {
    count1++;
    document.getElementById("count1").textContent = `Click count: ${count1}`;
  });
});

// preventClickOnDrag: false
const _flick2 = new Flicking("#flick-no-prevent", {
  align: "center",
  preventClickOnDrag: false
});

let count2 = 0;
document.querySelectorAll("#flick-no-prevent .flicking-panel").forEach(el => {
  el.addEventListener("click", () => {
    count2++;
    document.getElementById("count2").textContent = `Click count: ${count2}`;
  });
});

Summary

Key Options

OptionTypeDefaultDescription
preventClickOnDragbooleantruePrevent click events after drag
preventDefaultOnDragbooleanfalsePrevent browser default behavior during drag

Comparison by Value

OptionValueBehaviorSuitable For
preventClickOnDragtrueIgnores click events after drag (default)General carousels with links/buttons in panels
preventClickOnDragfalseClick events fire even after dragWhen managing click events manually
preventDefaultOnDragtruePrevents default behavior like text selection during dragWhen text selection prevention is needed
preventDefaultOnDragfalseAllows default behavior (default)Most general carousels

Details

How preventClickOnDrag Works

When a touch/mouse drag ends, the browser naturally fires a click event. When lifting your finger after dragging the carousel to flip panels, links or buttons inside the panel may be clicked unintentionally.

With preventClickOnDrag: true (default), click events from interactions involving a drag are ignored. Simple taps/clicks (without drag) work normally.

// Default: prevent click after drag (recommended)
const flicking = new Flicking("#el", {
preventClickOnDrag: true
});

// Allow click even after drag
const flicking = new Flicking("#el", {
preventClickOnDrag: false
});

preventDefaultOnDrag

Calls preventDefault() during drag to prevent browser default behavior (text selection, image dragging, etc.).

const flicking = new Flicking("#el", {
preventDefaultOnDrag: true // Text selection disabled during drag
});

Use Cases

When to use?
  • When panels contain links/buttons: Set preventClickOnDrag: true to prevent unintended navigation after drag.
  • Text-heavy panels: Set preventDefaultOnDrag: true to prevent text selection during drag for better usability.
Using preventClickOnDrag: false

Since clicks fire even after drag, short drags may trigger unintended link navigation or button clicks. Use only when managing click events manually (e.g., measuring drag distance to determine click intent).

  • inputType: Input device type settings
  • threshold: Minimum drag distance for panel transition