JavaScript image viewer.
dist/ ├── viewer.css ├── viewer.min.css (compressed) ├── viewer.js (UMD) ├── viewer.min.js (UMD, compressed) ├── viewer.common.js (CommonJS, default) └── viewer.esm.js (ES Module)
npm install viewerjs
In browser:
<link href="/path/to/viewer.css" rel="stylesheet"> <script src="/path/to/viewer.js"></script>
The cdnjs provides CDN support for Viewer.js's CSS and JavaScript. You can find the links here.
new Viewer(element[, options])
element
HTMLElementoptions (optional)
Object<!-- a block container is required --> <div> <img id="image" src="picture.jpg" alt="Picture"> </div> <div> <ul id="images"> <li><img src="picture-1.jpg" alt="Picture 1"></li> <li><img src="picture-2.jpg" alt="Picture 2"></li> <li><img src="picture-3.jpg" alt="Picture 3"></li> </ul> </div>
// You should import the CSS file. // import 'viewerjs/dist/viewer.css'; import Viewer from 'viewerjs'; // View an image. const viewer = new Viewer(document.getElementById('image'), { inline: true, viewed() { viewer.zoomTo(1); }, }); // Then, show the image by clicking it, or call `viewer.show()`. // View a list of images. // Note: All images within the container will be found by calling `element.querySelectorAll('img')`. const gallery = new Viewer(document.getElementById('images')); // Then, show one image by click it, or call `gallery.show()`.
Only available in modal mode.
Esc: Exit full screen or close the viewer or exit modal mode or stop play.Space: Stop play.Tab: Switch the focus state on the buttons in the viewer.Enter: Trigger the click event handler on the button.←: View the previous image.→: View the next image.↑: Zoom in the image.↓: Zoom out the image.Ctrl + 0: Zoom out to initial size.Ctrl + 1: Zoom in to natural size.You may set viewer options with new Viewer(image, options).
If you want to change the global default options, You may use Viewer.setDefaults(options).
Boolean or StringtrueEnable the modal backdrop, specify static for the backdrop that will not close the modal on click.
BooleantrueShow the button on the top-right of the viewer.
Boolean or Numbertrue0 or false: hide the navbar1 or true: show the navbar2: show the navbar only when the screen width is greater than 768 pixels3: show the navbar only when the screen width is greater than 992 pixels4: show the navbar only when the screen width is greater than 1200 pixelsSpecify the visibility of the navbar.
Boolean or Number or Function or Arraytrue0 or false: hide the title1 or true or Function or Array: show the title2: show the title only when the screen width is greater than 768 pixels3: show the title only when the screen width is greater than 992 pixels4: show the title only when the screen width is greater than 1200 pixelsFunction: customize the title content[Number, Function]: the first element indicate the visibility, the second element customize the title contentSpecify the visibility and the content of the title.
The name comes from the
altattribute of an image element or the image name parsed from its URL.
For example, title: 4 equals to:
new Viewer(image, { title: [4, (image, imageData) => `${image.alt} (${imageData.naturalWidth} × ${imageData.naturalHeight})`] });
Boolean or Number or Objecttrue0 or false: hide the toolbar.1 or true: show the toolbar.2: show the toolbar only when the screen width is greater than 768 pixels.3: show the toolbar only when the screen width is greater than 992 pixels.4: show the toolbar only when the screen width is greater than 1200 pixels.{ key: Boolean | Number }: show or hide the toolbar.{ key: String }: customize the size of the button.{ key: Function }: customize the click handler of the button.{ key: { show: Boolean | Number, size: String, click: Function }: customize each property of the button.Specify the visibility and layout of the toolbar its buttons.
For example, toolbar: 4 equals to:
new Viewer(image, { toolbar: { zoomIn: 4, zoomOut: 4, oneToOne: 4, reset: 4, prev: 4, play: { show: 4, size: 'large', }, next: 4, rotateLeft: 4, rotateRight: 4, flipHorizontal: 4, flipVertical: 4, }, });
see more for custom toolbar.
String''Custom class name(s) to add to the viewer's root element.
Element or String'body'Container to place the viewer in the modal mode.
Only available when the
inlineoption is set tofalse.
FunctionnullFilter the images for viewing (should return true if the image is viewable, return false to ignore the image).
For example:
new Viewer(image, { filter(image) { return image.complete; }, });
Note that images without the
srcattribute set will be ignored by default.
Boolean or FullscreenOptionstrueEnable to request full screen when play.
Requires the browser supports Fullscreen API.
Array['crossOrigin', 'decoding', 'isMap', 'loading', 'referrerPolicy', 'sizes', 'srcset', 'useMap']Define the extra attributes to inherit from the original image.
Note that the basic attributes
srcandaltwill always inherit from the original image.
Number0.9Define the initial coverage of the viewing image. It must a positive number between 0 (0%) and 1 (100%).
Number0Define the initial index of the image for viewing.
Also used as the default parameter value of the
viewmethod.
BooleanfalseEnable inline mode.
Number5000The amount of time to delay between automatically cycling an image when playing.
BooleantrueEnable keyboard support.
BooleantrueFocus the active item in the navbar when initialized.
Requires the
keyboardoption set totrue.
BooleantrueIndicate if showing a loading spinner when loading the image or not.
BooleantrueIndicate if enabling loop viewing or not.
If the current image is the last one, then the next one to view is the first one, and vice versa.
NumberDefine the minimum width of the viewer.
Only available in inline mode (set the
inlineoption totrue).
NumberDefine the minimum height of the viewer.
Only available in inline mode (set the
inlineoption totrue).
BooleantrueEnable to move the image.
BooleantrueEnable to rotate the image.
BooleantrueEnable to scale the image.
BooleantrueEnable to zoom the image.
BooleantrueEnable to zoom the current image by dragging on the touch screen.
BooleantrueEnable to zoom the image by wheeling the mouse.
BooleantrueEnable to slide to the next or previous image by swiping on the touch screen.
BooleantrueIndicate if toggle the image size between its natural size and initial size when double click on the image or not.
In other words, call the toggle method automatically when double click on the image.
Requires
dblclickevent support.
BooleantrueShow the tooltip with image ratio (percentage) when zooming in or zooming out.
BooleantrueEnable CSS3 Transition for some special elements.
Number2015Define the CSS z-index value of the viewer in modal mode.
Number0Define the CSS z-index value of the viewer in inline mode.
Number0.1Define the ratio when zooming the image by wheeling the mouse.
Number0.01Define the min ratio of the image when zooming out.
Number100Define the max ratio of the image when zooming in.
String or Function'src'Define where to get the original image URL for viewing.
If it is a string, it should be one of the attributes of each image element. If it is a function, it should return a valid image URL.
For example:
<img src="picture.jpg?size=160">
new Viewer(image, { url(image) { return image.src.replace('?size=160', ''); }, });
FunctionnullShortcut of the ready event.
FunctionnullShortcut of the show event.
FunctionnullShortcut of the shown event.
FunctionnullShortcut of the hide event.
FunctionnullShortcut of the hidden event.
FunctionnullShortcut of the view event.
FunctionnullShortcut of the viewed event.
FunctionnullShortcut of the move event.
FunctionnullShortcut of the moved event.
FunctionnullShortcut of the rotate event.
FunctionnullShortcut of the rotated event.
FunctionnullShortcut of the scale event.
FunctionnullShortcut of the scaled event.
FunctionnullShortcut of the zoom event.
FunctionnullShortcut of the zoomed event.
FunctionnullShortcut of the play event.
FunctionnullShortcut of the stop event.
All methods allow chain composition.
As there are some asynchronous processes when start the viewer, you should call a method only when it is available, see the following lifecycle:
new Viewer(image, { ready() { // 2 methods are available here: "show" and "destroy". }, shown() { // 9 methods are available here: "hide", "view", "prev", "next", "play", "stop", "full", "exit" and "destroy". }, viewed() { // All methods are available here except "show". this.viewer.zoomTo(1).rotateTo(180); } });
BooleanfalseShow the viewer.
Only available in modal mode.
BooleanfalseHide the viewer.
Only available in modal mode.
Number0 (inherits from the initialViewIndex option)View one of the images with the image index. If the viewer is hidden, it will be shown first.
viewer.view(1); // View the second image
BooleanfalseView the previous image.
BooleanfalseView the next image.
x:
Numbery (optional):
NumberxMove the image with relative


AI赋能电商视觉革命,一站式智能商拍平台
潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。


企业专属的AI法律顾问
iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。


稳定高效的流量提升解决方案,助力品牌曝光
稳定高效的流量提升解决方案,助力品牌曝光


最新版Sora2模型免费使用,一键生成无水印视频
最新版Sora2模型免费使用,一键生成无水印视频


实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。


选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。


AI辅助编程,代码自动修复
Trae是一种自适应的集成 开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。


最强AI数据分析助手
小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。


像人一样思考的AI智能体
imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。


AI数字人视频创作平台
Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。
最新AI工具、AI资讯
独家AI资源、AI项目落地

微信扫一扫关注公众号