Skip to content

AutoSliderList 自动滑块

一个按钮列表组件,点击某个按钮滑块会自动滑到对应的位置。

前置条件

在react项目入口文件中引入样式,默认为src/main.tsx

tsx
import 'ono-react-element/dist/style/AutoSliderList.css'

基础用法

tsx
import React, { useState } from'react'
import { AutoSliderList } from 'ono-react-element'

function App() {
    const list = [
        'html',
        'css',
        'javascript',
        'typescript',
        'vue',
        'angular',
        'react'
    ]

    return <div>
        <AutoSliderList
            style={{ gap: 8, padding: 8, border: '2px dashed #ccc' }}
            sliderStyle={{ background: 'pink', borderRadius: 8 }}
            list={list}
            sliderTransitionTimingFunction="linear"
        >
        {({ item, isActive }) => (
            <li
                key={item}
                style={{
                    width: '100%',
                    height: 'fit-content',
                    padding: '4px 8px',
                    display: 'flex',
                    justifyContent: 'center',
                    alignItems: 'center',
                    cursor: 'pointer',
                    color: isActive ? '#fff' : '#333'
                }}
            >   
                {item}
            </li>
        )}
      </AutoSliderList>
    </div>
}

export default App;

使用当前下标属性

tsx
import React, { useState } from'react'
import { AutoSliderList } from 'ono-react-element'

function App() {
    const list = [
        'html',
        'css',
        'javascript',
        'typescript',
        'vue',
        'angular',
        'react'
    ]

    return (
        <AutoSliderList
            list={list}
            style={{ gap: 8, padding: 8, border: '2px dashed #ccc' }}
            sliderStyle={{ background: 'pink', borderRadius: 8 }}
            currentIndex={list.findIndex(item => item === 'javascript')}
            sliderTransitionTimingFunction="linear"
        >
            {({ item, isActive }) => (
                <li
                    key={item}
                    style={{
                        width: '100%',
                        height: 'fit-content',
                        padding: '4px 8px',
                        display: 'flex',
                        justifyContent: 'center',
                        alignItems: 'center',
                        cursor: 'pointer',
                        color: isActive ? '#fff' : '#333'
                    }}
                >
                    {item}
                </li>
            )}
        </AutoSliderList>
    )
}

export default App;

API

通用属性参考:通用属性

参数说明类型默认值是否必填
list列表T[]-
disable是否禁止booleanfalse
children子元素({item, index, isActive}: {item: T; index: number; isActive: boolean}) => JSX.Element-
className自定义样式类名string-
style自定义样式对象CSSProperties-
sliderClassName自定义滑块样式类名string-
sliderStyle自定义滑块样式对象CSSProperties-
sliderBox滑块JSX.ElementJSX.Element
currentIndex当前下标number0
duration滑块滑动动画时长number300
direction方向Horizontal|VerticalHorizontal
sliderTransitionTimingFunction滑块动画效果stringease-in-out