Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我不能去中心吗?在JavaScript中_Javascript_Html_Plugins - Fatal编程技术网

为什么可以';我不能去中心吗?在JavaScript中

为什么可以';我不能去中心吗?在JavaScript中,javascript,html,plugins,Javascript,Html,Plugins,我使用。 scrollama是一个插件,允许使用交叉点观察者将参考线居中 我想做什么 现在(默认情况下),我根据body, 我想根据特定元素#cont(=内容)获取中心 我这样修改了scrollama.js的代码 现状 第213行 function handleResize() { // viewH = window.innerHeight; // pageH = getPageHeight(); viewH = document.getElementById("c

我使用。
scrollama是一个插件,允许使用交叉点观察者将参考线居中


我想做什么

现在(默认情况下),我根据
body

我想根据特定元素
#cont
(=内容)获取中心

我这样修改了scrollama.js的代码


现状 第213行

function handleResize() {
    // viewH = window.innerHeight;
    // pageH = getPageHeight();
    viewH = document.getElementById("cont").offsetHeight;  // change
    pageH = document.getElementById("cont").offsetHeight;  // change

    offsetMargin = offsetVal * viewH;

    if (isReady) {
      stepOffsetHeight = stepEl.map(function (el) { return el.offsetHeight; });
      stepOffsetTop = stepEl.map(getOffsetTop);
      if (isEnabled) { updateIO(); }
    }

    if (isDebug) { update({ id: id, stepOffsetHeight: stepOffsetHeight, offsetMargin: offsetMargin, offsetVal: offsetVal }); }
  }
结果:

现在,我可以得到
#cont
,但参考线在顶部。。(此虚线是scrollama的调试工具)

我想如果我改变元素scrollama.js并像这样改变它,这会占据中心位置,但是还有什么我必须改变的吗


可能与获取中心相关的代码 我提取了scrollama中使用
viewH
pageH
的所有位置

function scrollama() {

//【Line 143~】
var viewH = 0;
var pageH = 0;

//【Line 213~】
  function handleResize() {
    viewH = window.innerHeight;
    pageH = getPageHeight();

    offsetMargin = offsetVal * viewH;
  }

//【Line 471~】
// jump into viewport
  function updateViewportAboveIO() {
    io.viewportAbove = stepEl.map(function (el, i) {
      var marginTop = pageH - stepOffsetTop[i];    // <- here
      var marginBottom = offsetMargin - viewH - stepOffsetHeight[i];    // <- here
      var rootMargin = marginTop + "px 0px " + marginBottom + "px 0px";
      var options = { rootMargin: rootMargin };
      // console.log(options);
      var obs = new IntersectionObserver(intersectViewportAbove, options);
      obs.observe(el);
      return obs;
    });
  }

  function updateViewportBelowIO() {
    io.viewportBelow = stepEl.map(function (el, i) {
      var marginTop = -offsetMargin - stepOffsetHeight[i];
      var marginBottom = offsetMargin - viewH + stepOffsetHeight[i] + pageH; // <- here
      var rootMargin = marginTop + "px 0px " + marginBottom + "px 0px";
      var options = { rootMargin: rootMargin };
      // console.log(options);
      var obs = new IntersectionObserver(intersectViewportBelow, options);
      obs.observe(el);
      return obs;
    });
  }

  // look above for intersection
  function updateStepAboveIO() {
    io.stepAbove = stepEl.map(function (el, i) {
      var marginTop = -offsetMargin + stepOffsetHeight[i];
      var marginBottom = offsetMargin - viewH;    // <- here
      var rootMargin = marginTop + "px 0px " + marginBottom + "px 0px";
      var options = { rootMargin: rootMargin };
      // console.log(options);
      var obs = new IntersectionObserver(intersectStepAbove, options);
      obs.observe(el);
      return obs;
    });
  }

  // look below for intersection
  function updateStepBelowIO() {
    io.stepAbove = stepEl.map(function (el, i) {
      var marginTop = -offsetMargin;
      var marginBottom = offsetMargin - viewH + stepOffsetHeight[i];    // <- here
      var rootMargin = marginTop + "px 0px " + marginBottom + "px 0px";
      var options = { rootMargin: rootMargin };
      // console.log(options);
      var obs = new IntersectionObserver(intersectStepBelow, options);
      obs.observe(el);
      return obs;
    });
  }

  // progress progress tracker
  function updateStepProgressIO() {
    io.stepProgress = stepEl.map(function (el, i) {
      var marginTop = stepOffsetHeight[i] - offsetMargin;
      var marginBottom = -viewH + offsetMargin;    // <- here
      var rootMargin = marginTop + "px 0px " + marginBottom + "px 0px";
      var threshold = createThreshold(stepOffsetHeight[i]);
      var options = { rootMargin: rootMargin, threshold: threshold };
      // console.log(options);
      var obs = new IntersectionObserver(intersectStepProgress, options);
      obs.observe(el);
      return obs;
    });
  }

}
函数scrollama(){
//【第143行】
var-viewH=0;
var-pageH=0;
//【第213行~】
函数handleResize(){
viewH=窗内高度;
pageH=getPageHeight();
offsetMargin=offsetVal*viewH;
}
//【第471行】
//跳入视口
函数updateViewPortOverlio(){
io.VIEWPORATABOVE=stepEl.map(函数(el,i){
var marginTop=pageH-阶跃偏移量[i]//