自定义滚轮事件

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>自定义滚轮事件</title>

<style type="text/css">

*{

margin: 0;

padding: 0;

}

#wrap{

width: 300px;

height: 500px;

border: 2px solid red;

overflow: hidden;

position: relative;

}

#content{

width: 300px;

position: absolute;

left: 0;

top: 0;

margin-right: 6px;

}

#content > img{

width: 294px;

height: 500px;

/*去除图片间的间隙*/

vertical-align: top;

}

#sliderWrap{

width:16px;

height: 100%;

background-color: blue;

position: absolute;

right: 0;

top: 0;

}

#slider{

width: 10px;

height: 50px;

background-color: orange;

border-radius: 5px;

position: absolute;

right: 3px;

top: 0;

}

</style>

</head>

<body>

<div id="wrap">

<div id="content">

<img src="img/1.jpg"/>

<img src="img/1.jpg"/>

<img src="img/1.jpg"/>

<img src="img/1.jpg"/>

<img src="img/1.jpg"/>

<img src="img/1.jpg"/>

</div>

<!--右侧滚动条部分-->

<div id="sliderWrap">

<div id="slider"></div>

</div>

</div>

</body>

<script type="text/javascript">

var wrap = document.getElementById("wrap");

var content = document.getElementById("content");

var sliderWrap = document.getElementById("sliderWrap");

var slider = document.getElementById("slider");

// alert(content.clientHeight);

       //设置比例

       var scale = wrap.clientHeight / content.clientHeight;

       //设置滑块的高度

       var h1 = sliderWrap.clientHeight * scale;

       //为了合理设置高度,设置滑块的最小高度

       if (h1 < 50) {

       h1 = 50;

       }else if(h1 >= sliderWrap.clientHeight){

       //当前内容能够完全显示在可视范围以内,不需要滚动条

       sliderWrap.style.display = "none";

       }

       //设置滑块的高度

       slider.style.height = h1 + "px";

       //设置y轴的增量

       var y = 0;

       //为wrap添加滚轮事件

       wrap.onmousewheel = function (e){

       var event1 = event || e;

       console.log(event1.wheelDelta);

       if (event1.wheelDelta < 0) {

       console.log("向上滚动!");

       y += 5;

       }else if(event1.wheelDelta > 0){

       console.log("向下滚动!");

       y -= 5;

       }

       //y变化时,说明在滚动,此时使滚动条发生滚动,以及设置content内容部分滚动

       //设置极端情况,滑块不能滚出屏幕

       if (y <= 0) {

       //滑块最多滑到顶部

       y = 0;

       }else if (y >= sliderWrap.clientHeight - slider.clientHeight) {

       //滑块最多滑到最底部

       y = sliderWrap.clientHeight - slider.clientHeight;

       }

       //更新滑块的位置

       slider.style.top = y + "px";

       //更新内容显示区域部分

       //得到比例

       var scaleY = y / sliderWrap.clientHeight;

       //通过相对比例,得到相对可视位置区域内容

       content.style.top = -content.clientHeight * scaleY + "px";

       }

</script>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值