npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

bounce-animation

v0.0.4

Published

一个流式的动画库

Downloads

7

Readme

bounce

npm 使用

安装
npm i bounce-animation
使用示例
import { bounceManager, bounceText } from 'bounce-animation'
import 'bounce-animation/index.css'

const dom = document.createElement('div')

dom.innerText = 'test dance text'
dom.setAttribute('style', 'font-size: 30px; color: #e69; text-shadow: 4px 0 4px red; --bounce-translate-x: 100px;')

bounceManager.append({
  trigger: 'click',
  triggerDom: dom,
  executeList: [
    {
      fn: bounceText,
      fnProps: [
        dom,
        {
          executeSpace: 200,
          animations: [
            {
              duration: 400,
              functionName: 'ease-in',
              name: 'bounce-top-to-location',
            },
            {
              duration: 200,
              name: 'bounce-shake-sink',
            },
          ],
        },
      ],
    },
  ],
})

document.body.append(dom)
bounceManager 说明

用于控制动画的触发方式,类型声明如下:

interface BounceItem<T extends any[]> {
  trigger: 'visible' | 'hidden' | 'hover' | 'click' | 'custom'
  triggerDom: HTMLElement
  onStart?: () => any
  onEnd?: () => any
  executeList: {
    fn: (...props: T) => Promise<any> | any
    fnProps: T
  }[]
}
interface BounceManager {
  append<T extends any[]>(
    item: BounceItem<T>
  ): {
    id: string
    run: () => Promise<void>
  }
  remove(id: string): void
}
内置函数
// bounceText // 控制dom下的文本做指定动画
// bounceDom // 控制dom做指定动画
// bounceDomList // 控制一组dom做指定的动画
// bounceChildren // 控制dom下的所有子节点做指定动画
// bounceQuerySelector // 控制指定选择选中的节点所指定动画
// 除了以上内置函数以外,还可以自定义函数,将函数放入bounceManager的fn中即可被其控制
内置动画
import 'bounce-animation/index.css' // 引入样式

// 动画名
// bounce-left-to-location // 从左移动到实际位置
// bounce-right-to-location // 从右移动到实际位置
// bounce-top-to-location // 从上移动到实际位置
// bounce-right-to-location // 从下移动到实际位置
// bounce-scale-x // 横向缩放
// bounce-scale-y // 纵向缩放
// bounce-jump-top // 向上跳跃
// bounce-jump-bottom // 向下跳跃
// bounce-loop-spread // 反复左右移动,距离逐渐增大
// bounce-loop-sink // 反复左右移动,距离逐渐减小
// bounce-shake-spread // 反复左右摇摆,角度逐渐增大
// bounce-shake-sink // 反复左右摇摆,角度逐渐减小

// css变量,可在指定dom上覆盖变量的值,以实现同一动画不同表现形式
// --bounce-translate-x: 100px;
// --bounce-translate-y: 100px;
// --bounce-rotate: 60deg;
// --bounce-scale: 1;