Famo.us 有一个“Scrollview”,但只有当里面有多个表面时它才会滚动。
我想要一个长页面的文本,但这不会响应滚动。
鉴于 famo.us 故意覆盖正常的本机滚动视图(https://github.com/Famous/views/issues/45 https://github.com/Famous/views/issues/45),滚动一长页内容来出名的最佳方法是什么?
我正在考虑将所有内容 html 分开(例如逐个 div),并将一堆表面添加到正常的滚动视图中。这可能适用于一些简单的内容,但对于任何重要的内容来说可能会很复杂 - JS 必须解析要显示的 html 的 DOM。
我还认为也许可以将 iFrame 设置为拥有自己的滚动条,但尚未实现。这意味着以某种方式覆盖当前隐藏所有剪辑的著名 CSS。然而,事实上所有 touchmove 事件都会被有名的事件吞没,这需要很多其他的解决方法,或者分叉有名的。
我假设您使用真实大小的表面来表示动态长度的长格式内容。这样做时,滚动视图无法理解 true 的大小,因此您无法滚动。我们可以将表面包装在 RenderNode 和 Modifier 中,并使用 Modifier 的 sizeFrom 函数以实际尺寸(以像素为单位)包装真实尺寸的表面。这样滚动视图就知道你的内容有多长,并会相应地滚动。
这是例子!希望能帮助到你!
var Engine = require('famous/core/Engine');
var Surface = require('famous/core/Surface');
var RenderNode = require('famous/core/RenderNode');
var Modifier = require('famous/core/Modifier');
var Scrollview = require('famous/views/Scrollview');
var context = Engine.createContext();
var content = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod \
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, \
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo \
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse \
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non \
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
var scrollview = new Scrollview();
var surfaces = [];
scrollview.sequenceFrom(surfaces);
surface = new Surface({
size:[undefined,true],
content: content,
properties:{
fontSize:'100px'
}
})
surface.pipe(scrollview);
surface.node = new RenderNode();
surface.mod = new Modifier();
surface.mod.sizeFrom(function(){
target = surface._currTarget;
if (target){
return [undefined,target.offsetHeight];
} else {
return [undefined,true];
}
})
surface.node.add(surface.mod).add(surface);
surfaces.push(surface.node);
context.add(scrollview);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)