viewerjs

viewerjs

多功能JavaScript图像查看器 支持丰富交互

Viewer.js是一个功能全面的JavaScript图像查看器库。它提供53个配置选项、23个方法和17个事件,支持模态和内联模式。该库实现了触控、移动、缩放、旋转和翻转等交互,并支持键盘控制。Viewer.js具有跨浏览器兼容性,集成简便,为开发者提供灵活的图像查看方案。

Viewer.js图片查看器JavaScript库图像浏览开源项目Github

Viewer.js

Downloads Version Gzip Size

JavaScript image viewer.

Table of contents

Features

  • Supports 53 options
  • Supports 23 methods
  • Supports 17 events
  • Supports modal and inline modes
  • Supports touch
  • Supports move
  • Supports zoom
  • Supports rotation
  • Supports scale (flip)
  • Supports keyboard
  • Cross-browser support

Main files

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)

Getting started

Installation

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.

Usage

Syntax

new Viewer(element[, options])
  • element

    • Type: HTMLElement
    • The target image or container of images for viewing.
  • options (optional)

    • Type: Object
    • The options for viewing. Check out the available options.

Example

<!-- 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()`.

Keyboard support

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.

⬆ back to top

Options

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).

backdrop

  • Type: Boolean or String
  • Default: true

Enable the modal backdrop, specify static for the backdrop that will not close the modal on click.

button

  • Type: Boolean
  • Default: true

Show the button on the top-right of the viewer.

navbar

  • Type: Boolean or Number
  • Default: true
  • Options:
    • 0 or false: hide the navbar
    • 1 or true: show the navbar
    • 2: show the navbar only when the screen width is greater than 768 pixels
    • 3: show the navbar only when the screen width is greater than 992 pixels
    • 4: show the navbar only when the screen width is greater than 1200 pixels

Specify the visibility of the navbar.

title

  • Type: Boolean or Number or Function or Array
  • Default: true
  • Options:
    • 0 or false: hide the title
    • 1 or true or Function or Array: show the title
    • 2: show the title only when the screen width is greater than 768 pixels
    • 3: show the title only when the screen width is greater than 992 pixels
    • 4: show the title only when the screen width is greater than 1200 pixels
    • Function: customize the title content
    • [Number, Function]: the first element indicate the visibility, the second element customize the title content

Specify the visibility and the content of the title.

The name comes from the alt attribute 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})`] });

toolbar

  • Type: Boolean or Number or Object
  • Default: true
  • Options:
    • 0 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.
    • Available built-in keys: "zoomIn", "zoomOut", "oneToOne", "reset", "prev", "play", "next", "rotateLeft", "rotateRight", "flipHorizontal", "flipVertical".
    • Available built-in sizes: "small", "medium" (default) and "large".

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.

className

  • Type: String
  • Default: ''

Custom class name(s) to add to the viewer's root element.

container

Container to place the viewer in the modal mode.

Only available when the inline option is set to false.

filter

  • Type: Function
  • Default: null

Filter 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 src attribute set will be ignored by default.

fullscreen

Enable to request full screen when play.

Requires the browser supports Fullscreen API.

inheritedAttributes

  • Type: Array
  • Default: ['crossOrigin', 'decoding', 'isMap', 'loading', 'referrerPolicy', 'sizes', 'srcset', 'useMap']

Define the extra attributes to inherit from the original image.

Note that the basic attributes src and alt will always inherit from the original image.

initialCoverage

  • Type: Number
  • Default: 0.9

Define the initial coverage of the viewing image. It must a positive number between 0 (0%) and 1 (100%).

initialViewIndex

  • Type: Number
  • Default: 0

Define the initial index of the image for viewing.

Also used as the default parameter value of the view method.

inline

  • Type: Boolean
  • Default: false

Enable inline mode.

interval

  • Type: Number
  • Default: 5000

The amount of time to delay between automatically cycling an image when playing.

keyboard

  • Type: Boolean
  • Default: true

Enable keyboard support.

focus

  • Type: Boolean
  • Default: true

Focus the active item in the navbar when initialized.

Requires the keyboard option set to true.

loading

  • Type: Boolean
  • Default: true

Indicate if showing a loading spinner when loading the image or not.

loop

  • Type: Boolean
  • Default: true

Indicate 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.

minWidth

  • Type: Number
  • Default: 200

Define the minimum width of the viewer.

Only available in inline mode (set the inline option to true).

minHeight

  • Type: Number
  • Default: 100

Define the minimum height of the viewer.

Only available in inline mode (set the inline option to true).

movable

  • Type: Boolean
  • Default: true

Enable to move the image.

rotatable

  • Type: Boolean
  • Default: true

Enable to rotate the image.

scalable

  • Type: Boolean
  • Default: true

Enable to scale the image.

zoomable

  • Type: Boolean
  • Default: true

Enable to zoom the image.

zoomOnTouch

  • Type: Boolean
  • Default: true

Enable to zoom the current image by dragging on the touch screen.

zoomOnWheel

  • Type: Boolean
  • Default: true

Enable to zoom the image by wheeling the mouse.

slideOnTouch

  • Type: Boolean
  • Default: true

Enable to slide to the next or previous image by swiping on the touch screen.

toggleOnDblclick

  • Type: Boolean
  • Default: true

Indicate 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 dblclick event support.

tooltip

  • Type: Boolean
  • Default: true

Show the tooltip with image ratio (percentage) when zooming in or zooming out.

transition

  • Type: Boolean
  • Default: true

Enable CSS3 Transition for some special elements.

zIndex

  • Type: Number
  • Default: 2015

Define the CSS z-index value of the viewer in modal mode.

zIndexInline

  • Type: Number
  • Default: 0

Define the CSS z-index value of the viewer in inline mode.

zoomRatio

  • Type: Number
  • Default: 0.1

Define the ratio when zooming the image by wheeling the mouse.

minZoomRatio

  • Type: Number
  • Default: 0.01

Define the min ratio of the image when zooming out.

maxZoomRatio

  • Type: Number
  • Default: 100

Define the max ratio of the image when zooming in.

url

  • Type: String or Function
  • Default: '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', ''); }, });

ready

  • Type: Function
  • Default: null

Shortcut of the ready event.

show

  • Type: Function
  • Default: null

Shortcut of the show event.

shown

  • Type: Function
  • Default: null

Shortcut of the shown event.

hide

  • Type: Function
  • Default: null

Shortcut of the hide event.

hidden

  • Type: Function
  • Default: null

Shortcut of the hidden event.

view

  • Type: Function
  • Default: null

Shortcut of the view event.

viewed

  • Type: Function
  • Default: null

Shortcut of the viewed event.

move

  • Type: Function
  • Default: null

Shortcut of the move event.

moved

  • Type: Function
  • Default: null

Shortcut of the moved event.

rotate

  • Type: Function
  • Default: null

Shortcut of the rotate event.

rotated

  • Type: Function
  • Default: null

Shortcut of the rotated event.

scale

  • Type: Function
  • Default: null

Shortcut of the scale event.

scaled

  • Type: Function
  • Default: null

Shortcut of the scaled event.

zoom

  • Type: Function
  • Default: null

Shortcut of the zoom event.

zoomed

  • Type: Function
  • Default: null

Shortcut of the zoomed event.

play

  • Type: Function
  • Default: null

Shortcut of the play event.

stop

  • Type: Function
  • Default: null

Shortcut of the stop event.

⬆ back to top

Methods

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); } });

show([immediate])

  • immediate (optional):
    • Type: Boolean
    • Default: false
    • Indicates if show the viewer immediately or not.

Show the viewer.

Only available in modal mode.

hide([immediate])

  • immediate (optional):
    • Type: Boolean
    • Default: false
    • Indicates if hide the viewer immediately or not.

Hide the viewer.

Only available in modal mode.

view([index])

  • index (optional):
    • Type: Number
    • Default: 0 (inherits from the initialViewIndex option)
    • The index of the image for viewing

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

prev([loop=false])

  • loop (optional):
    • Type: Boolean
    • Default: false
    • Indicate if turn to view the last one when it is the first one at present.

View the previous image.

next([loop=false])

  • loop (optional):
    • Type: Boolean
    • Default: false
    • Indicate if turn to view the first one when it is the last one at present.

View the next image.

move(x[, y = x])

  • x:

    • Type: Number
    • The moving distance in the horizontal direction.
  • y (optional):

    • Type: Number
    • The moving distance in the vertical direction.
    • If not present, its default value is x

Move the image with relative

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

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

热门AI工具生产力协作转型TraeAI IDE
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI助手AI工具AI写作工具AI辅助写作蛙蛙写作学术助手办公助手营销助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

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

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

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

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多