anchor-scroll-menu

Anchor menu with scrolling contents for React

Usage no npm install needed!

<script type="module">
  import anchorScrollMenu from 'https://cdn.skypack.dev/anchor-scroll-menu';
</script>

README

anchor-scroll-menu 👋

Anchor menu with scrolling contents for React

Version downloads License: MIT

🏠 Homepage

Demo & Document

Install

$ npm install anchor-scroll-menu

Snapshot

scroll

Usage

import React from 'react';
import { AnchorMenu } from 'anchor-scroll-menu';

const commonStyle = { height: 300 };
const id = +new Date();
const menuList = [
  {
    name: 'antiquewhite',
    key: `antiquewhite${id}`,
    content: <div style={{ ...commonStyle, backgroundColor: 'antiquewhite' }} />,
  },
  {
    name: 'skyblue',
    key: `skyblue${id}`,
    content: <div style={{ ...commonStyle, backgroundColor: 'skyblue' }} />,
  },
  {
    name: 'pink',
    key: `pink${id}`,
    content: <div style={{ ...commonStyle, backgroundColor: 'pink' }} />,
  },
  {
    name: 'orange',
    key: `orange${id}1`,
    content: <div style={{ ...commonStyle, backgroundColor: 'orange' }} />,
  },
  {
    name: 'lightcoral',
    key: `lightcoral${id}`,
    content: <div style={{ ...commonStyle, backgroundColor: 'lightcoral' }} />,
  },
];

export default () => (
  <div style={{ width: '100%', height: 600 }}>
    <AnchorMenu menuList={menuList} />
  </div>
);

API

Name Description Type Default
menuList 菜单数据数组,key请确保是唯一的,由字母数字组成,且必须以字母开头 { name: string; content: ReactNode; key: string; }[] []
menuStyle menu区域的style CSSProperties --
placement menu区域的位置 "top" | "right" | "bottom" | "left" left
scrollDirection 滚动方向 "vertical" | "horizontal" vertical
region 手动滚动时,滚动内容跟父元素顶部距离的区间,滚动内容一到达该区间,对应菜单按钮高亮。如果滚动过快时,菜单没有高亮,不妨将区间增大。 [number, number] [-20, 20]
easing 缓动动画函数 "linear" | "easeInQuad" | "easeOutQuad" | "easeInOutQuad" | "easeInCubic" | "easeOutCubic" | "easeInOutCubic" easeInOutCubic
duration 用多少ms完成滚动动画,单位 ms number 300
hideTitle 隐藏内容块的title boolean false
activeKey 当前激活的menu的key string --
onMenuClick 点击菜单的回调函数 (key: string, index: number, activeKey: string) => void --
onReach 点击菜单滚动到达目的地后的回调函数 (...args: any[]) => void --
## Knowledge
  • hooks的使用:useState、useEffect、useRef、useMemo、useCallback、etc.

  • Github Actions:github 自动部署、gitee 同步代码和部署、npm publish、etc.

  • dumi:dumi 文档生成工具的使用和配置。

  • requestAnimationFrameeasings缓动动画函数的使用。

Author

👤 jay_ohhh

🤝 Contributing

Contributions, issues and feature requests are welcome!

Feel free to check issues page. You can also take a look at the contributing guide.

Show your support

Give a ⭐️ if this project helped you!

📝 License

Copyright © 2022 jay_ohhh.

This project is MIT licensed.


This README was generated with ❤️ by readme-md-generator