如果您的iframe
域与您的主页相同,那么很容易:
- 将 iframe 的
top
位置设置在标题栏下方(即60px
);
- 在其内容中监听
scroll
事件;
- 每次用户滚动 iframe 时
top
根据属性进行调整。scrollTop
HTML(就像你的一样,只是top
改变了:
<iframe ... style="... top:60px; ...">
JavaScript(在 jQuery 中load
):
$("iframe").contents().scroll(function(e) {
var top = 60 - $(this).scrollTop();
if ( top < 0 )
top = 0;
$("iframe").css("top", top);
});
这是一个工作演示。
原始答案(对于域不同的情况):
如果您的iframe
域与您的主页不同,这将有点困难,因为您不能(出于安全原因)从外部访问内部页面的 DOM 元素(或 JavaScript) - 反之亦然反之亦然。所以,你不能监听内页AFAIK的滚动事件。
在这里,我将展示一个“丑陋”的解决方法:让你变得iframe
非常大,将它放在栏的下方,当用户滚动鼠标滚轮时,top
更改iframe
. 我为此使用了jquery-mousewheel插件:
<iframe src="http://en.wikipedia.org" style="border: 0; position:fixed;
top:60px; left:0; right:0; bottom:0; width:100%; height:10000%">
...
$("html, body").mousewheel(function(e,d,dx,dy) {
var iframe = $("iframe");
var top = parseInt(iframe.css("top"))+10*dy;
if ( top > 60 )
top = 60;
iframe.css("top", top);
});
这是一个工作演示。缺点是没有可见的滚动条(因此鼠标滚轮是滚动的唯一控件)并且也无法将iframe
高度调整为与内容一样大(因为由于来源不同,您无法知道它的高度我之前提到的约束)。
不幸的是,只有在某些浏览器(例如 Chrome)中,当鼠标悬停在iframe
. 在其他(例如 Firefox)中,只有当您将鼠标滚动到透明栏上时它才会起作用。