Driver.js
A lightweight, dependency-free JavaScript library
...The API lets you define steps, order, and behavior, while handling positioning, scrolling, and viewport collisions gracefully. It strives to be unobtrusive: tours can be triggered contextually, resumed, or dismissed without hijacking the app. Accessibility and keyboard interaction are considered so tours remain usable beyond simple mouse clicks. Because it has no hard dependency on a specific framework, it integrates into vanilla JS apps or modern stacks alike.