2.0.2 • Published 7 years ago
svg-player v2.0.2
svg播放器
svg播放器
何时使用
- 播放svg动画的时候
浏览器支持
安装
npm install svg-player --save运行
# 默认开启服务器,地址为 :http://localhost:8000/
# 能在ie9+下浏览本站,修改代码后自动重新构建,且能在ie10+运行热更新,页面会自动刷新
npm run start
# 构建生产环境静态文件,用于发布文档
npm run site代码演示
基本
基本用法。
import "svg-player/lib/style/"
import SvgPlayer from 'svg-player'
class App extends React.Component {
componentDidMount () {
new SvgPlayer(
'#container-1',
'http://cs.101.com/v0.1/static/fish/image/svg.svg',
{
style: {
width: '400px',
},
scalable: true,
draggable: true,
ratio: 1.5
})
}
render() {
return (
<div id="container-1"></div>
);
}
}
ReactDOM.render(<App />, mountNode);控制svg的暂停播放
控制svg动画两秒后暂停播放
import "svg-player/lib/style/"
import SvgPlayer from 'svg-player'
class App extends React.Component {
componentDidMount () {
new SvgPlayer(
'#container-2',
'http://cs.101.com/v0.1/static/fish/image/svg.svg',
{},
(svgPlayer) => {
setTimeout(() => {
svgPlayer.pause()
}, 2000)
})
}
render() {
return (
<div id="container-2"></div>
);
}
}
ReactDOM.render(<App />, mountNode);配置是否显示按钮
不显示播放/暂停按钮和重新开始按钮
import "svg-player/lib/style/"
import SvgPlayer from 'svg-player'
class App extends React.Component {
componentDidMount () {
new SvgPlayer(
'#container-3',
'http://cs.101.com/v0.1/static/fish/image/svg.svg',
{
showPlayButton: false,
showReloadButton: false
}
)
}
render() {
return (
<div id="container-3"></div>
);
}
}
ReactDOM.render(<App />, mountNode);配置是否拖拽和缩放
可配置是否可以通过滚轮缩放以及鼠标拖拽
.custom-loading {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: red;
}import "svg-player/lib/style/"
import SvgPlayer from 'svg-player'
class App extends React.Component {
addEvent (svgPlayer) {
document.getElementById('zoomIn').addEventListener('click', function(){
svgPlayer.handleZoom(false)
})
document.getElementById('zoomOut').addEventListener('click', function(){
svgPlayer.handleZoom(true)
})
document.getElementById('reset').addEventListener('click', function(){
svgPlayer.zoomInOut(1)
})
}
componentDidMount () {
new SvgPlayer(
'#container-6',
'http://cs.101.com/v0.1/static/fish/image/svg.svg',
{
draggable: true,
scalable: true,
showZoomButton: true,
ratio: 2,
maxZoomSize: 2.5,
minZoomSize: 0.5,
zoomStep: 0.3,
// 自定义loading
renderLoading: () => {
const loading = document.createElement('span')
loading.setAttribute('class', `custom-loading`)
loading.innerHTML = '加载中...'
return loading
}
},
(svgPlayer) => {
this.addEvent(svgPlayer)
})
}
render() {
return (
<div>
<div id="container-6"></div>
<button id='zoomIn'>放大</button>
<button id='zoomOut'>缩小</button>
<br />
<br />
<button id='reset'>缩放回原来大小</button>
</div>
);
}
}
ReactDOM.render(<App />, mountNode);API
new SvgPlayer(selector, url, options, readyCallback)注意: 当svg文件跨域时需要设置CORS才能操作svg对象。
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| url | svg的url地址(必须同源) | string | 无 |
| selector | 放入svg的dom选择器(内部使用document.querySelector) | string | 无 |
| options | 配置参数 | SvgPlayer.options | { prefix: 'svg-play', showPlayButton: true, showReloadButton: true } |
| readyCallback | 文件加载后的回调;参数为实例化的SvgPlayer | function | 无 |
options
配置参数如下
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| prefix | 类前缀,可通过修改类前缀自定义类 | string | 无 |
| showPlayButton | 是否显示默认播放暂停按钮 | boolean | 无 |
| showReloadButton | 是否显示重新开始按钮 | boolean | true |
| showZoomButton | 是否显示重新开始按钮 | boolean | false |
| renderLoading | 自定义loading | function | 无 |
| draggable | 是否可拖拽 | boolean | false |
| scalable | 是否可缩放 | boolean | false |
| ratio | 初始缩放比例 | number | 1 |
| attr | 给播放器容器传入属性和值 | object | 无 |
| style | 给播放器容器传入style属性值 | object | 无 |
| maxZoomSize | 最大可缩放比例 | number | 4 |
| minZoomSize | 最小可缩放比例 | number | 0.2 |
| zoomStep | 每次调用缩放时的缩放比例 | number | 0.2 |
SvgPlayer
使用方式如下
const svgPlayer = new SvgPlayer(selector, url, options, () => {
svgPlayer.pause()
})| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| play | 播放svg动画 | function | 无 |
| pause | 暂停svg动画 | function | 无 |
| svgDocument | svg的document对象 | object | 无 |
| svgEl | svg对象 | object | 无 |
| svgPlayerEl | 外层容器对象 | object | 无 |
| playButtonEL | 播放暂停按钮对象 | object | 无 |
| reloadButton | 回到开始按钮对象 | object | 无 |
| handleZoom | 每次调用此函数,使元素缩放一定比例, 参数out为true表示缩小,为false表示放大 | function(out: boolean) | 无 |
| zoomInOut | 可以调用此函数直接缩放到设置的比例, 参数ratio表示缩放比例 | function(ratio: number) | 无 |