flipzine
v0.0.1
Published
大道至简,至臻至美,一切只为更好
Downloads
8
Maintainers
Readme
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
- 默认值:0
z-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的新功能)