jquery - "Freezing"/"Deactivating"滚动条

标签 jquery html css

我的网站实际上有 3 个“面板”,每个面板的宽度都是视口(viewport)的 100%。屏幕顶部的固定标题允许您在它们之间导航,从左向右滑动它们。例如,第一个面板是默认的,在 left:0%,第二个面板是在 left:100%,等等。点击第二个面板的按钮滑动第一个 left:-100%,第二个 left:0%

第一个面板可以比视口(viewport)高,这意味着您可以向下滚动它,就像任何网页一样。其他 2 个面板始终与视口(viewport)一样高,因此不可滚动。

我希望,当查看第二个或第三个面板时,根本无法滚动(因为您看不出区别——第一个面板现在不在屏幕上,第二个或第三个面板上没有任何内容可滚动).当您返回到第一个面板时,它应该与您离开时的滚动高度相同。有什么想法吗?

这是布局图:

enter image description here

滚动时:

enter image description here

最佳答案

有点棘手的解决方案,但您可以找到一些解决方案:

var thumbnails = document.querySelectorAll('#thumbnails > div');
[].forEach.call(thumbnails, function (thumbnail, i) {
    thumbnail.addEventListener('click', function () { 

        var panelColor = this.id.replace(/thumbnail-/, '');
        document.querySelector('body').className = panelColor;

        document.querySelector('body').scrollTop = 0;
        setTimeout(function(){
            document.querySelector('body').scrollTop = document.querySelector('#' + panelColor).dataset['scrollPos'];
        },500);
    });
});

window.onscroll= function(){

      var currentPanelColor = document.querySelector('body').className;
      document.querySelector('#' + currentPanelColor).dataset['scrollPos'] = document.querySelector('body').scrollTop;
}
body{
  overflow-x:hidden;
  width:300vw;
  overflow-y:auto;
  padding:0;margin:0;
}
#container{
  overflow-x:hidden;
  white-space: no-wrap;
  width:300vw;
  padding:0;
  margin:0;
  position:relative;
  
  transition:left 0.5s ease-in-out;
}  

body.blue,body.green{
  overflow-y:hidden;
}
.red #container{left:0;}
.blue #container{left:-100vw;}
.green #container{left:-200vw;}

#container > div.panel{
  width:100vw;
  min-height:100vh;
  display:inline-block;
  vertical-align: top;
  margin:0;
}

#red{background:red;height:200vh}
#blue{background:blue}
#green{background:green}

#thumbnails{
  position:fixed;
  top:10px;
  right:10px;
  z-index:200;
}

#thumbnails > div{
  height:3em;
  width: 5em;
  display:inline-block;
  border: solid 1px #aaa;
}
#thumbnail-red{background:red;}
#thumbnail-blue{background:blue;}
#thumbnail-green{background:green;}
<body class="red">
<div id="container" ><div id="red" class="panel" data-scroll-pos="0"></div><div id="blue" class="panel" data-scroll-pos="0"></div><div id="green" class="panel" data-scroll-pos="0"></div><div id="thumbnails">
    <div id="thumbnail-red"></div>
    <div id="thumbnail-blue"></div>
    <div id="thumbnail-green"></div>
  </div></div>
</body>

关于jquery - "Freezing"/"Deactivating"滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28868387/

相关文章:

jquery - "Wipe"具有Ajax源和行分组的Jquery数据表

jquery - 通过箭头图像显示和隐藏的垂直菜单

javascript - 如何通过 id 单击单选按钮激活事件?

JQuery 水平 Accordion CSS

javascript - 单击元素时避免 flexbox 使用 CSS 扩展

html - 修正游戏的 ARIA 属性

javascript - 如果使用 "ctrl + a + backspace"删除文本,输入未检测到它为空

html - 使用 float 时消失的 div 和奇怪的定位

css - 从控件/输入中删除 Bootstrap 样式

javascript - 需要帮助根据测验获得的结果更改背景颜色吗?