JavaScript自定义滚动条

浏览器自带的滚动条样式比较单一,下面是利用原生js实现的滚动条,可以换成自己喜欢的样式。

html代码:





    
    
    
    Document
    
    



    
易烊千玺(JacksonYee,2000年11月28日-),生于湖南怀化, 中国内地男歌手、舞者、演员,TFBOYS组合成员。 2013年8月6日, 以TFBOYS组合形式出道;2016年获第16届音乐风云榜年度盛典最受 欢迎综艺节目偶像奖、最受欢迎新偶像,2016亚洲演员评选亚洲十大 演员奖。2017年,获五四优秀青年称号。2018年8月,获得亚洲新歌 榜度盛典年度十大金曲奖。12月4日,获第十五届MAHB年度先生盛典年度偶像奖。 易烊千玺(JacksonYee,2000年11月28日-),生于湖南怀化, 中国内地男歌手、舞者、演员,TFBOYS组合成员。 2013年8月6日, 以TFBOYS组合形式出道;2016年获第16届音乐风云榜年度盛典最受 欢迎综艺节目偶像奖、最受欢迎新偶像,2016亚洲演员评选亚洲十大 演员奖。2017年,获五四优秀青年称号。2018年8月,获得亚洲新歌 榜度盛典年度十大金曲奖。12月4日,获第十五届MAHB年度先生盛典年度偶像奖。 易烊千玺(JacksonYee,2000年11月28日-),生于湖南怀化, 中国内地男歌手、舞者、演员,TFBOYS组合成员。 2013年8月6日, 以TFBOYS组合形式出道;2016年获第16届音乐风云榜年度盛典最受 欢迎综艺节目偶像奖、最受欢迎新偶像,2016亚洲演员评选亚洲十大 演员奖。2017年,获五四优秀青年称号。2018年8月,获得亚洲新歌 榜度盛典年度十大金曲奖。12月4日,获第十五届MAHB年度先生盛典年度偶像奖。

drag.js:

(由于js文件是原本就封装好的,内容较多,可以精简)

function darg(obj,content,scale) {
    //鼠标按下事件
    obj.onmousedown = function (ev) {
        var ev = window.event || ev;
        //屏幕的可视宽高   作控制拖拽范围用
        var cW = obj.parentNode.offsetWidth;
        var cH = obj.parentNode.offsetHeight;
        //元素的占位宽高
        var bW = obj.offsetWidth;
        var bH = obj.offsetHeight;
        //计算鼠标按下的位置
        var disX = ev.clientX - obj.offsetLeft;
        var disY = ev.clientY - obj.offsetTop;
        //添加移动事件
        document.onmousemove = function (ev) {
            var ev = window.event || ev;
            //计算鼠标移动的距离
            var x = ev.clientX - disX;
            var y = ev.clientY - disY;
            content.style.top=-y*scale+'px';
            //判断可拖拽的范围,限定在屏幕可视区域
            if (x < 0) {
                obj.style.left = '0px';
                //cW-bW计算的是obj的left属性可设置的最大值,大于它的时候就会超出可视区域
            } else if (x > cW - bW) {
                obj.style.left = cW - bW + 'px';
            } else {
                obj.style.left = x + 'px';
            }
            if (y < 0) {
                obj.style.top = '0px';
                content.style.top='0px';
                //top同left计算原理一样
            } else if (y > cH - bH) {
                content.style.top=-(cH - bH)*scale+'px';
                obj.style.top = cH - bH + 'px';
            } else {
                obj.style.top = y + 'px';
            }
            return false;
        }
        //鼠标抬起事件
        document.onmouseup = function () {
            //当鼠标抬起时,清除这两个事件
            document.onmousemove = document.onmouseup = null;
        }
    }
}

 

你可能感兴趣的:(原生js,web大前端,js,滚动条)