我尝试了所有我知道的可能性,并且我在Stackoverflow中找到了获得window.scrollY
值,它总是给我“0”甚至与window.scrollX相同。拜托,有人可以告诉我我做错了什么吗?
我试过$window.scrollY
,$document[0].documentElement.scrollTop
,$document[0].documentElement.scrollLeft
,$window.pageYOffset
,angular.element($window)
没有什么对我有用。
这是我的代码片段(角度方式)
在下面的代码中
$timeout(function () {
var nav = angular.element($document[0].querySelector("#main"));
// getting this offsetTop value
var topOfNav = nav.prop('offsetTop');
var fixNav = function () {
console.log(topOfNav, $window.scrollY);
};
// this is working great, it is listening to scroll event
$window.addEventListener('scroll', fixNav, true);
});
为了测试我尝试创建简单的HTML文件,并在<script></script>
标签中添加了这个片段(javascript方式),它工作得很好。
这是代码(像冠军一样工作)
<script>
const nav = document.querySelector('#main');
const topOfNav = nav.offsetTop;
function fixNav() {
console.log(topOfNav, window.scrollY);
}
window.addEventListener('scroll', fixNav);
</script>
附加信息:
谢谢。
编辑:
角度材料版本:1.x.x
在挖掘太多(更新包,卸载和重新安装包)之后,我发现一件事是Angular-Material是Blocker。我尝试了其他角度项目,我找到的唯一阻挡剂是Angular Material
删除样式高度的地方:100%来自body元素,上面的代码对我有用
以下对我有用:
html, body { height: auto }