美文网首页JavaScript学习笔记
javascript 模拟滚动条,兼容ie7

javascript 模拟滚动条,兼容ie7

作者: 何必自找失落_ | 来源:发表于2016-12-08 17:39 被阅读150次
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>javascript模拟滚动条 兼容ie7</title>
    <link rel="stylesheet" type="text/css" href="css/reset.css">
    <style type="text/css">
        body{
            font: 16px/40px '微软雅黑';
        }
        h2{
            text-align: center;
            font-weight: 600;
            font-size: 1.4em;
        }
        h3{
            text-indent: 24px;
            font-size: 1.4em;
        }
        #scroll{
            width: 400px;
            margin: 100px auto;
            padding: 10px 30px 10px 10px;
            border: 1px solid #ccc;
            border-radius: 4px;
            height: 500px;
            overflow: hidden;
            position: relative;
        }
        #scroll-bar{
            position: absolute;
            width: 10px;
            left: 0px;
            top: 0px;
            border-left: 1px solid #ccc;
            border-radius: 4px;
        }
        #bar{
            width: 10px;
            border-top: 1px solid #ccc;
            border-bottom: 1px solid #ccc;
            border-radius: 4px;
            background-color: #ccc;
        }
    </style>
</head>
<body>
    <div id="scroll">
        <div id="content">
            <h2>春江花月夜</h2>
            <p>春江潮水连海平,海上明月共潮生。</p>
            <p>滟滟随波千万里,何处春江无月明。</p>
            <p>江流宛转绕芳甸,月照花林皆似霰。</p>
            <p>空里流霜不觉飞,汀上白沙看不见。</p>
            <p>江天一色无纤尘,皎皎空中孤月轮。</p>
            <p>江畔何人初见月?江月何年初照人?</p>
            <p>人生代代无穷已,江月年年望相似。</p>
            <p>不知江月待何人,但见长江送流水。</p>
            <p>白云一片去悠悠,青枫浦上不胜愁。</p>
            <p>谁家今夜扁舟子?何处相思明月楼?</p>
            <p>可怜楼上月徘徊,应照离人妆镜台。</p>
            <p>玉户帘中卷不去,捣衣砧上拂还来。</p>
            <p>此时相望不相闻,愿逐月华流照君。</p>
            <p>鸿雁长飞光不度,鱼龙潜跃水成文。</p>
            <p>昨夜闲潭梦落花,可怜春半不还家。</p>
            <p>江水流春去欲尽,江潭落月复西斜。</p>
            <p>斜月沉沉藏海雾,碣石潇湘无限路。</p>
            <p>不知乘月几人归,落月摇情满江树。</p>
            <h3>译文:</h3>
            <div class="ele_text_res">
                <p>春天的江潮水势浩荡,与大海连成一片,一轮明月从海上升起,好像与潮水一起涌出来。</p>
                <p>月光照耀着春江,随着波浪闪耀千万里,所有地方的春江都有明亮的月光。</p>
                <p>江水曲曲折折地绕着花草丛生的原野流淌,月光照射着开遍鲜花的树林好像细密的雪珠在闪烁。</p>
                <p>月色如霜,所以霜飞无从觉察。洲上的白沙和月色融合在一起,看不分明。</p>
                <p>江水、天空成一色,没有一点微小灰尘,明亮的天空中只有一轮孤月高悬空中。</p>
                <p>江边上什么人最初看见月亮,江上的月亮哪一年最初照耀着人?</p>
                <p>人生一代代地无穷无尽,只有江上的月亮一年年地总是相像。</p>
                <p>不知江上的月亮等待着什么人,只见长江不断地一直运输着流水。</p>
                <p>游子像一片白云缓缓地离去,只剩下思妇站在离别的青枫浦不胜忧愁。</p>
                <p>哪家的游子今晚坐着小船在漂流?什么地方有人在明月照耀的楼上相思?</p>
                <p>可怜楼上不停移动的月光,应该照耀着离人的梳妆台。</p>
                <p>月光照进思妇的门帘,卷不走,照在她的捣衣砧上,拂不掉。</p>
                <p>这时互相望着月亮可是互相听不到声音,我希望随着月光流去照耀着您。</p>
                <p>鸿雁不停地飞翔,而不能飞出无边的月光;月照江面,鱼龙在水中跳跃,激起阵阵波纹。</p>
                <p>(此二句写月光之清澈无边,也暗含鱼雁不能传信之意。)</p>
                <p>昨天晚上随意谈着梦中落下的花,可惜的是春天过了一半还不能回家。</p>
                <p>江水带着春光将要流尽,水潭上的月亮又要西落。</p>
                <p>斜月慢慢下沉,藏在海雾里,碣石与潇湘的离人距离无限遥远。</p>
                <p>不知有几人能趁着月光回家,唯有那西落的月亮摇荡着离情,洒满了江边的树林。</p>
            </div>
        </div>
        <div id="scroll-bar">
            <div id="bar"></div>
        </div>
    </div>
    <script type="text/javascript">
        // 原理就是 框体有大小,内容无大小,框体超出部分隐藏 内容自动撑开, 根据比例获得滑块和滑框来进行滑动,滑块到顶部的距离,再换算成 内容-margin-top
        window.onload = function (){
            var scroll = document.getElementById("scroll");
            var content = document.getElementById("content");
            var scrollBar = document.getElementById("scroll-bar");
            var bar = document.getElementById("bar");
            var scrollH = scroll.offsetHeight;
            var contentH = content.offsetHeight;
            // 滚动条框 和框体的高度是一样的
            scrollBar.style.height = scrollH + "px";
            // 开始我想用right的,但是ie7 不兼容
            scrollBar.style.left = scroll.offsetWidth - 12 + "px";
            // 滚动条的高度等于 框体高*(框体的高度比上内容的高度) (小学数学);
            bar.style.height = scrollH*(scrollH/contentH)+'px';
            var isMove = false;//是否开启滑动
            var oldY = 0;//滑动之前的老位置 初始化为0
            bar.onmousedown = function (event){
                var event = event || window.event;
                oldY = event.clientY;
                isMove = true;
                return false;
            }
            document.onmouseup  = function (){
                isMove = false;
                return false;
            }
            document.onmousemove = function (event){
                var event = event || window.event;
                if (isMove) {
                    // 滚动条变化的值 dirY
                    var dirY = event.clientY - oldY;
                    goOn(dirY);
                    oldY = event.clientY;
                }
            }
            // 滚动事件
            scroll.onmousewheel = function (event){
                 var event  = event || window.event;
                 // event.wheelDelta 每次滚动都是+-120  这里设置一个系数 120 太大了更适合浏览器的滚动
                 goOn(-event.wheelDelta*0.2);
                 return false;
            }
            function goOn(dirY){
                // 滚动条滚动
                bar.style.marginTop = bar.offsetTop + dirY + 'px';
                // 越界处理
                if (bar.offsetTop < 0) {
                    bar.style.marginTop = "0px";
                }
                if ((bar.offsetTop+bar.offsetHeight)>scrollBar.offsetHeight) {
                    bar.style.marginTop = scrollBar.offsetHeight-bar.offsetHeight+'px';
                }
                // 内容框的margin-top
                content.style.marginTop = - bar.offsetTop/((scrollH-10)/contentH)+"px";
            }
        }
    </script>
</body>
</html>

相关文章

网友评论

    本文标题:javascript 模拟滚动条,兼容ie7

    本文链接:https://www.haomeiwen.com/subject/gspsmttx.html