关于原生js的表格滚动

1、html部分:

对thead进行固定

tbody使用盒子scroll进行滚动  ,外面一层盒子启用溢出隐藏

<!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">
    <link href="style.css" rel="stylesheet" type="text/css" />
    <title>InsCode</title>
</head>
<body>
  <div class="right-bottom">
                    <div class="right-bottom-left" id="right-bottom"></div>
                    <div class="right-bottom-right">
                        <table>
                            <thead>
                                <tr>
                                    <th>时间</th>
                                    <th>城市</th>
                                    <th>最高温度</th>
                                    <th>最低气温</th>
                                </tr>
                            </thead>
                        </table>

                        <div style="overflow:hidden;"><!-- //隐藏溢出 -->
                            <div class="scroll"><!-- //控制滚动 -->

                                <table>
                                    <tbody>

                                    </tbody>
                                </table>

                            </div>
                        </div>

                    </div>
    <script src="script.js"></script>
</body>
</html>

2、css部分

对盒子表格进行大小宽高的设定

.right-bottom{
    width: 100vw;
    height: 100vh;
}

.right-bottom-right {
    width:100%;
    overflow: hidden;
    /* 隐藏溢出内容 */
    border-radius: 1vh;

}

thead {

    background-color: #22c77a;
}

.right-bottom-right .scroll {
    width: 100%;
    overflow: hidden;
}


.right-bottom-right table {
    width: 100%;
    border-collapse: collapse;
}

.right-bottom-right table thead tr th {
    width: 25%;
    border: solid 0.25vw #256fa8;
    text-align: center;
}

.right-bottom-right table tbody tr td {
    width: 25%;
    border: solid 0.25vw #256fa8;
    text-align: center;
}

3、js部分

使用dom操作对鼠标经过离开等操作进行操作,数据遍历渲染,背景颜色等等设置

 
 
    const tbody = document.querySelector('.right-bottom-right tbody');
 
 
//数据
jsd={
城市:  ['中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市', '中卫市', '吴忠市', '固原市', '石嘴山市', '银川市'],
年份: [2011, 2011, 2011, 2011, 2011, 2012, 2012, 2012, 2012, 2012, 2013, 2013, 2013, 2013, 2013, 2014, 2014, 2014, 2014, 2014, 2015, 2015, 2015, 2015, 2015, 2016, 2016, 2016, 2016, 2016, 2017, 2017, 2017, 2017, 2017, 2018, 2018, 2018, 2018, 2018, 2019, 2019, 2019, 2019, 2019, 2020, 2020, 2020, 2020, 2020, 2021, 2021, 2021, 2021, 2021, 2022, 2022, 2022, 2022, 2022, 2023, 2023, 2023, 2023, 2023],
最低温:  [-20, -19, -21, -22, -19, -23, -18, -22, -23, -19, -17, -18, -17, -24, -19, -18, -15, -26, -20, -16, -15, -13, -16, -18, -14, -24, -20, -24, -26, -22, -17, -14, -14, -21, -18, -17, -16, -16, -23, -18, -15, -13, -13, -20, -16, -21, -19, -19, -26, -19, -21, -20, -20, -25, -21, -17, -16, -17, -21, -16, -21, -20, -19, -22, -19],
最高温: [36, 37, 31, 37, 37, 35, 36, 30, 35, 35, 36, 36, 31, 36, 36, 37, 38, 32, 38, 38, 36, 38, 32, 38, 37, 36, 37, 31, 37, 37, 38, 40, 32, 40, 39, 35, 36, 29, 37, 36, 36, 36, 31, 36, 36, 35, 37, 29, 37, 37, 37, 39, 33, 39, 38, 38, 38, 31, 38, 37, 36, 35, 31, 37, 36]
}

 for (let n = 0; n < jsd['城市'].length; n++) {
                const tr = document.createElement('tr')
                if (n % 2 === 0) {
                    tr.style.backgroundColor = '#1974b5'
                } else {
                    tr.style.backgroundColor = '#24dcba'
                }
                //获取数据渲染
                tr.innerHTML =
                    `<td>${jsd['年份'][n]}</td>
                     <td>${jsd['城市'][n]}</td>
                     <td>${jsd['最高温'][n]}</td>
                     <td>${jsd['最低温'][n]}</td>`;
                //追加节点到父元素的子节点的最后一位
                tbody.appendChild(tr)
            }

            let scrollBox = document.querySelector('.right-bottom-right .scroll');

            let distance = 0;
            //设置全局变量控制定时器
            let p
            //滚动函数
            function time() {
                p = setInterval(function () {
                    distance += 1;
                    scrollBox.style.transform = 'translateY(-' + distance + 'px)';
                    //当滚动到最底部时跳会最初位置滚动,实现无限滚动
                    if (scrollBox.style.transform == 'translateY(-1500px)') {//translateY(-1500px)设置看数据长度如何
                        distance = 0
                    }
                }, 90);
            }
            //打开大屏执行滚动
            folg = true
            if (folg) {
                {
                    time()
                    folg = !folg
                }
            }

            scrollBox.addEventListener('mouseout', function () {
                //调用滚动函数
                time()

            }



            )
            scrollBox.addEventListener('mouseover', function () {
                //鼠标悬停暂停
                clearInterval(p)
            })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值