首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获得元素HTML中的滚动位置在Vanilla JS中不工作

获得元素HTML中的滚动位置在Vanilla JS中不工作
EN

Stack Overflow用户
提问于 2021-04-28 07:54:30
回答 2查看 326关注 0票数 0

我想得到当前水平滚动位置,但结果始终是NaN。

当使用window而不是wrapper时,这段代码是它的工作。

我该怎么办?

代码语言:javascript
复制
<div class="container mt-5">
  <span id="current view"> 0 </span>
   <div class="my-row m-0" id="lorem">
     <div class="item col-8" id="data_1">A</div>
     <div class="item col-8" id="data_2">B</div>
     <div class="item col-8" id="data_3">C</div>
     <div class="item col-8" id="data_4">D</div>
     <div class="item col-8" id="data_5">E</div>
     <div class="item col-8" id="data_6">F</div>
     <div class="item col-8" id="data_7">G</div>
     <div class="item col-8" id="data_8">H</div>
  </div>
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
</div>
代码语言:javascript
复制
.my-row{
  width: 100%;
  height: 50vh;
  background: #34495e;
  overflow: auto;
  display: flex;
}

.my-row .item{
  width: 250px;
  height: 450px;
}

.my-row .item#data_1{
  background: var(--danger);
}

.my-row .item#data_2{
  background: salmon;
}

.my-row .item#data_3{
  background: royalblue;
}

.my-row .item#data_4{
  background: var(--primary);
}

.my-row .item#data_5{
  background: var(--info);
}

.my-row .item#data_6{
  background: greenyellow;
}

.my-row .item#data_7{
  background: limegreen;
}

.my-row .item#data_8{
  background: var(--success);
}
代码语言:javascript
复制
let wrapper = document.querySelector('#lorem');
let lastKnownScrollPosition = 0;

/* wrapper[0].scrollLeft = 0; */

wrapper.addEventListener('scroll', function(e) {
  lastKnownScrollPosition = wrapper.scrollX;
    console.log(parseInt(lastKnownScrollPosition));
});

我的小提琴

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-28 08:15:48

element.scrollTop是你所需要的。

代码语言:javascript
复制
let wrapper = document.querySelector('#lorem');
let lastKnownScrollPosition = 0;

wrapper.addEventListener('scroll', function(e) {
  lastKnownScrollPosition = e.target.scrollTop; 
    console.log(parseInt(lastKnownScrollPosition));
});
代码语言:javascript
复制
.my-row{
  width: 100%;
  height: 50vh;
  background: #34495e;
  overflow: auto;
  display: flex;
}

.my-row .item{
  width: 250px;
  height: 450px;
}

.my-row .item#data_1{
  background: var(--danger);
}

.my-row .item#data_2{
  background: salmon;
}

.my-row .item#data_3{
  background: royalblue;
}

.my-row .item#data_4{
  background: var(--primary);
}

.my-row .item#data_5{
  background: var(--info);
}

.my-row .item#data_6{
  background: greenyellow;
}

.my-row .item#data_7{
  background: limegreen;
}

.my-row .item#data_8{
  background: var(--success);
}
代码语言:javascript
复制
<div class="container mt-5">
  <span id="current view"> 0 </span>
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
  <br class="mt-5 mb-5">.
   <div class="my-row m-0" id="lorem">
     <div class="item col-8" id="data_1">A</div>
     <div class="item col-8" id="data_2">B</div>
     <div class="item col-8" id="data_3">C</div>
     <div class="item col-8" id="data_4">D</div>
     <div class="item col-8" id="data_5">E</div>
     <div class="item col-8" id="data_6">F</div>
     <div class="item col-8" id="data_7">G</div>
     <div class="item col-8" id="data_8">H</div>
  </div>

</div>

票数 1
EN

Stack Overflow用户

发布于 2021-04-28 08:18:36

因为,window.ScrollX会得到窗口水平滚动位置的位置。为了获得包装器的滚动位置,使用wrapper.scrollLeft获取水平位置,或使用wrapper.scrollTop获取垂直位置。

代码语言:javascript
复制
let wrapper = document.querySelector('#lorem');
let lastKnownScrollPosition = 0;


wrapper.addEventListener('scroll', function(e) {
  lastKnownScrollPosition = wrapper.scollLeft;
    console.log(parseInt(lastKnownScrollPosition));
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67296057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档