创建响应式的轮播滑块。
滑块(Slider)组件完全响应式,支持触摸滑动导航,也支持桌面端的鼠标拖拽。连续点击 `previous and next navigation 时,它甚至会加速以跟上你的操作节奏。所有动画都经过硬件加速,以获得更平滑的性能。
要使用这个组件,为容器元素添加 uk-slider 属性,并用 .uk-slider-items 类创建幻灯片列表。为每个项目添加图片或任意其他内容。
要定义滑块项目的宽度,可使用 Width 组件。既可以给所有滑块项目应用 .uk-child-width-* 类来统一定义宽度,也可以用 .uk-width-* 类为每个列表项单独设置宽度。如果没有设置具体宽度,每个项目的宽度取决于内容自身的尺寸。
<div uk-slider>
<div class="uk-slider-items uk-child-width-1-3@s uk-child-width-1-4@">
<div>
<img src="" width="" height="" alt="">
</div>
</div>
</div><div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1" uk-slider>
<div class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@s uk-child-width-1-4@m">
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>1</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>2</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>3</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>4</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>5</h1></div>
</div>
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>6</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>7</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>8</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>9</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>10</h1></div>
</div>
</div>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href uk-slidenav-next uk-slider-item="next"></a>
</div>注意 要对幻灯片中的图片进行懒加载,使用 loading="lazy" 属性。Slider 会自动从相邻幻灯片的图片上移除该属性。
.uk-slider-container 类负责裁剪滑块项目。默认情况下,uk-slider 属性会把该类应用到同一个元素上。你也可以手动把该类添加到滑块内部的任意元素上,这样就可以控制由哪个容器来裁剪滑块项目。
<div uk-slider>
<div class="uk-slider-container">
<div class="uk-slider-items uk-child-width-1-4">
<div>
<img src="" width="" height="" alt="">
</div>
</div>
</div>
</div>由于滑块效果需要一个裁剪容器,内容项的盒阴影也会一并被裁剪。要加宽容器以避免盒阴影被裁剪,添加 .uk-slider-container-offset 类。
要为滑块项目设置间距,可使用 Grid 组件,并为滑块添加 .uk-grid 类。元素之间随后会按栅格间距排布。你可以使用 .uk-grid-small 这类修饰符来改变间距。
<div uk-slider>
<div class="uk-slider-items uk-child-width-1-2@s uk-child-width-1-3@m uk-grid">
<div>
<img src="" width="" height="" alt="">
</div>
</div>
</div><div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1" uk-slider>
<div class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@m uk-grid">
<div>
<div class="uk-panel">
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>1</h1></div>
</div>
</div>
<div>
<div class="uk-panel">
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>2</h1></div>
</div>
</div>
<div>
<div class="uk-panel">
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>3</h1></div>
</div>
</div>
<div>
<div class="uk-panel">
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>4</h1></div>
</div>
</div>
<div>
<div class="uk-panel">
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>5</h1></div>
</div>
</div>
<div>
<div class="uk-panel">
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>6</h1></div>
</div>
</div>
<div>
<div class="uk-panel">
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>7</h1></div>
</div>
</div>
<div>
<div class="uk-panel">
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>8</h1></div>
</div>
</div>
<div>
<div class="uk-panel">
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>9</h1></div>
</div>
</div>
<div>
<div class="uk-panel">
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>10</h1></div>
</div>
</div>
</div>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href uk-slidenav-next uk-slider-item="next"></a>
</div>默认情况下,滑块的项目总是左对齐。要让列表项居中,只需在属性中添加 center: true。
<div uk-slider="center: true">…</div><div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1" uk-slider="center: true">
<div class="uk-slider-items uk-grid">
<div class="uk-width-3-4">
<div class="uk-panel">
<img src="images/photo.jpg" width="600" height="400" alt="">
<div class="uk-position-center uk-panel"><h1>1</h1></div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-panel">
<img src="images/dark.jpg" width="600" height="400" alt="">
<div class="uk-position-center uk-panel"><h1>2</h1></div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-panel">
<img src="images/light.jpg" width="600" height="400" alt="">
<div class="uk-position-center uk-panel"><h1>3</h1></div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-panel">
<img src="images/photo2.jpg" width="600" height="400" alt="">
<div class="uk-position-center uk-panel"><h1>4</h1></div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-panel">
<img src="images/photo3.jpg" width="600" height="400" alt="">
<div class="uk-position-center uk-panel"><h1>5</h1></div>
</div>
</div>
</div>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href uk-slidenav-next uk-slider-item="next"></a>
</div>注意 在这个示例中,我们为每个项目添加了 .uk-width-3-4 类,这会让滑块看起来非常接近轮播(Slideshow)。
要启用自动播放,只需在属性中添加 autoplay: true 选项。你也可以用 autoplay-interval: 6000 设置切换幻灯片之间的间隔时间(毫秒)。要在悬停滑块时暂停自动播放,使用 pause-on-hover: true。
<div uk-slider="autoplay: true">…</div>默认情况下,无限滚动是开启的。要禁用这一行为,只需在属性中添加 finite: true 选项。
<div uk-slider="finite: true">…</div>要按整组幻灯片而不是单个项目来循环,只需在属性中添加 sets: true。
<div uk-slider="sets: true">…</div><div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1" uk-slider="sets: true">
<div class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@m">
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>1</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>2</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>3</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>4</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>5</h1></div>
</div>
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>6</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>7</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>8</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>9</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>10</h1></div>
</div>
</div>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href uk-slidenav-next uk-slider-item="next"></a>
</div>要在幻灯片之间导航,只需使用 uk-slider-item 属性。要定位到某张幻灯片,把每个导航项的属性值设为对应滑块项目的索引编号。带 uk-slider-item 属性的元素必须位于 uk-slider 容器内部。把属性值设为 next 和 previous 会切换到相邻的幻灯片。
<div uk-slider>
<div class="uk-slider-items">…</div>
<a href uk-slider-item="previous">…</a>
<a href uk-slider-item="next">…</a>
<ul>
<li uk-slider-item="0"><a href>…</a></li>
<li uk-slider-item="1"><a href>…</a></li>
<li uk-slider-item="2"><a href>…</a></li>
</ul>
</div>Slideshow 组件的灵活性让你可以使用任意其他 UIkit 组件来导航项目。例如,可以用 Slidenav、Dotnav 和 Thumbnav 组件来为幻灯片导航设置样式。
如果导航项中不需要项目专属的内容,也可以添加 .uk-slider-nav 类,而不必手动添加导航项。它会以 <li><a href></a></li> 作为标记自动生成导航项。在使用 Dotnav 时,这是一个很方便的捷径。
<div uk-slider>
<div class="uk-slider-items">…</div>
<ul class="uk-slider-nav uk-dotnav"></ul>
</div><div uk-slider>
<div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1">
<div class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@s uk-child-width-1-4@m">
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>1</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>2</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>3</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>4</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>5</h1></div>
</div>
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>6</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>7</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>8</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>9</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>10</h1></div>
</div>
</div>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href uk-slidenav-next uk-slider-item="next"></a>
</div>
<ul class="uk-slider-nav uk-dotnav uk-flex-center uk-margin"></ul>
</div>注意 为了让叠加的导航更清晰可见,可添加 Inverse 组件 中的 .uk-light 或 .uk-dark 类。
要把导航放在滑块外部,请把 Position 组件 中的 .uk-position-center-left-out 和 .uk-position-center-right-out 类分别添加到 previous 和 next 导航上。请确保负责裁剪滑块项目的 .uk-slider-container 类不会把导航也一并裁剪。
<div uk-slider>
<div class="uk-position-relative">
<div class="uk-slider-container">
<div class="uk-slider-items">…</div>
</div>
<a class="uk-position-center-left-out" href uk-slider-item="previous">…</a>
<a class="uk-position-center-right-out" href uk-slider-item="next">…</a>
</div>
<ul class="uk-slider-nav uk-dotnav"></ul>
</div><div uk-slider>
<div class="uk-position-relative">
<div class="uk-slider-container uk-light">
<div class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@s uk-child-width-1-4@m">
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>1</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>2</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>3</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>4</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>5</h1></div>
</div>
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>6</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>7</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>8</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>9</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>10</h1></div>
</div>
</div>
</div>
<div class="uk-hidden@s uk-light">
<a class="uk-position-center-left uk-position-small" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small" href uk-slidenav-next uk-slider-item="next"></a>
</div>
<div class="uk-visible@s">
<a class="uk-position-center-left-out uk-position-small" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right-out uk-position-small" href uk-slidenav-next uk-slider-item="next"></a>
</div>
</div>
<ul class="uk-slider-nav uk-dotnav uk-flex-center uk-margin"></ul>
</div>除了通过导航控件逐步切换,滑块还可以根据其在视口中的滚动位置使用无级视差动画。只需在属性中添加 parallax: true。如果标记中设置了导航,它将不可点击,但仍会获得当前幻灯片的激活状态。
<div uk-slider="parallax: true">…</div><div uk-slider="parallax: true;">
<div class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@s uk-child-width-1-4@m uk-light">
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>1</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>2</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>3</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>4</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>5</h1></div>
</div>
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>6</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>7</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>8</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>9</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>10</h1></div>
</div>
</div>
<ul class="uk-slider-nav uk-dotnav uk-flex-center uk-margin"></ul>
</div>要调整视差时长,设置 parallax-start 和 parallax-end 选项。parallax-start 选项定义动画何时开始,默认值 0 表示滑块的上边框与视口的下边框相交。end 选项定义动画何时结束,默认值 0 表示滑块的下边框与视口的上边框相交。值可以设置为任意尺寸单位,即 vh、% 和 px。其中 % 单位相对于滑块的高度。这两个选项都支持基本数学运算符 + 和 -。
<div uk-slider="parallax: true; parallax-start: 100%; parallax-end: 100%;">…</div><div uk-slider="parallax: true; parallax-start: 100%; parallax-end: 100%;">
<div class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@s uk-child-width-1-4@m uk-light">
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>1</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>2</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>3</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>4</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>5</h1></div>
</div>
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>6</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>7</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>8</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>9</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>10</h1></div>
</div>
</div>
<ul class="uk-slider-nav uk-dotnav uk-flex-center uk-margin"></ul>
</div>把 Height 组件 中的 uk-height-viewport 属性添加到滑块项目列表上,会把 <ul> 和 <li> 元素的高度拉伸至填满整个视口高度。由于此时宽度和高度不再由项目内容决定,你必须为内容使用绝对定位。
可使用 Cover 组件,让图片覆盖整个项目区域并被裁剪。Grid 组件 中的 .uk-grid-match 类会匹配每个项目直接子元素的高度。这在本例中很有用,因为子元素现在会应用与列表项相同的宽度和高度。
<div uk-slider>
<div class="uk-slider-items uk-child-width-1-3@m uk-grid-match" uk-height-viewport="min: 300">
<div>
<div class="uk-cover-container">
<img src="" alt="" uk-cover>
</div>
</div>
</div>
</div><div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1" uk-slider="center: true">
<div class="uk-slider-items uk-grid uk-grid-match" uk-height-viewport="offset-top: true; offset-bottom: 30">
<div class="uk-width-3-4">
<div class="uk-cover-container">
<img src="images/photo.jpg" alt="" uk-cover>
<div class="uk-position-center uk-panel"><h1>1</h1></div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-cover-container">
<img src="images/dark.jpg" alt="" uk-cover>
<div class="uk-position-center uk-panel"><h1>2</h1></div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-cover-container">
<img src="images/light.jpg" alt="" uk-cover>
<div class="uk-position-center uk-panel"><h1>3</h1></div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-cover-container">
<img src="images/photo2.jpg" alt="" uk-cover>
<div class="uk-position-center uk-panel"><h1>4</h1></div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-cover-container">
<img src="images/photo3.jpg" alt="" uk-cover>
<div class="uk-position-center uk-panel"><h1>5</h1></div>
</div>
</div>
</div>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href uk-slidenav-next uk-slider-item="next"></a>
</div>注意 这个示例把高度设为视口高度的 70%。
滑块并不限于图片。可以使用任意内容,例如文字、视频、带文字覆盖层的图片,或肯·伯恩斯(Ken Burns)效果。下面是一个使用 Card 组件 的示例。
<div class="uk-slider-container-offset" uk-slider>
<div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1">
<div class="uk-slider-items uk-child-width-1-2@s uk-grid">
<div>
<div class="uk-card uk-card-default">
<div class="uk-card-media-top">
<img src="images/photo.jpg" width="1800" height="1200" alt="">
</div>
<div class="uk-card-body">
<h3 class="uk-card-title">Headline</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</p>
</div>
</div>
</div>
<div>
<div class="uk-card uk-card-default">
<div class="uk-card-media-top">
<img src="images/dark.jpg" width="1800" height="1200" alt="">
</div>
<div class="uk-card-body">
<h3 class="uk-card-title">Headline</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</p>
</div>
</div>
</div>
<div>
<div class="uk-card uk-card-default">
<div class="uk-card-media-top">
<img src="images/light.jpg" width="1800" height="1200" alt="">
</div>
<div class="uk-card-body">
<h3 class="uk-card-title">Headline</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</p>
</div>
</div>
</div>
<div>
<div class="uk-card uk-card-default">
<div class="uk-card-media-top">
<img src="images/photo2.jpg" width="1800" height="1200" alt="">
</div>
<div class="uk-card-body">
<h3 class="uk-card-title">Headline</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</p>
</div>
</div>
</div>
<div>
<div class="uk-card uk-card-default">
<div class="uk-card-media-top">
<img src="images/photo3.jpg" width="1800" height="1200" alt="">
</div>
<div class="uk-card-body">
<h3 class="uk-card-title">Headline</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt.</p>
</div>
</div>
</div>
</div>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href uk-slidenav-next uk-slider-item="next"></a>
</div>
<ul class="uk-slider-nav uk-dotnav uk-flex-center uk-margin"></ul>
</div>注意 由于滑块效果需要裁剪容器,内容项的盒阴影也会被裁剪。要加宽容器以避免盒阴影被裁剪,添加 .uk-slider-container-offset 类。或者,如果你的内容项带有盒阴影,可以使用 uk-slider="center: true" 模式。
使用 Position 组件 添加内容覆盖层。它让你可以把内容放在幻灯片内的任意位置。
<div uk-slider>
<div class="uk-slider-items">
<div>
<img src="" width="" height="" alt="">
<div class="uk-position-center">
<!-- The content goes here -->
</div>
</div>
</div>
</div>注意 要让内容在每张图片上都更清晰可见,可添加 Inverse 组件 中的 .uk-light 或 .uk-dark 类,或者使用 Overlay 为覆盖层盒子添加任意样式。
<div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1" uk-slider>
<div class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@s uk-child-width-1-4@m">
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>1</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>2</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>3</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>4</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>5</h1></div>
</div>
<div>
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>6</h1></div>
</div>
<div>
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>7</h1></div>
</div>
<div>
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>8</h1></div>
</div>
<div>
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>9</h1></div>
</div>
<div>
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1>10</h1></div>
</div>
</div>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href uk-slidenav-next uk-slider-item="next"></a>
</div>为幻灯片内部的任意元素添加 uk-slider-parallax 属性,即可让它随着滑块动画一起播放动画。为每个想要添加动画的 CSS 属性添加一个选项,并填入所需的动画值。至少要定义一个起始值和一个结束值,用逗号分隔两个值即可实现。
该功能继承自 Parallax 组件,可根据滑块动画的滚动位置为 CSS 属性添加动画。可以查看 可用的属性。
<div uk-slider>
<div class="uk-slider-items">
<div>
<img src="" width="" height="" alt="">
<div class="uk-position-center">
<div uk-slider-parallax="x: 100,-100">
<!-- The content goes here -->
</div>
</div>
</div>
</div>
</div>在上面的示例中,内容会从 100 开始,在幻灯片移入的过程中动画到一半处的 0。当幻灯片开始移出时,内容会继续动画到 -100。之所以能这样,是因为起始值和结束值的距离相同。如果距离不同,则需要三个值:Start(幻灯片移入)、Middle(幻灯片居中)、End(幻灯片移出)。
<div uk-slider-parallax="x: 300,0,-100">…</div>下一个示例定义了不同的移入和移出动画。内容从 100 移动到 0 滑入,并从 1 淡出到 0。
<div uk-slider-parallax="x: 100,0,0; opacity: 1,1,0">…</div><div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1" uk-slider>
<div class="uk-slider-items uk-grid">
<div class="uk-width-4-5">
<div class="uk-panel">
<img src="images/photo.jpg" width="1800" height="1200" alt="">
<div class="uk-position-center uk-text-center">
<h2 uk-slider-parallax="x: 100,-100">Heading</h2>
<p uk-slider-parallax="x: 200,-200">Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
<div class="uk-width-4-5">
<div class="uk-panel">
<img src="images/dark.jpg" width="1800" height="1200" alt="">
<div class="uk-position-center uk-text-center">
<h2 uk-slider-parallax="x: 100,-100">Heading</h2>
<p uk-slider-parallax="x: 200,-200">Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
<div class="uk-width-4-5">
<div class="uk-panel">
<img src="images/light.jpg" width="1800" height="1200" alt="">
<div class="uk-position-center uk-text-center">
<h2 uk-slider-parallax="x: 100,-100">Heading</h2>
<p uk-slider-parallax="x: 200,-200">Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
<div class="uk-width-4-5">
<div class="uk-panel">
<img src="images/photo2.jpg" width="1800" height="1200" alt="">
<div class="uk-position-center uk-text-center">
<h2 uk-slider-parallax="x: 100,-100">Heading</h2>
<p uk-slider-parallax="x: 200,-200">Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
<div class="uk-width-4-5">
<div class="uk-panel">
<img src="images/photo3.jpg" width="1800" height="1200" alt="">
<div class="uk-position-center uk-text-center">
<h2 uk-slider-parallax="x: 100,-100">Heading</h2>
<p uk-slider-parallax="x: 200,-200">Lorem ipsum dolor sit amet.</p>
</div>
</div>
</div>
</div>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href uk-slidenav-next uk-slider-item="next"></a>
</div>在属性中添加 clsActivated: uk-transition-active,即可在幻灯片内部自动触发 Transition 组件 中的过渡类。与视差效果不同,过渡并不依附于滑块动画,而是在滑块动画结束后独立开始播放。
<div uk-slider="clsActivated: uk-transition-active">
<div class="uk-slider-items">
<div>
<img src="" width="" height="" alt="">
<div class="uk-position-bottom">
<div class="uk-transition-slide-bottom">
<!-- The content goes here -->
</div>
</div>
</div>
</div>
</div>配合 Overlay 组件,内容过渡可用于为滑块构建经典的字幕。
<div class="uk-position-relative uk-visible-toggle uk-light" tabindex="-1" uk-slider="clsActivated: uk-transition-active; center: true">
<div class="uk-slider-items uk-grid">
<div class="uk-width-3-4">
<div class="uk-panel">
<img src="images/photo.jpg" width="1800" height="1200" alt="">
<div class="uk-overlay uk-overlay-primary uk-position-bottom uk-text-center uk-transition-slide-bottom">
<h3 class="uk-margin-remove">Bottom</h3>
<p class="uk-margin-remove">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-panel">
<img src="images/dark.jpg" width="1800" height="1200" alt="">
<div class="uk-overlay uk-overlay-primary uk-position-bottom uk-text-center uk-transition-slide-bottom">
<h3 class="uk-margin-remove">Bottom</h3>
<p class="uk-margin-remove">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-panel">
<img src="images/light.jpg" width="1800" height="1200" alt="">
<div class="uk-overlay uk-overlay-primary uk-position-bottom uk-text-center uk-transition-slide-bottom">
<h3 class="uk-margin-remove">Bottom</h3>
<p class="uk-margin-remove">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-panel">
<img src="images/photo2.jpg" width="1800" height="1200" alt="">
<div class="uk-overlay uk-overlay-primary uk-position-bottom uk-text-center uk-transition-slide-bottom">
<h3 class="uk-margin-remove">Bottom</h3>
<p class="uk-margin-remove">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
</div>
<div class="uk-width-3-4">
<div class="uk-panel">
<img src="images/photo3.jpg" width="1800" height="1200" alt="">
<div class="uk-overlay uk-overlay-primary uk-position-bottom uk-text-center uk-transition-slide-bottom">
<h3 class="uk-margin-remove">Bottom</h3>
<p class="uk-margin-remove">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
</div>
</div>
</div>
</div>
<a class="uk-position-center-left uk-position-small uk-hidden-hover" href uk-slidenav-previous uk-slider-item="previous"></a>
<a class="uk-position-center-right uk-position-small uk-hidden-hover" href uk-slidenav-next uk-slider-item="next"></a>
</div>要在悬停时切换过渡,使用 Transition 组件 中的 .uk-transition-toggle 类和 tabindex="0"。这样当元素被悬停或聚焦时就会触发过渡。
<div uk-slider>
<div class="uk-slider-items">
<div class="uk-transition-toggle" tabindex="0">
<img src="" width="" height="" alt="">
<div class="uk-position-bottom">
<div class="uk-transition-slide-bottom">
<!-- The content goes here -->
</div>
</div>
</div>
</div>
</div><div uk-slider>
<div class="uk-slider-items uk-child-width-1-2 uk-child-width-1-3@s uk-child-width-1-4@m uk-light">
<div class="uk-transition-toggle" tabindex="0">
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">1</h1></div>
</div>
<div class="uk-transition-toggle" tabindex="0">
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">2</h1></div>
</div>
<div class="uk-transition-toggle" tabindex="0">
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">3</h1></div>
</div>
<div class="uk-transition-toggle" tabindex="0">
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">4</h1></div>
</div>
<div class="uk-transition-toggle" tabindex="0">
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">5</h1></div>
</div>
<div class="uk-transition-toggle" tabindex="0">
<img src="images/slider1.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">6</h1></div>
</div>
<div class="uk-transition-toggle" tabindex="0">
<img src="images/slider2.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">7</h1></div>
</div>
<div class="uk-transition-toggle" tabindex="0">
<img src="images/slider3.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">8</h1></div>
</div>
<div class="uk-transition-toggle" tabindex="0">
<img src="images/slider4.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">9</h1></div>
</div>
<div class="uk-transition-toggle" tabindex="0">
<img src="images/slider5.jpg" width="400" height="600" alt="">
<div class="uk-position-center uk-panel"><h1 class="uk-transition-slide-bottom-small">10</h1></div>
</div>
</div>
<ul class="uk-slider-nav uk-dotnav uk-flex-center uk-margin"></ul>
</div>这些选项都可以通过组件属性传入。多个选项之间用分号分隔。了解更多
| 选项 | 值 | 默认值 | 说明 |
|---|---|---|---|
autoplay |
Boolean | false |
滑块自动播放。 |
autoplay-interval |
Number | 7000 |
自动播放模式下切换幻灯片之间的延迟时间。 |
center |
Boolean | false |
让激活的幻灯片居中。 |
draggable |
Boolean | true |
启用指针拖拽。 |
easing |
String | ease |
动画缓动(CSS 时间函数或 cubic-bezier)。 |
finite |
Boolean | false |
禁用无限滑动。 |
index |
Number | 0 |
要显示的滑块项目。索引从 0 开始。 |
active |
String | all |
要应用过渡激活类的滑块项目(all、first)。 |
pause-on-hover |
Boolean | true |
悬停时暂停自动播放模式。 |
sets |
Boolean | false |
按整组滑动。 |
velocity |
Number | 1 |
动画速度(像素/毫秒)。 |
进一步了解 JavaScript 组件。
UIkit.slider(element, options);以下事件会在绑定了该组件的元素上触发:
| 名称 | 说明 |
|---|---|
beforeitemshow |
项目显示之前触发。 |
itemshow |
项目显示之后触发。 |
itemshown |
项目的显示动画完成后触发。 |
beforeitemhide |
项目隐藏之前触发。 |
itemhide |
项目的隐藏动画开始后触发。 |
itemhidden |
项目的隐藏动画完成后触发。 |
该组件提供以下方法:
UIkit.slider(element).show(index);显示滑块项目。
UIkit.slider(element).startAutoplay();启动滑块自动播放。
UIkit.slider(element).stopAutoplay();停止滑块自动播放。
Slider 组件遵循 Carousel WAI-ARIA 设计模式,并会自动设置合适的 WAI-ARIA 角色、状态和属性。
aria-roledescription 属性,值为 carousel。aria-live 属性。group 角色,如果有选项卡导航,则具有 tabpanel 角色;同时具有值为 slide 的 aria-roledescription 属性和一个 aria-label 属性。选项卡导航遵循 tab 模式。
tablist 角色。presentation 角色。tab 角色、aria-selected 状态、指向对应幻灯片 ID 的 aria-controls 属性,以及一个 aria-label 属性。上一个/下一个导航遵循 button 模式。
aria-label 属性、指向幻灯片列表 ID 的 aria-controls 属性;如果使用的是 <a> 元素,还具有 button 角色。当 Slider 组件中的任意元素获得焦点时,自动播放会停止。选项卡导航可以通过下列按键使用键盘访问。
Slider 组件使用下列翻译字符串。进一步了解 组件翻译。
| Key | 默认值 | 说明 |
|---|---|---|
next |
Next Slide |
下一个幻灯片按钮的 aria-label。 |
previous |
Previous Slide |
上一个幻灯片按钮的 aria-label。 |
slideX |
Slide %s |
分页幻灯片按钮的 aria-label。 |
slideLabel |
%s of %s |
幻灯片的 aria-label。 |