react实现选项卡

这是一个使用React实现的页面切换示例。代码中定义了一个Table组件,通过state管理当前选中页数,并根据点击事件更新状态,从而改变li元素的显示。样式设置使得页面具有清晰的分页和高亮效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码如下:复制就可以用了

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
        <style>
        .tab_con3 {
            width: 600px;
            /* margin: 0 auto; */
        }
 
        .abb {
            height: 40px;
            overflow: hidden;
            margin-bottom: 10px;
        }
 
        .abb li {
            float: left;
            height: 40px;
            line-height: 40px;
            color: #000;
            background :#f1f1f1;
            /* border:1px solid #000; */
            width: 110px;
            text-align: center;
            /* cursor: pointer; */
            margin-right: 40px;
        }
 
        .acc li {
            height: 260px;
            /* border: 1px solid skyblue; */
            display: none;
        }
 
        .acc .current {
            display: block;
            /* background-color: rgb(236, 236, 236); */
            text-align: center;
            line-height: 100px;
            border: 1px #000 solid;
        }
 
        .abb .cur3 {
            background: rgb(102, 255, 0);
        }
    </style>
    <script src="./js/browser.js"></script>
    <script src="./js/react.js"></script>
    <script src="./js/react-dom.js"></script>
</head>
<body>
 <div id="ball"></div>
    <script type="text/babel">
     let rooter = document.querySelector("#ball");
     class Table extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            current: 1
        }
    }
    tabFn(index) {
        this.setState({
            current: index
        })
    }
    clsFn(index, curCls, cls) {
        let { current } = this.state;
        return current === index ? curCls : cls;
    }
    componentDidMount() {
        this.tabFn(1)
    }
    render() {
        let { current } = this.state;
        return (
            <div>
                <div className='tab_con3'>
                    <ol className='abb'>
                        <li onClick={() => { this.tabFn(1) }} className={this.clsFn(1, 'cur3', '')}>第一页</li>
                        <li onClick={() => { this.tabFn(2) }} className={this.clsFn(2, 'cur3', '')}>第二页</li>
                        <li onClick={() => { this.tabFn(3) }} className={this.clsFn(3, 'cur3', '')}>第三页</li>
                    </ol>

                    <ul className='acc'>
                        <li className={this.clsFn(1, 'current', '')}>第一页</li>
                        <li className={this.clsFn(2, 'current', '')}>第二页</li>
                        <li className={this.clsFn(3, 'current', '')}>第三页</li>
                    </ul>
                </div>
            </div>
        );
    }
}

ReactDOM.render(<Table />, rooter);


    </script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值