• Affix 固钉

    将页面元素钉在可视范围。

    何时使用

    当内容区域比较长,需要滚动页面时,这部分内容对应的操作或者导航需要在滚动范围内始终展现。常用于侧边菜单和按钮组合。

    页面可视范围过小时,慎用此功能以免遮挡页面内容。

    代码演示

    最简单的用法。
    expand code expand code
    import { Affix, Button } from 'choerodon-ui';
    
    ReactDOM.render(
      <div>
        <Affix>
          <Button type="primary">Affix top</Button>
        </Affix>
        <br />
        <Affix offsetBottom={0}>
          <Button type="primary">Affix bottom</Button>
        </Affix>
      </div>,
      mountNode
    );
    
    target 设置 Affix 需要监听其滚动事件的元素,默认为 window
    expand code expand code
    import { Affix, Button } from 'choerodon-ui';
    
    class Demo extends React.Component {
      render() {
        return (
          <div className="scrollable-container" ref={(node) => { this.container = node; }}>
            <div className="background">
              <Affix target={() => this.container}>
                <Button type="primary">
                  Fixed at the top of container
                </Button>
              </Affix>
            </div>
          </div>
        );
      }
    }
    
    ReactDOM.render(<Demo />, mountNode);
    
    可以获得是否固定的状态。
    expand code expand code
    import { Affix, Button } from 'choerodon-ui';
    
    ReactDOM.render(
      <Affix offsetTop={120} onChange={affixed => console.log(affixed)}>
        <Button>120px to affix top</Button>
      </Affix>,
      mountNode
    );
    

    API

    成员 说明 类型 默认值
    offsetBottom 距离窗口底部达到指定偏移量后触发 number
    offsetTop 距离窗口顶部达到指定偏移量后触发 number
    target 设置 Affix 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 () => HTMLElement () => window
    onChange 固定状态改变时触发的回调函数 Function(affixed)

    注意:Affix 内的元素不要使用绝对定位,如需要绝对定位的效果,可以直接设置 Affix 为绝对定位:

    <Affix style={{ position: 'absolute', top: y, left: x}}>
      ...
    </Affix>