制作滚动表格

三个学习点:jQuery

      

用Vscode编写代码

滚动起来的两种思路

思路一: 准备两个相连的相同文本,文本滚动,当第一个文本滚动消失后,瞬间回到初始位置,重新滚动第一个文本。

思路一核心代码:

function scroll() {
                // 第一个文本全部滚动完后,回到原位
if (tab2.offsetTop - box2.scrollTop <= 0) {
                    box2.scrollTop = 0;
                }
                // 第一个文本若没有全部滚动完,则继续滚动
else {
                    box2.scrollTop += 2;
                }
                // 滚动状态,滚动时为1,停止为0
                scrollkey = 1;
            }

scrollTop:元素高度(200px)小于元素内容(300px)时

拉到最底下会有隐藏部分(100px)

scrollTop=100px


制作中遇到的问题和经验:

1.按钮部分

style="clear:both"

前面的元素浮动,使用这行代码可以不与之前平齐,不受前面后面元素的浮动影响

2.按钮居中

代码:

   

/* 设置按钮容器样式 */
        #btn10 {
            width: 700px;
            margin: 0px auto;
        }
        /* 设置按钮居中 */
        #btn20{
            margin: 0px 260px;
        }
        /* 按钮样式 */
        .btn{
            width: 60px;
            height: 50px;
            float: left;(使按钮间无间隙)
        }
<div id="btn10" style="clear:both">
    <div id="btn20">
        <button id="btn1" class="btn">开始</button>
        <button id="btn2" class="btn">暂停</button>
        <button id="btn3" class="btn">重置</button>
    </div>
</div>

给按钮部分一个大容器,里面装一个小容器,小容器里放三个按钮

大容器用margin: 0px auto;居中

小容器margin: 0px 260px;居中,这个时候就可以用具体数值设置居中

代码:

代码:
<!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>滚动表格</title>

    <style>
        /* 设置表格整体的宽度,居中,背景色 */
        .box,
        .box1,
        .box2,
        .tab1,
        .tab2 {
            width: 700px;
            margin: 100px auto;
            margin-bottom: 0px;
            background-color: aliceblue;
        }

        /* 表格居中(去除上外边框影响) */
        .box,
        .box2,
        .tab1,
        .tab2 {
            margin-top: 0px;
        }

        /* 表头样式 */
        .box1 {
            border-top: 1px black solid;
            border-left: 1px black solid;
            position: relative;
            float: left;
            /* border-right: 1px black solid; */
        }

        /* 表格容器样式 */
        .box2 {
            height: 456px;
            overflow: hidden;
            position: relative;
            border-left: 1px black solid;
            float: left; 
            /* border-right: 1px black solid; */
        }

        /* 文本一样式 */
        .tab1 {
            position: relative;
            float: left;
        }

        /* 文本二样式 */
        .tab2 {
            position: relative;
            float: left;/* 不浮动无法滚动 */
        }

        /* 设置按钮容器样式 */
        #btn10 {
            width: 700px;
            margin: 0px auto;
        }

        /* 设置按钮居中 */
        #btn20 {
            margin: 0px 260px;
        }

        /* 按钮样式 */
        .btn {
            width: 60px;
            height: 50px;
            float: left; /* 去除按钮间隙 */
        }

        /* 文本每行样式 */
        .box1 span,
        .box2 span {
            float: left;/* 浮动去除span间的间隙 */
            border: 1px black solid;
            text-align: center;
            height: 55px; /* 垂直居中 */
            line-height: 55px; /* 垂直居中 */
        }
    </style>

</head>

<body>

    <div id="box" class="box">

        <div id="box1" class="box1">

            <div>
                <span>编号</span>
                <span>姓名</span>
                <span>年龄</span>
                <span>地址</span>
            </div>

        </div>


        <div id="box2" class="box2">

            <div id="tab1" class="tab1">

                <div>
                    <span>0001</span>
                    <span>小兰</span>
                    <span>10</span>
                    <span>本宇宙-室女座超本星系团-本星系团-银河系-猎户座旋臂</span>
                </div>

                <div>
                    <span style="clear:both">0002</span>
                    <span>园子</span>
                    <span>20</span>
                    <span>银河系-猎户座旋臂-太阳系第三环总体位置</span>
                </div>

                <div>
                    <span>0003</span>
                    <span>张三</span>
                    <span>30</span>
                    <span>本宇宙-室女座超本星系团-本星系团-银河系-猎户座旋臂</span>
                </div>

                <div>
                    <span>0004</span>
                    <span>李四</span>
                    <span>40</span>
                    <span>银河系-猎户座旋臂-太阳系第三环总体位置</span>
                </div>

                <div>
                    <span>0005</span>
                    <span>王五</span>
                    <span>50</span>
                    <span>本宇宙-室女座超本星系团-本星系团-银河系-猎户座旋臂</span>
                </div>

                <div>
                    <span>0006</span>
                    <span>王六</span>
                    <span>60</span>
                    <span>银河系-猎户座旋臂-太阳系第三环总体位置</span>
                </div>

                <div>
                    <span>0007</span>
                    <span>吴七</span>
                    <span>70</span>
                    <span>本宇宙-室女座超本星系团-本星系团-银河系-猎户座旋臂</span>
                </div>

                <div>
                    <span>0008</span>
                    <span>king</span>
                    <span>80</span>
                    <span>银河系-猎户座旋臂-太阳系第三环总体位置</span>
                </div>

                <div>
                    <span>0009</span>
                    <span>queen</span>
                    <span>90</span>
                    <span>本宇宙-室女座超本星系团-本星系团-银河系-猎户座旋臂</span>
                </div>

                <div>
                    <span>0010</span>
                    <span>Jack</span>
                    <span>100</span>
                    <span>银河系-猎户座旋臂-太阳系第三环总体位置</span>
                </div>

            </div>

            <div id="tab2" class="tab2">

                <div>
                    <span>0001</span>
                    <span>小兰</span>
                    <span>10</span>
                    <span>本宇宙-室女座超本星系团-本星系团-银河系-猎户座旋臂</span>
                </div>

                <div>
                    <span>0002</span>
                    <span>园子</span>
                    <span>20</span>
                    <span>银河系-猎户座旋臂-太阳系第三环总体位置</span>
                </div>

                <div>
                    <span>0003</span>
                    <span>张三</span>
                    <span>30</span>
                    <span>本宇宙-室女座超本星系团-本星系团-银河系-猎户座旋臂</span>
                </div>

                <div>
                    <span>0004</span>
                    <span>李四</span>
                    <span>40</span>
                    <span>银河系-猎户座旋臂-太阳系第三环总体位置</span>
                </div>

                <div>
                    <span>0005</span>
                    <span>王五</span>
                    <span>50</span>
                    <span>本宇宙-室女座超本星系团-本星系团-银河系-猎户座旋臂</span>
                </div>

                <div>
                    <span>0006</span>
                    <span>王六</span>
                    <span>60</span>
                    <span>银河系-猎户座旋臂-太阳系第三环总体位置</span>
                </div>

                <div>
                    <span>0007</span>
                    <span>吴七</span>
                    <span>70</span>
                    <span>本宇宙-室女座超本星系团-本星系团-银河系-猎户座旋臂</span>
                </div>

                <div>
                    <span>0008</span>
                    <span>king</span>
                    <span>80</span>
                    <span>银河系-猎户座旋臂-太阳系第三环总体位置</span>
                </div>

                <div>
                    <span>0009</span>
                    <span>queen</span>
                    <span>90</span>
                    <span>本宇宙-室女座超本星系团-本星系团-银河系-猎户座旋臂</span>
                </div>

                <div>
                    <span>0010</span>
                    <span>Jack</span>
                    <span>100</span>
                    <span>银河系-猎户座旋臂-太阳系第三环总体位置</span>
                </div>

            </div>

        </div>

    </div>

    <div id="btn10" style="clear:both">

        <div id="btn20">
            <button id="btn1" class="btn">开始</button>
            <button id="btn2" class="btn">暂停</button>
            <button id="btn3" class="btn">重置</button>
        </div>

    </div>








    <script src="./jquery-1.12.3.js"></script>
    <script>

        // 修改每一列span的宽度
        $('span:nth-child(1)').css('width', '80');
        $('span:nth-child(2)').css('width', '80');
        $('span:nth-child(3)').css('width', '80');
        $('span:nth-child(4)').css('width', '452');

        // 修改文本每一列span的字体颜色
        $('#box2 span:nth-child(1)').css('color', 'rgba(112, 23, 23, 0.632)');
        $('#box2 span:nth-child(2)').css('color', 'rgba(99, 23, 116, 0.732)');
        $('#box2 span:nth-child(3)').css('color', 'rgba(67,43, 111, 0.581)');
        $('#box2 span:nth-child(4)').css('color', 'rgba(0,0, 0, 0.9)');

        /* 改变两个文本偶数行背景颜色 */
        $('#tab1 div:nth-child(2n) span').css('background', 'blanchedalmond');
        $('#tab2 div:nth-child(2n) span').css('background', 'blanchedalmond');

        var timer;//计时器

        // 滚动状态:表格滚动时scrollkey为1,静止时scrollkey为0
        var scrollkey = 0;

        // 点击状态:点击开始按钮后starkey为1,点击结束按钮时starkey为0
        var starkey = 0;

        // 滚动方法
        function scroll() {
            // 第一个文本全部滚动完后,两个文本回到原位
            if (tab2.offsetTop - box2.scrollTop <= 0) {
                box2.scrollTop = 0;
            }
            // 第一个文本没有全部滚动完,则继续滚动
            else {
                box2.scrollTop += 1;
            }

            // 滚动状态,滚动时为1,停止为0
            scrollkey = 1;
        }

        // 点击开始按钮(btn1),表格开始滚动
        $('#btn1').click(function () {

            // 停止状态时点击开始按钮,才有对应的开始动作
            if (starkey == 0 && scrollkey == 0) {
                starkey = 1;
                timer = setInterval(scroll, 10);
                scrollkey = 1;

                // 鼠标移入表格,表格停止滚动
                box2.onmouseover = function () {
                    clearInterval(timer);
                    scrollkey = 0;
                }
                
                // 鼠标移出表格,表格开始滚动
                box2.onmouseout = function () {
                    if (starkey == 1) {
                        timer = setInterval(scroll, 10);
                        scrollkey = 1;
                    }
                }

            }
        })

        // 点击暂停按钮(btn2),表格停止滚动
        $('#btn2').click(function () {
            clearInterval(timer);
            scrollkey = 0;
            starkey = 0;
        })

        // 点击重置按钮(btn3),表格回到最初状态且停止滚动
        $('#btn3').click(function () {
            clearInterval(timer);
            box2.scrollTop = 0;
            starkey = 0;
            scrollkey = 0;
        })

    </script>

</body>

</html>