Nineslider.js是一个跨平台、响应迅速、自动和交叉衰落的滑块/转盘/幻灯片库,与jQuery、Vanilla JavaScript、React和Vue.js兼容。
它提供了一种引人入胜的互动方式,可以在博客、电子商务网站或网络应用程序上显示图像、视频和其他内容。
1.下载Nineslider.js并将其导入到您的项目中。
<!-- Vanilla JS --> <script src="/path/to/nineslider.js"></script> <!-- jQuery --> <script src="/path/to/cdn/jquery.min.js"></script> <script src="/path/to/jquery.nineslider.js"></script> <!-- Vue 2 --> <script src="/path/to/cdn/vue.min.js"></script> <script src="/path/to/vue.nineslider.js"></script>
2.将您的内容添加到滑块中。
<!-- Vanilla JS & jQuery -->
<ul id="demo">
<li>
<a href="#">
<img src="1.jpg" />
<div class="caption">
This is a caption.
</div>
</a>
</li>
<li>
<img src="2.jpg" />
<div class="caption">
This is another caption with <a href="#">a link</a>
</div>
</li>
<li>
<img src="3.jpg" />
</li>
<li>
<img src="4.jpg" />
</li>
</ul>
<!-- Vue --> <div id="demo"></div>
// Vue
var data = [
{
image: "1.jpg",
link: "#",
caption: 'This is a caption'
},
{
image: "2.jpg",
link: "",
caption: 'This is another caption with <a href="#">a link</a>'
},
{
image: "3.jpg",
link: "",
caption: null
},
{
image: "4.jpg",
link: "",
caption: null
}
];
var eventChannel = new Vue();
var template = `
<div class="nbs-nineslider-container">
<template v-if="items.length > 0">
<ul class="nbs-nineslider-ul" @mouseover="mouseOver" @mouseout="mouseOut" v-show="items.length >= 1">
<li v-for="(item, index) in items" class="nbs-nineslider-item" :ref="'nbs-nineslider-index-' + index">
<template v-if="item.link">
<a :href="item.link">
<img :src="item.image" />
<div v-html="item.caption" class="caption" v-if="item.caption"></div>
</a>
</template>
<template v-else>
<img :src="item.image" />
<div v-html="item.caption" class="caption" v-if="item.caption"></div>
</template>
</li>
</ul>
<div class="nbs-nineslider-nav-left" @click="navigate(true)" v-show="items.length > 1"></div>
<div class="nbs-nineslider-nav-right" @click="navigate(false)" v-show="items.length > 1"></div>
<ul class="nbs-nineslider-paging" v-show="items.length > 1">
<li v-for="(item, index) in items" @click="navigateTo(index)" :class="{ active: index == currentIndex }"></li>
</ul>
</template>
<template v-else>
<p>There are no items to show</p>
</template>
</div>
`;
3.初始化滑块。
// Vanilla JavaScript
window.addEventListener("load", function(){
nineslider(document.getElementById("demo"), {
// options here
});
});
// jQuery
$(function(){
$('#demo').nineslider({
// options here
});
});
// Vue
nineslider("#demo", {
// options here
loaded: function(){
var self = this;
eventChannel.$on("myCustomExternalNav", function (isReverse) {
self.navigate(isReverse);
})
}
}, data, template);
// Vue.js omponent to control the slider externally
new Vue({
el: "#externalControls",
methods:{
left: function(){
eventChannel.$emit("myCustomExternalNav", true);
},
right: function(){
eventChannel.$emit("myCustomExternalNav", false)
}
}
})
4.把你自己的风格运用到Nineslider上。
.nbs-nineslider-container {
position:relative;
max-width:100%;
text-align: center;
}
.nbs-nineslider-ul {
position:relative;
margin: 0;
padding: 0;
list-style-type:none;
}
.nbs-nineslider-ul > li {
position: relative;
z-index: 0;
top: 0px;
left: 0px;
display: none; /* initialized via slider */
width: 100%;
}
.nbs-nineslider-ul > li .caption {
position: absolute;
bottom: 0;
padding: 5px;
box-sizing: border-box;
z-index: 3;
background: rgba(0,0,0,0.5);
color: #fff;
width: 100%;
text-align: left;
}
.nbs-nineslider-ul > li img {
max-width: 100%;
width: 100%;
vertical-align: middle;
}
/*** Navigation ***/
.nbs-nineslider-nav-left,
.nbs-nineslider-nav-right {
padding:5px 10px;
border-radius:15px;
-moz-border-radius:15px;
-webkit-border-radius:15px;
position: absolute;
cursor: pointer;
top: 50%;
transform: translateY(-100%);
z-index: 4;
background: rgba(0,0,0,0.5);
color: #fff;
}
.nbs-nineslider-nav-left {
left: 10px;
}
.nbs-nineslider-nav-left:before {
content: "<"
}
.nbs-nineslider-nav-left.disabled {
opacity: 0.4;
}
.nbs-nineslider-nav-right {
right: 5px;
}
.nbs-nineslider-nav-right:before {
content: ">"
}
/*** Paging ***/
.nbs-nineslider-paging {
position: relative;
margin: 0 auto;
padding: 0;
text-align: center;
z-index: 3;
}
.nbs-nineslider-paging li {
margin: 0 5px;
display: inline-block;
width: 10px;
height: 10px;
background: #000;
border: 1px solid #ccc;
cursor: pointer;
}
.nbs-nineslider-paging li.active {
background: #fff;
}
5.可用选项和回调。
<!-- Vanilla JS --> <script src="/path/to/nineslider.js"></script> <!-- jQuery --> <script src="/path/to/cdn/jquery.min.js"></script> <script src="/path/to/jquery.nineslider.js"></script> <!-- Vue 2 --> <script src="/path/to/cdn/vue.min.js"></script> <script src="/path/to/vue.nineslider.js"></script>