图像的有限滚动

Posted

技术标签:

【中文标题】图像的有限滚动【英文标题】:Limited scrolling for an Image 【发布时间】:2013-10-20 19:18:14 【问题描述】:

我正在开发一个移动网站,一旦网站加载,全屏图像会显示为浮动层。

请看下面......

A:我的移动网站包含大量超出窗口高度的内容

B:页面加载后,全屏图像显示为内容顶部的浮动层。图片超出窗口高度

C:当用户向下滚动时,他可以看到图像的下部,但看不到网站内容。无论用户如何向下滚动,图像的底部都不应与屏幕底部分离

我可以知道如何实现 C 吗??

另外,在情况 B 中,如果用户使用的是大屏幕智能手机,有时图像可能不会超过屏幕高度,在这种情况下,图像应该固定在屏幕顶部且不可滚动。

如果以上所有都可以通过不使用jquery来实现会更好。不过,如果是必须的话,那还是可以的…………

非常感谢。

【问题讨论】:

手绘示例+1 jQuery 是 javascript。你总是可以使用纯 JavaScript 而不是 jQuery。 【参考方案1】:

虽然一般效果只能通过 CSS 实现,但您可能需要 javascript 来打开和关闭效果。

一般的想法是在包含图像的层上使用position: fixedoverflow: scroll,而body 具有overflow: hidden。在这些情况下,您可以滚动叠加层的内容,但不能滚动正文。

虽然这适用于台式机,但在移动设备上情况会有所不同,尽管body 上的overflow: hidden 会呈现所有内容。一个快速的解决方法是将position: fixed 也应用于body。我不知道这是否是预期的行为,但它在 ios 上的 Safari 和 Chrome 中都可以正常工作。

标记轮廓:

<body class="no-scroll">
  <section class="content">
    /* content here */
  </section>

  <aside class="overlay">
    <img src="img.jpg">
  </aside>
</body>

CSS:

.no-scroll 
  overflow: hidden;
  position: fixed;


.overlay 
  overflow-y: scroll;
  position: fixed;
  top: 0; right: 0; bottom: 0; left: 0;
  display: none;


.overlay img 
  width: 100%;
  height: auto;


.no-scroll .overlay 
  display: block;

有了这个,您可以使用 javascript 在body 上切换no-scroll 类。当它在那里时,溢出的内容被隐藏,overlay 是可见的。当它不存在时,overlay 将被隐藏。

这是一个效果示例(不过,没有 .no-scroll 类和 javascript,只是为了表明它有效)

    Full screen With markup/CSS visible

编辑:

在上面的例子中,我给overlay 一个半透明的背景,并给它里面的图像一个100% 的max-width。如果您希望整个屏幕都充满图像,请将max-width 更改为常规width

编辑 2:

根据要求,这里有一个 jQuery 函数来切换效果。

$(".close").click(function() 
  $("body").toggleClass("no-scroll");
);

只需提供&lt;button&gt; 或任何类名close,它就会打开和关闭效果。

【讨论】:

这个答案太棒了!非常感谢=D 只是一个附加问题:当用户关闭图像层时,是否可以让 body 属性恢复正常(删除溢出:隐藏和位置:固定)? 是的。正如我在回答中所写,您可能需要使用 javascript。既然你谈到了 jQuery,我将举一个使用它的例子。一分钟后查看我的更新。 普通的javascript有什么方法可以做到这一点?因为我可能因为某些原因无法导入jquery库。 是的,有可能。请在此处查看此主题:***.com/questions/195951/…

以上是关于图像的有限滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何动态调整电子邮件客户端中的图像大小?

通过拖动鼠标滚动图像

图像缩放时在 UIScrollView 中停止滚动图像

可滚动且与 UITable 滚动同步的背景图像

根据单击的图像在水平滚动视图上的图像

滚动视图和图像拖动问题