Build Interactive Website Walkthroughs With Journey.js

Category: Javascript | July 9, 2024
Views Total:6 views
Official Page:Go to website
Last Update:July 9, 2024


Build Interactive Website Walkthroughs With Journey.js


Journey.js is a lightweight, easy-to-use JavaScript library to create interactive, customizable, accessible guided tours across your websites or web apps.

It allows developers to highlight and bring attention to specific page elements in order to demonstrate workflows or new features on their websites. Visitors can easily navigate between steps with left or right keys. Some example use cases:

  • Onboarding tours for new app/site users
  • Feature announcements and tutorials
  • Step-by-step setup wizards
  • Interactive demos of products or services

How to use it:

1. Download and load the Journey.js library’s files in the HTML.

<!-- CORE -->
<link rel="stylesheet" href="/dist/journey.js.css" />
<script src="/dist/journey.js"></script>
<!-- Languages -->
<script src="/dist/translations/"></script>
<script src="/dist/translations/"></script>

2. Add the data-journey-js attribute to the target elements and specify the title, description, ID, and more for each step as follows:

  • title: Step title
  • description: Step description
  • order: Step order
  • attach: Determine whether to attach the dialog to the element
  • alignTop: Defaults to false
  • alignRight: Defaults to false
  • isHint: show the dialog as a hint
  • alignHintToClickPosition: If the hint should be shown at the mouse position
  • sendClick: Determine whether to fire the click event on the element
  • showDisabledBackground: Defaults to false
  • removeHintWhenViewed: Defaults to false
  • tooltip: Defaults to null
  • group: Defaults to ‘default’
  • onEnter(element): Callback
  • onLeave(element): Callback
  • onClose(element): Callback
  • onOpen(element): Callback
  • onFinish(element): Callback
  • onStart(element): Callback
  • onAddStep: Callback
  • onRemoveStep: Callback
<button data-journey-js="{ 'group': 'group name', 'title': 'Button 2', 'description': 'This is a description for button 2.', 'order': 2 }">Test Button 4</button>
<button data-journey-js="{ 'group': 'group name', 'title': 'Button 1', 'description': 'This is a description for button 1.', 'order': 1 }">Test Button 1</button>
<button data-journey-js="{ 'group': 'group name', 'title': 'Button 3', 'description': 'This is a description for button 3.', 'order': 3 }">Test Button 3</button>

3. Start the journey.


4. Available configuration options.

  // ignore errors
  safeMode: false,
  // DOM type
  domElementTypes: "*",
  // show close button
  showCloseButton: true,
  // show progress dots
  showProgressDots: true,
  // force Journey.js to open when the page has finished loading and state what step to start on
  browserUrlParametersEnabled: true,
  // enable Left/Right/ESC keys
  shortcutKeysEnabled: true,
  // custom button text
  backButtonText: "Previous",
  nextButtonText: "Next",
  finishButtonText: "Finish",
  // can be an array of strings, or a space separated string
  domElementTypes: "*",
  // if the progress dots should show the step numbers
  showProgressDotNumbers: true,
  // show the main buttons
  showButtons: true,
  // text for close button
  closeButtonToolTipText: "close",
  // text to display on the "Do not show again" checkbox
  doNotShowAgainText: "Do not show again",
  // show "Do not show again" checkbox
  showDoNotShowAgain: false,
  // show tooltip
  showProgressDotToolTips: true,
  // show progress bar
  showProgressBar: false,
  showProgressBarText: false,
  // enable moveable
  dialogMovingEnabled: false,
  // allows scrolling to elements
  scrollToElements: false,
  // close the dialog on click background overlay
  closeDialogOnDisabledBackgroundClick: false,
  // error messages
  objectErrorText: "TErrors in object: {{error_1}}, {{error_2}}",
  attributeNotValidErrorText: "The attribute '{{attribute_name}}' is not a valid object.",
  attributeNotSetErrorText: "The attribute '{{attribute_name}}' has not been set correctly.",
  closeDialogConfirmationText: null,

5. More API methods.

// start the journey
// show/hide the journey
// check if the journey is open
// check if the journey has been completed
// add steps
$journey.addStep(element, options);
// add all steps
// remove steps
// clear steps
// remove all hints
// reverse the step order
// set options

6. Override the default CSS variables to create your own styles.

:root {
    // Fonts
    --journey-js-default-font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
    // Colors
    --journey-js-color-black: #3b3a3a;
    --journey-js-color-white: #F5F5F5;
    --journey-js-color-gray: #AAAAAA;
    --journey-js-color-hint: rgba( 170, 170, 170, 0.5 );
    // Dialog
    --journey-js-dialog-background-color: #002244;
    --journey-js-dialog-text-color: var(--journey-js-color-white);
    --journey-js-dialog-border-color: #72A0C1;
    // Dialog - Buttons
    --journey-js-dialog-button-background-color: #002D62;
    --journey-js-dialog-button-border-color: #3457D5;
    --journey-js-dialog-button-text-color: var(--journey-js-color-white);
    // Dialog - Buttons - Hover
    --journey-js-dialog-button-hover-background-color: #007FFF;
    --journey-js-dialog-button-hover-border-color: var(--journey-js-dialog-button-border-color);
    --journey-js-dialog-button-hover-text-color: var(--journey-js-dialog-button-text-color);
    // Dialog - Buttons - Active
    --journey-js-dialog-button-active-background-color: #00b7ff;
    --journey-js-dialog-button-active-border-color: var(--journey-js-dialog-button-border-color);
    --journey-js-dialog-button-active-text-color: var(--journey-js-dialog-button-text-color);
    // Dialog - Buttons - Disabled
    --journey-js-dialog-button-disabled-background-color: var(--journey-js-dialog-background-color);
    // Dialog - Close Button
    --journey-js-dialog-close-button-background-color: var(--journey-js-dialog-button-background-color);
    --journey-js-dialog-close-button-border-color: var(--journey-js-dialog-button-border-color);
    --journey-js-dialog-close-button-size: 1.1rem;
    --journey-js-dialog-close-button-x-color: var(--journey-js-color-white);
    // Dialog - Close Button - Hover
    --journey-js-dialog-close-button-hover-background-color: var(--journey-js-dialog-button-hover-background-color);
    --journey-js-dialog-close-button-hover-x-color: var(--journey-js-dialog-close-button-x-color);
    --journey-js-dialog-close-button-hover-border-color: var(--journey-js-dialog-close-button-border-color);
    // Dialog - Close Button - Active
    --journey-js-dialog-close-button-active-background-color: var(--journey-js-dialog-button-active-background-color);
    --journey-js-dialog-close-button-active-x-color: var(--journey-js-dialog-close-button-x-color);
    --journey-js-dialog-close-button-active-border-color: var(--journey-js-dialog-close-button-border-color);
    // Borders
    --journey-js-border-radius: 0.5rem;
    --journey-js-border-size: 0.5px;
    // Sizes
    --journey-js-spacing: 10px;
    // Transitions
    --journey-js-transition: all .3s;


v2.0.2 (07/09/2024)

  • Added a “build-all” script option so that everything (including minimized versions) can be built with one command.
  • Minor CSS layout improvements.
  • Removed deprecated “cancelBubble” usages and replaced them with “stopPropagation()”.
  • Rewritten “getStyleValueByName()” to use the modern implementation to get a style.
  • Fixed a type mismatch between the PublicApi structure and the implementation.
  • Improved more type implementations.
  • The “import” public API function will now show the select files dialog if no files are passed.

v2.0.1 (07/06/2024)

  • Rewritten in TypeScript

v1.7.2 (06/18/2024)

  • Added export support for the global “$journey” object, which can now be imported as “journey.js”.

v1.7.1 (05/31/2024)

  • The public functions “start()”, “show()”, and “hide()” will now only fire if the right conditions are met (dialog open/closed, etc).
  • All text translations now allow empty text to be passed (which will prevent them from defaulting to the English version).

v1.7.0 (04/17/2024)

  • Added moveable support
  • Added new options
  • Improved UI

v1.6.1 (04/17/2024)

  • Improved UI

v1.6.0 (04/15/2024)

  • Added Group support
  • Added new options

v1.5.1 (04/09/2024)

  • Bugfixed

v1.5.0 (04/09/2024)

  • Added progress bar support
  • Added scroll to element support
  • Added more options
  • Refactored & improved code

v1.4.0 (04/07/2024)

  • Added Confirm to Close functionality
  • Added more options
  • Added more methods
  • Bugfixes

v1.3.0 (04/06/2024)

  • Added smooth transitions
  • Added custom tooltip
  • Added more options
  • Bugfixes

v1.2.0 (04/04/2024)

  • Added new options
  • Improvements

v1.1.1 (02/26/2024)

  • Added more translations

v1.1.0 (01/21/2024)

  • Bugfixes
  • Added more languages

v1.0.3 (01/21/2024)

  • Bugfixes

v1.0.2 (01/21/2024)

  • All hover transition effects now work for hovering, and not hovering, which results in a smoother display.
  • Removed the outline effect for the “Back”, “Next”, and “Finish” buttons.
  • Removed replicated HEX colors (all now reference the original “:root” variable).
  • Added an “:active” states for all buttons, dots, and the close button (now shows a slightly lighter background color).

v1.0.1 (01/18/2024)

  • Update

v0.8.0 (01/08/2024)

  • The progress dots will now show tooltips (which is the title of the step being focused).
  • The “Close” button now uses slightly thicker lines for the X.
  • Added more default padding around the progress dots area.
  • Added more options.
  • Fixed bugs.

v0.7.0 (01/06/2024)

  • Added hints support! This will draw a small icon in the top left of an element, that can be clicked to show a hint.
  • Renamed the configuration option “previousButtonText” to “backButtonText”.
  • Added more API methods.
  • Added active progress DOT is now slightly larger in width (makes it a bit more clear).
  • Renamed the CSS class “button.previous” to “button.back”.

v0.6.0 (01/04/2024)

  • Added new options
  • Added new callbacks
  • Added new shortcuts

v0.5.0 (12/30/2023)

  • Browser URL parameters support! This will allow you to force Journey.js to open when the page has finished loading and state what step to start on.

You Might Be Interested In:

Leave a Reply