vue中使用turn.js
效果先览:
🐯下载源码
官方网站下载源码: Turn.js: The page flip effect in HTML5
🐯源码使用前的准备工作
解压打开下载好的文件:
找到里面的文件 lib/turn.js
放到新建的utils文件里面
创建turn.js的使用环境
Turn.js是使用了jquery书写的,使用vue中要引入jquery
npm引入:npm install --save jquery
修改配置文件
新建vue.config.js配置文件
const webpack = require('webpack')
module.exports = {
chainWebpack: config => {
//引入ProvidePlugin
config.plugin("provide").use(webpack.ProvidePlugin, [{
$: "jquery",
jquery: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery",
}, ]);
},
}
🐯源码的使用
我把官方文件引入到本地图片文件使用
查看文件的像素,在设置宽高的时候width是2倍 height不变。
使用vue文件内容
<template>
<div class="home">
<div class="turnClass">
<div id="flipbook">
<div v-for="(item) in imgUrl" :key="item.index"
:style="`
background:url(${item.imgurl}) no-repeat 100% 100%
`"
>
</div>
</div>
</div>
</div>
</template>
<script>
//turn.js
import turn from '../utils/turn.js'
export default {
name: 'Home',
data(){
return{
imgUrl:[
{imgurl:'image/1.jpg',index:1},
{imgurl:'image/2.jpg',index:2},
{imgurl:'image/3.jpg',index:3},
{imgurl:'image/4.jpg',index:4},
{imgurl:'image/5.jpg',index:5},
{imgurl:'image/6.jpg',index:6},
{imgurl:'image/7.jpg',index:7},
{imgurl:'image/8.jpg',index:8},
{imgurl:'image/9.jpg',index:9},
{imgurl:'image/10.jpg',index:10},
{imgurl:'image/11.jpg',index:11},
{imgurl:'image/12.jpg',index:12},
]
}
},
methods:{
onTurn(){
this.$nextTick(()=>{
$("#flipbook").turn({
autoCenter: true,
height:646,
width:996,
});
})
}
},
mounted(){
this.onTurn();
}
}
</script>
<style lang="less">
*{
margin: 0;
padding: 0;
}
.home{
width: 100vw;
height: 100vh;
.turnClass{
display: flex;
margin: 0px auto;
width: 996px;
height: 646px;
padding: calc((100vh - 646px)/2) 0;
overflow: hidden;
}
}
</style>
效果图片:
🐯部分操作方法
给予操作事件 onChange
vue中的methods的事件
onChange(){
$("#flipbook").turn("XXX",XXX)
}
操作详情:
总共多少页:
$("#flipbook").turn("pages")
当前为第几页(n):
$("#flipbook").turn("page")
下一页:
$("#flipbook").turn("next")
上一页:
$("#flipbook").turn("previous")
当前为第几页(n):
$("#flipbook").turn("page")
跳转到哪一页(n):
$("#flipbook").turn("page",n)
关于监听
因为引入了jquery,采用jquery的事件监听。
监听是否翻页
$("#flipbook").bind("turning", function(event, page, view) {
alert("Page: "+page);
}); // 翻页成功前
$("#flipbook").bind("turned", function(event, page, view) {
alert("Page: "+page);
}); // 翻页成功后
vue中在挂载监听,主要是在生命周期mounted中
// 存储函数,以便销毁
data(){
return{
fnTurnedEvent:null,
}
}
// 加载完毕启用
mounted(){
$("#flipbook").bind("turning", this.fnTurnedEvent = function(event, page, view){
alert("Page: "+page);
});
}
// 卸载
beforeDestroy(){
$("#flipbook").unbind("turning", this.fnTurnedEvent);
}
监听结果:
🐯详细文档
在官方 Turn.js: The page flip effect in HTML5
不想去官方网站可以点击下方连接
Microsoft Word - turnjs4-api-docs.docx
🐯祝你好运,前程似锦。