Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
css
/* You can remove this page div in your website */ #page{ width:100%; height:100%; position:absolute; background:#eee; } /* Our normalize css */ *{ margin:0; box-sizing: border-box; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } /* Our wrapper */ .wrapper{ width: 690px; height: 600px; max-height:100vh; position: absolute; left:50%; top:50%; transform:translate3d(-50%,-50%,0); overflow:hidden; box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); } /* Our image information */ .bottom, .middle, .top { width:100%; height:100%; background-repeat:no-repeat; background-color: white; background-size: cover; background-position: center; position: absolute; top:0; left:0; pointer-events:none; overflow: hidden; &>img{ height:100%; } } .top{ width:125px; } .scroller{ width: 50px; height:50px; position: absolute; left:100px; top:50%; transform:translateY(-50%); border-radius:50%; background-color: #fff; opacity:0.9; transition: opacity 0.12s ease-in-out; pointer-events:auto; cursor: pointer; box-shadow: 3.5px 0px 7px rgba(100, 100, 100, 0.2); } .scroller-middle{ margin-top:25px; } .scroller-top{ margin-top:-25px; } .scroller:hover{ opacity:1; } .scrolling{ pointer-events:none; opacity:1; // z-index: 1; } .scroller__thumb{ width:100%; height:100%; border-radius:50%; padding: 7px; } .scroller:before, .scroller:after{ content:" "; display: block; width: 7px; height: 9999px; position: absolute; left: 50%; margin-left: -3.5px; z-index: 30; transition:0.1s; box-shadow: 3.5px 0px 7px rgba(100, 100, 100, 0.2); } .scroller:before{ top:49px; } .scroller:after{ bottom:49px; } /* If you want to cahnge the colors, make sure you change the fill in the svgs to match */ .scroller-middle>.scroller__thumb{ border: 5px solid #FFCCBC; } .scroller-middle:before, .scroller-middle:after{ background: #FFCCBC; } .scroller-top>.scroller__thumb{ border: 5px solid #FFAB91; } .scroller-top:before, .scroller-top:after{ background: #FFAB91; }
JavaScript
// I hope this over-commenting helps. Let's do this! // Let's use the 'active' variable to let us know when we're using it let active = false; // and define our dom elements to make it easier to read let scrollerMiddle = document.querySelector('.scroller-middle'); let scrollerTop = document.querySelector('.scroller-top'); // First we'll have to set up our event listeners // We want to watch for clicks on our scroller scrollerMiddle.addEventListener('mousedown',function(){ active = "middle"; // Add our scrolling class so the scroller has full opacity while active scrollerMiddle.classList.add('scrolling'); }); // We also want to watch the body for changes to the state, // like moving around and releasing the click // so let's set up our event listeners document.body.addEventListener('mouseup',function(){ active = false; scrollerMiddle.classList.remove('scrolling'); }); document.body.addEventListener('mouseleave',function(){ active = false; scrollerMiddle.classList.remove('scrolling'); }); // We'll have to do the same for our top scroller scrollerTop.addEventListener('mousedown',function(){ active = "top"; scrollerTop.classList.add('scrolling'); }); document.body.addEventListener('mouseup',function(){ active = false; scrollerTop.classList.remove('scrolling'); }); document.body.addEventListener('mouseleave',function(){ active = false; scrollerTop.classList.remove('scrolling'); }); // Let's figure out where their mouse is at document.body.addEventListener('mousemove',function(e){ if (!active) return; // Their mouse is here... let x = e.pageX; // but we want it relative to our wrapper x -= document.querySelector('.wrapper').getBoundingClientRect().left; // Okay let's change our state scrollIt(x); }); // Let's use this function function scrollIt(x){ // Calculate our transform let transform = Math.max(0,(Math.min(x,document.querySelector('.wrapper').offsetWidth))); // we show all our bottom image but how much of our middle and top, // that'll depend on what we're dragging // if we're dragging the middle slider if (active==="middle"){ document.querySelector('.middle').style.width = transform+"px"; scrollerMiddle.style.left = transform-25+"px"; // if we're using scroller-middle, middle must always be to the right of top if (scrollerTop.getBoundingClientRect().left>scrollerMiddle.getBoundingClientRect().left-5){ document.querySelector('.top').style.width = transform-5+"px"; scrollerTop.style.left = transform-30+"px"; } } // if we're dragging the top slider if (active==="top"){ document.querySelector('.top').style.width = transform+"px"; scrollerTop.style.left = transform-25+"px"; // if we're using scroller-top, top must always be to the left if (scrollerTop.getBoundingClientRect().left>scrollerMiddle.getBoundingClientRect().left-5){ document.querySelector('.middle').style.width = transform+5+"px"; scrollerMiddle.style.left = transform-20+"px"; } } } // Let's set our opening state based off the width, // we want to show a bit of both images so the user can see what's going on active = "middle"; scrollIt(460); active = "top"; scrollIt(230); active = false; // And finally let's repeat the process for touch events // first our middle scroller... scrollerMiddle.addEventListener('touchstart',function(){ active = "middle"; scrollerMiddle.classList.add('scrolling'); }); document.body.addEventListener('touchend',function(){ active = false; scrollerMiddle.classList.remove('scrolling'); }); document.body.addEventListener('touchcancel',function(){ active = false; scrollerMiddle.classList.remove('scrolling'); }); // then scroller top, our second scroller scrollerTop.addEventListener('touchstart',function(){ active = "top"; scrollerTop.classList.add('scrolling'); }); document.body.addEventListener('touchend',function(){ active = false; scrollerTop.classList.remove('scrolling'); }); document.body.addEventListener('touchcancel',function(){ active = false; scrollerTop.classList.remove('scrolling'); }); document.querySelector('.wrapper').addEventListener('touchmove',function(e){ if (!active) return; e.preventDefault(); let x = e.touches[0].pageX; x -= document.querySelector('.wrapper').getBoundingClientRect().left; scrollIt(x); });
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>3层图像滑块-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号