vue2.x中使用翻书效果turn.js

7,835 阅读1分钟

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

监听结果:

动画11.gif

🐯详细文档

在官方 Turn.js: The page flip effect in HTML5

image.png

不想去官方网站可以点击下方连接

Microsoft Word - turnjs4-api-docs.docx

🐯祝你好运,前程似锦。