核心提示:1.首先css布局*{margin: 0;padding: 0;}#wrap{width: 300px;height: 400px;border: 1px solid black;position: ...
1.首先css布局
*{ margin: 0; padding: 0; } #wrap{ width: 300px; height: 400px; border: 1px solid black; position: absolute; left: 100px; top: 100px; font-size: 30px; overflow: hidden; } #sliderWrap{ position: absolute; right: 0; top: 0; height: 100%; width: 20px; background-color: gainsboro; } #middle{ position: absolute; } #slider{ position: absolute; width: 20px; height: 50px; background-color: red; border-radius: 10px; }
2.p标签
<p id="wrap"> <p id="middle"> <!--文字内容--> </p> <!--创建滚动条--> <p id="sliderWrap"> <p id="slider"></p> </p> </p>
3.js代码
<script type="text/javascript"> function mouseWheel(obj,fn){ var ff = navigator.userAgent.indexOf("firefox"); if(ff != -1){ //在火狐下滚轮事件要使用下面的方式绑定 obj.addEventListener("DOMMouseScroll",wheel,false); }else{ obj.onmousewheel = wheel; } function wheel(ev){ var evObj = ev || window.event; var down = true; if(evObj.detail){ dowm = evObj.detail < 0; }else{ down = evObj.wheelDelta > 0; } //回调函数,把值回传给调用的地方 fn(down,evObj); if(evObj.preventDefault){ evObj.preventDefault(); } return false; } } </script> <script type="text/javascript"> var wrap = document.getElementById("wrap"); var middle = document.getElementById("middle"); var sliderWrap = document.getElementById("sliderWrap"); var slider = document.getElementById("slider"); //计算滑块高度 var scale = wrap.offsetHeight / middle.offsetHeight; var h = sliderWrap.offsetHeight * scale; slider.style.height = h + "px"; var maxY = sliderWrap.offsetHeight - slider.offsetHeight; slider.onmousedown = function(ev){ var evObj = ev || event; var disY = evObj.clientY - slider.offsetTop; document.onmousemove = function(ev){ var eve = ev || event; var y = eve.clientY - disY; if(y <= 0){ y = 0; }else if (y >= maxY){ y = maxY; } slider.style.top = y + "px"; var a = y / maxY; var mT = a * (wrap.offsetHeight - middle.offsetHeight); middle.style.top = mT + "px"; } document.onmouseup = function(){ document.onmousemove = ""; } return false; } mouseWheel(wrap,function(dd,ev){ var yy = slider.offsetTop; if (dd) { yy -= 10; } else{ yy += 10; } if (yy <= 0) { yy = 0; } else if(yy >= maxY){ yy = maxY; } slider.style.top = yy + "px"; var moveScale2 = yy / maxY; middle.style.top = (wrap.offsetHeight - middle.offsetHeight) * moveScale2 + "px"; }); sliderWrap.onclick = function(ev){ var evObj = ev || event; var yyy = ev.clientY - wrap.offsetTop - slider.offsetHeight / 2; if (yyy <= 0) { yyy = 0; } else if(yyy >= maxY){ yyy = maxY; } slider.style.top = yyy + "px"; var moveScale2 = yyy / maxY; middle.style.top = (wrap.offsetHeight - middle.offsetHeight) * moveScale2 + "px"; } </script>