创建一个包含图片和视频的自适应 Lightbox 图库。
Lightbox 组件完全自适应,支持触摸和滑动导航,以及桌面鼠标拖动。当在幻灯片之间滑动时,动画会紧贴您的指尖或鼠标光标。快速点击上一个和下一个导航,会使动画加速以跟上您的速度。所有动画都使用硬件加速,以实现更流畅的性能。
要应用此组件,请将 uk-lightbox
属性添加到一个容器中,以将该容器内的所有锚链接转换为 Lightbox 链接。
<div uk-lightbox>
<a href="image.jpg"></a>
</div>
<div uk-lightbox>
<a class="uk-button uk-button-default" href="images/photo.jpg">Open Lightbox</a>
</div>
要向 Lightbox 中的图片添加 alt
属性,请在锚链接上设置 data-alt
属性。
<div uk-lightbox>
<a href="image.jpg" data-alt="Image"></a>
</div>
<div uk-lightbox>
<a class="uk-button uk-button-default" href="images/photo.jpg" data-alt="Image">Open Lightbox</a>
</div>
要在 Lightbox 底部显示标题,请在锚链接上设置 data-caption
属性。
<div uk-lightbox>
<a href="image.jpg" data-caption="Caption"></a>
</div>
<div uk-lightbox>
<a class="uk-button uk-button-default" href="images/photo.jpg" data-caption="Caption">Open Lightbox</a>
</div>
默认情况下,Lightbox 图库使用滑动动画。您可以设置 animation
选项来使用不同的动画。可能的取值有 slide
、fade
和 scale
。
<div uk-lightbox="animation: fade">
<a href="image.jpg"></a>
</div>
<div class="uk-h3">Slide</div>
<div class="uk-child-width-1-3@m" uk-grid uk-lightbox="animation: slide">
<div>
<a class="uk-inline" href="images/photo.jpg" data-caption="Caption 1">
<img src="images/photo.jpg" width="1800" height="1200" alt="">
</a>
</div>
<div>
<a class="uk-inline" href="images/dark.jpg" data-caption="Caption 2">
<img src="images/dark.jpg" width="1800" height="1200" alt="">
</a>
</div>
<div>
<a class="uk-inline" href="images/light.jpg" data-caption="Caption 3">
<img src="images/light.jpg" width="1800" height="1200" alt="">
</a>
</div>
</div>
<div class="uk-h3">Fade</div>
<div class="uk-child-width-1-3@m" uk-grid uk-lightbox="animation: fade">
<div>
<a class="uk-inline" href="images/photo.jpg" data-caption="Caption 1">
<img src="images/photo.jpg" width="1800" height="1200" alt="">
</a>
</div>
<div>
<a class="uk-inline" href="images/dark.jpg" data-caption="Caption 2">
<img src="images/dark.jpg" width="1800" height="1200" alt="">
</a>
</div>
<div>
<a class="uk-inline" href="images/light.jpg" data-caption="Caption 3">
<img src="images/light.jpg" width="1800" height="1200" alt="">
</a>
</div>
</div>
<div class="uk-h3">Scale</div>
<div class="uk-child-width-1-3@m" uk-grid uk-lightbox="animation: scale">
<div>
<a class="uk-inline" href="images/photo.jpg" data-caption="Caption 1">
<img src="images/photo.jpg" width="1800" height="1200" alt="">
</a>
</div>
<div>
<a class="uk-inline" href="images/dark.jpg" data-caption="Caption 2">
<img src="images/dark.jpg" width="1800" height="1200" alt="">
</a>
</div>
<div>
<a class="uk-inline" href="images/light.jpg" data-caption="Caption 3">
<img src="images/light.jpg" width="1800" height="1200" alt="">
</a>
</div>
</div>
Lightbox 不仅限于图片。其他媒体,例如视频,也可以显示。只要视频不可见,它就会暂停,一旦变得可见,它就会恢复播放。要为视频显示海报图片,请设置 data-poster
属性。
<div uk-lightbox>
<a class="uk-button" href="video.mp4" data-poster="image.jpg"></a>
<a class="uk-button" href="https://www.youtube.com/watch?v=c2pz2mlSfXA"></a>
<a class="uk-button" href="https://vimeo.com/1084537"></a>
<a class="uk-button" href="https://www.google.com/maps"></a>
</div>
<div uk-lightbox>
<a class="uk-button uk-button-default" href="images/photo.jpg" data-caption="Image">Image</a>
<a class="uk-button uk-button-default" href="https://yootheme.com/site/images/media/yootheme-pro.mp4" data-caption="Video">Video</a>
<a class="uk-button uk-button-default" href="https://www.youtube.com/watch?v=c2pz2mlSfXA" data-caption="YouTube">YouTube</a>
<a class="uk-button uk-button-default" href="https://vimeo.com/1084537" data-caption="Vimeo">Vimeo</a>
<a class="uk-button uk-button-default" href="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d4740.819266853735!2d9.99008871708242!3d53.550454675412404!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x3f9d24afe84a0263!2sRathaus!5e0!3m2!1sde!2sde!4v1499675200938" data-caption="Google Maps" data-type="iframe">Google Maps</a>
</div>
注意 在 YouTube 链接中使用 youtube-nocookie.com
,Lightbox 将使用该域名嵌入 YouTube 视频。
Lightbox 使用 href
属性来确定链接内容的类型。如果路径中没有定义文件名扩展名,只需在 <a>
标签中添加 data-type
属性。
提示 YouTube 和 Vimeo URL 将自动处理。
选项 | 描述 |
---|---|
data-type="image" |
内容类型为图片。 |
data-type="video" |
内容类型为视频。 |
data-type="iframe" |
内容类型为普通网站。 |
您可以使用 data-attrs
属性向 Lightbox 内容项添加自定义属性。属性以与普通组件选项相同的方式传递,例如 data-attrs="width: 1280; height: 720;"
<div uk-lightbox>
<a class="uk-button" href="https://www.youtube.com/watch?v=c2pz2mlSfXA" data-attrs="width: 1280; height: 720;"></a>
</div>
<div uk-lightbox>
<a class="uk-button uk-button-default" href="https://www.youtube.com/watch?v=c2pz2mlSfXA" data-caption="YouTube" data-attrs="width: 1280; height: 720;">YouTube</a>
</div>
这些选项中的任何一个都可以应用于组件属性。用分号隔开多个选项。 了解更多
选项 | 值 | 默认值 | 描述 |
---|---|---|---|
animation |
字符串 | slide |
Lightbox 动画模式(slide 、fade 或 scale )。 |
autoplay |
布尔值 | false |
Lightbox 自动播放。 |
autoplay-interval |
数字 | 7000 |
自动播放模式下切换幻灯片之间的延迟。 |
pause-on-hover |
布尔值 | false |
将自动播放模式暂停在悬停时。 |
video-autoplay |
布尔值 | false |
Lightbox 视频自动播放。 |
index |
字符串、数字 | 0 |
要显示的 Lightbox 项目。从 0 开始的索引。 |
toggle |
CSS 选择器 | a |
切换选择器 - 点击时打开 Lightbox 面板。 |
了解更多关于 JavaScript 组件。
// To apply lightbox to a group of links
UIkit.lightbox(element, options);
// To dynamically initialize the lightbox panel
UIkit.lightboxPanel(panelOptions);
以下方法可用于组件
UIkit.lightbox(element).show(index);
显示 Lightbox 的面板和项目。
UIkit.lightbox(element).hide();
隐藏 Lightbox 的面板。
如果您只想通过 JS API 直接使用 Lightbox 面板,您可以设置以下选项。
选项 | 值 | 默认值 | 描述 |
---|---|---|---|
animation |
字符串 | slide |
Lightbox 动画模式(slide 、fade 或 scale )。 |
autoplay |
布尔值 | false |
Lightbox 自动播放。 |
autoplay-interval |
数字 | 7000 |
自动播放模式下切换幻灯片之间的延迟。 |
pause-on-hover |
布尔值 | false |
将自动播放模式暂停在悬停时。 |
video-autoplay |
布尔值 | false |
Lightbox 视频自动播放。 |
index |
数字 | 0 |
要显示的初始项目。(从零开始) |
速度 |
数字 | 2 |
动画速度(像素/毫秒)。 |
预加载 |
数字 | 1 |
要预加载的项目数量。(当前活动项目左侧和右侧) |
项目 |
数组 | [] |
要显示的项目数组,例如 [{source: 'images/size1.jpg', caption: '900x600'}] |
模板 |
字符串 | 默认标记 | 模板字符串。 |
延迟控制 |
数字 | 3000 |
控件在淡出之前延迟的时间(毫秒)。 |
容器 |
字符串 | body |
通过选择器定义目标容器,以指定 Lightbox 应该在 DOM 中的哪个位置追加。 |
以下事件将在附加了此组件的元素上触发
名称 | 描述 |
---|---|
beforeshow |
在显示 Lightbox 之前触发。 |
beforehide |
在隐藏 Lightbox 之前触发。 |
显示 |
在显示 Lightbox 之后触发。 |
显示完毕 |
在 Lightbox 的显示动画完成之后触发。 |
隐藏 |
在 Lightbox 的隐藏动画开始之后触发。 |
隐藏完毕 |
在隐藏 Lightbox 之后触发。 |
itemload |
在项目加载时触发。 |
beforeitemshow |
在显示项目之前触发。 |
itemshow |
在显示项目之后触发。 |
itemshown |
在项目的显示动画完成之后触发。 |
beforeitemhide |
在隐藏项目之前触发。 |
itemhide |
在项目的隐藏动画开始之后触发。 |
itemhidden |
在项目的隐藏动画完成之后触发。 |
以下方法可用于组件
UIkit.lightboxPanel(element).show(index);
显示 Lightbox 面板和项目。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
index |
字符串、数字 | 0 | 要显示的 Lightbox 项目。从 0 开始的索引。 |
UIkit.lightboxPanel(element).hide();
隐藏 Lightbox 面板。
UIkit.lightboxPanel(element).startAutoplay();
开始 Lightbox 的自动播放。
UIkit.lightboxPanel(element).stopAutoplay();
停止 Lightbox 的自动播放。
Lightbox 组件遵循 对话框(模态框)WAI-ARIA 设计模式 和 轮播 WAI-ARIA 设计模式,并自动设置适当的 WAI-ARIA 角色、状态和属性。
dialog
角色、aria-modal
属性和设置为 carousel
的 aria-roledescription
属性。presentation
角色和 aria-live
属性。group
角色、设置为 slide
的 aria-roledescription
属性和一个 aria-label
属性。上一个/下一个导航遵循 按钮模式。
button
角色、设置为幻灯片列表 ID 的 aria-controls
属性和一个 aria-label
属性。关闭组件会自动设置适当的 WAI-ARIA 角色和属性。
aria-label
属性,如果使用 <a>
元素,则具有 button
角色。可以通过键盘使用以下键访问 Lightbox 图库。
Lightbox 组件使用以下翻译字符串。了解更多关于 翻译组件。
键 | 默认值 | 描述 |
---|---|---|
下一个 |
下一张幻灯片 |
下一张幻灯片按钮的 aria-label 。 |
上一个 |
上一张幻灯片 |
上一张幻灯片按钮的 aria-label 。 |
slideLabel |
%s of %s |
幻灯片的 aria-label 。 |
关闭 |
关闭 |
关闭按钮的 aria-label 。 |