2017-10-12 25 views
0

我之前问过这个问题,但我无法很好地表达,但这是我想实现的。滚动单页网站时,所有部分的高度均为100%。当我看到一个内容向下滚动的部分时,我想禁用滚动整个网页直到该部分的内容完全滚动。例如,在此琴:修复一个元素,直到里面的所有内容滚动

div { 
 
    height: 100vh; 
 
} 
 

 
.blue { 
 
    background: blue; 
 
} 
 

 
.red { 
 
    background: red; 
 
} 
 

 
.white { 
 
    background: white; 
 
} 
 

 
.black { 
 
    background: black; 
 
} 
 

 
div.content-wrapper { 
 
    overflow: auto; 
 
    width: 40%; 
 
}
<div class="red"> 
 

 
</div> 
 
<div class="blue"> 
 

 
</div> 
 
<div class=white> 
 
    <div class="content-wrapper"> 
 
    <div class="content"> 
 
     Test TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest 
 
     TestTest TestTest TestTest TestTest TestTest Test 
 
    </div> 
 
    <div class="content"> 
 
     Test TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest 
 
     TestTest TestTest TestTest TestTest TestTest Test 
 
    </div> 
 
    <div class="content"> 
 
     Test TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest TestTest 
 
     TestTest TestTest TestTest TestTest TestTest Test 
 
    </div> 
 
    </div> 
 
</div> 
 
<div class="black"> 
 

 
</div>

当我们到了白色款,它应该是固定的,我们应该听滚动事件,只是不知怎么翻译或内部的滚动元件(测试试验的div)当我们结束时 - 允许滚动到黑色部分。

任何人都有类似的问题?我不知道该怎么做,因此我无法提供我尝试过的代码。我在AngularJS工作。

+0

不使白间隔宽度100%更简单?? – Zoedia

+0

@Zoedia它是,但不是在一个实际的项目,它在中间的某个地方 –

回答

1

你已经找到了解决办法?如果没有,试试这个。

$('.white').on('mousewheel DOMMouseScroll', function(e) { 
 
    var e0 = e.originalEvent, 
 
    delta = e0.wheelDelta || -e0.detail; 
 

 
    var scrolled = $(".content-wrapper").scrollTop() + (delta < 0 ? 1 : -1) * 20; 
 
    if (!($(".content-wrapper").scrollTop() == 0 && scrolled < 0) && //check if hit top and still scrolling above 
 
     !($(".content-wrapper")[0].scrollHeight - $(".content-wrapper").scrollTop() <= $(".content-wrapper").outerHeight() && 
 
     scrolled + $(".content-wrapper").outerHeight() > $(".content-wrapper")[0].scrollHeight) //check if scrollbar hit the .white scroll bottom and still scrolling below 
 
    ) { 
 
    $(".content-wrapper").scrollTop(scrolled); 
 
    e.preventDefault(); 
 
    } 
 
});

+0

https://fiddle.jshell。净/ thzw3yn8 / – Zoedia

相关问题