为什么可以';我不能去中心吗?在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]//