0.0.1 • Published 3 years ago
flipzine v0.0.1
FlipZine
星空之上,灵动之美,奔放空灵
精美与华丽的交汇正如此刻的时间和空间,生出一番别样的灵韵
大道至简,至臻至美,一切只为更好

特点
- 可在画布上使用简单的图像和复杂的HTML块
- 拥有简单的API和灵活的配置
- 与移动设备兼容
- 支持横向和纵向屏幕模式,自动适配可视屏幕
- 支持软性和硬性页面类型(仅在HTML模式下)
- 拥抱TS,无任何依赖
安装
使用npm安装最新版本
npm install flipzine --save-dev或者从码云上下载
https://gitee.com/dewapex/flipzine.git
使用
如果你已经通过npm安装了软件包,你应该从flipzine软件包中导入FlipZine,或者直接使用<script/>标签。
<script src="{path/to/scripts}/fz.webpack.browser.js"></script>创建新的FlipZine对象:
import { FlipZine } from 'flipzine';
const fz = new FlipZine(htmlParentElement, settings);
// 如果你通过script标签引入fz.webpack.browser.js,请使用如下代码创建:
const fz = new Flip.FlipZine(htmlParentElement, settings);htmlParentElement : HTMLElement- 根元素,书籍将在这里被创建
settings: object - 配置对象
要从画布上加载页面,请使用 loadFromImages:
fz.loadFromImages(['path/to/image1.jpg', 'path/to/image2.jpg' ... ]);要从html元素中加载页面,请使用 loadFromHtml:
fz.loadFromHtml(items);例如:
<div id="book">
<div class="my-page" data-density="hard">
Page Cover
</div>
<div class="my-page">
Page one
</div>
<div class="my-page">
Page two
</div>
<div class="my-page">
Page three
</div>
<div class="my-page">
Page four
</div>
<div class="my-page" data-density="hard">
Last page
</div>
</div>const fz = new FlipZine(document.getElementById('book'), {
width: 400, // 必要参数 - 基本页面宽度
height: 600, // 必要参数 - 基本页面高度
});
fz.loadFromHTML(document.querySelectorAll('.my-page'));使用data-density="hard"属性来指定页面类型(soft | hard)并定义翻转动画。
配置
在创建一个对象时要定义这些参数。
width: number- requiredheight: number- requiredsize: ("fixed", "stretch")- 默认值:"fixed"书籍是否在父元素下被拉长minWidth, maxWidth, minHeight, maxHeight: number你必须设置书籍尺寸的阈值:"stretch"drawShadow: bool- 默认值:true翻页时是否绘制阴影flippingTime: number(milliseconds) - 默认值:1000翻页动画时长usePortrait: bool- 默认值:true允许切换到纵向模式,这种模式使用克隆html元素(页面)startZIndex: number- 默认值:0z-index的初始值startPage: number- 默认值:0书籍渲染成功后的初始页码autoSize: bool- 默认值:true如果此值为真,父元素将等于书的大小maxShadowOpacity: number [0..1]- 默认值:1阴影强度(1:最大强度,0:隐藏阴影)showCover: boolean- 默认值:false如果此值为真,第一页和最后一页将被标记为硬面,并将以单页模式显示mobileScrollSupport: boolean- 默认值:true在移动设备上触摸书本时禁止内容滚动swipeDistance: number- 默认值:30(px) 检测滑动的最小距离(1.1.0版的新内容)clickEventForward: boolean- 默认值:true将点击事件转发到页面的子HTML元素(仅适用于a和button标签)(1.1.0的新功能)useMouseEvents: boolean- 默认值:true使用鼠标和触摸事件进行翻页(1.2.0的新功能)disableFlipByClick: boolean- 默认值:false如果这个值为真,通过点击整本书进行翻转将被锁定。点击只能在角落里工作(2.0.3版的新内容)
事件
监听事件请使用on方法:
fz.on('flip', (e) => {
// callback code
alert(e.data); // current page number
});可用事件:
flip: number- 翻页时触发changeOrientation: ("portrait", "landscape")- 页面方向改变时触发changeState: ("user_fold", "fold_corner", "flipping", "read")- 书籍状态发生变化时触发init: ({page: number, mode: 'portrait', 'landscape'})- 当书籍被初始化且起始页加载时触发。在使用 "loadFrom... "方法之前,先监听(on)这个事件update: ({page: number, mode: 'portrait', 'landscape'})- 当书籍页面更新时触发(使用 "updateFrom... "方法)
事件对象有两个字段。data: number | string和object: FlipZine。
方法
getPageCount: number- 获取书籍的总页数getOrientation: 'portrait', 'landscape'- 获取当前方向:纵向或横向getBoundsRect: PageRect- 获取当前书籍的尺寸和位置getCurrentPageIndex: number- 获取当前页码(从0开始)turnToPage(pageNum: number)- 翻到指定的页码(无动画)turnToNextPage()- 翻到下一页(无动画)turnToPrevPage()- 翻到前一页(无动画)flipNext(corner: 'top' | 'bottom')- 翻到下一页(有动画)flipPrev(corner: 'top' | 'bottom')- 翻到前一页(有动画)flip(pageNum: number, corner: 'top' | 'bottom')- 翻到指定的页码(有动画)loadFromImages(images: ['path-to-image1.jpg', ...])- 从图像中加载页面loadFromHtml(items: NodeListOf | HTMLElement[])- 从html元素中加载页面updateFromHtml(items: NodeListOf | HTMLElement[])- 从html元素中更新页面(0.4.0版新增)updateFromImages(images: ['path-to-image1.jpg', ...])- 从图像中更新页面(0.4.0版新增)destroy()- 销毁器。删除一个根HTML元素和所有的事件处理程序(0.4.0的新功能)
0.0.1
3 years ago