我有一个可滚动的面板,显示的内容大于屏幕
new Ext.Panel({
scroll: 'vertical',
html: 'very larger content here with an anchor. <p id="anchor">'
});
和(在点击事件上)我想(以编程方式)将面板滚动到某个HTML元素。最好甚至是动画的。在jquery中,我会按照
的方式做点什么$('html,body').animate({ scrollTop: $("#anchor").offset().top }, 'slow');
答案 0 :(得分:6)
原来你可以做的是
function scrollIntoView(el,cmp) {
var dy = cmp.scroller.offset.y + el.getY() - cmp.body.getY();
cmp.scroller.setOffset({x:0, y:-dy}, true);
}
scrollIntoView(Ext.fly('anchor'), Ext.getCmp('panel'));
可能与scrollIntoView()
内部的内容非常相似 - 虽然没有查看该代码。但它没有动画。
答案 1 :(得分:2)
您可以使用setOffset()
对象的scroller
功能执行此操作。
实施例: 你有原始小组:
var myPanel = new Ext.Panel({
scroll: 'vertical',
html: 'very larger content here with an anchor. <p id="anchor">'
});
要滚动此元素,只需调用
即可myPanel.scroller.setOffset(0,20)
您可以添加第三个动画参数,如文档here所示,但我还没有测试过那个参数。
答案 2 :(得分:0)