使用 HTML5/CSS3 而不是 JavaScript 滚动滚动/羊皮纸

Posted

技术标签:

【中文标题】使用 HTML5/CSS3 而不是 JavaScript 滚动滚动/羊皮纸【英文标题】:Scrolling a scroll/parchment using HTML5/CSS3 instead of JavaScript 【发布时间】:2014-04-17 03:21:26 【问题描述】:

有没有一种方法可以仅使用 html5 和 CSS3 创建一个在视觉上充当scroll/parchment 的框架?目前我已经通过使用 javascript 实现了它,但是滚动事件在移动设备上并不经常触发,这使得滚动的页眉和页脚结结巴巴。

var paperHeight = 1710;
var viewHeight = 0;
var scrollTopOffset = 240 - paperHeight;
var scrollBottomOffset = scrollTopOffset - paperHeight;

$(function() 
  $(window)
    .on('resize', function() 
      viewHeight = $(window).height() - $('.container').outerHeight() + viewHeight - $('.footer').outerHeight();
      $('.scroll-view')
        .height(viewHeight)
    )
    .trigger('resize');

  $('.scroll-view')
    .on('scroll', function() 
      $('.scroll-top')
        .css("background-position", "0 " + (paperHeight - scrollTopOffset + $(this).scrollTop()) + "px");

      $('.scroll-bottom')
        .css("background-position", "0 " + (viewHeight + scrollBottomOffset + $(this).scrollTop()) + "px");
    )
    .trigger('scroll');
)

网站:https://pendrokar.github.io/magia-ts/index.html

源码:https://github.com/Pendrokar/magia-ts/

如果您的浏览器滚动不顺畅,我知道如何查看滚动动画的最佳方法是在内容上使用鼠标中键,然后上下移动鼠标。

所以滚动以下列方式起作用。向上或向下滚动内容时,页眉和页脚向相反方向滚动。页眉和页脚显示了将要发生的事情或之前发生的事情的反转图像。 JavaScript 版本使用的背景图像只是原始复制和反转的,使用 CSS3 变换矩阵只需要一张图像。

我认为在溢出的“滚动”元素中使用显示“绝对”或“固定”元素可以实现这一点,但是当内容滚动时,它们都不会使元素停留在它们的位置。

HTML5 Canvas 是另一种选择,但它可能仍然和 JavaScript 一样慢。

【问题讨论】:

【参考方案1】:

您的滚动图像大小超过 0.5 兆字节。

对于移动浏览器来说,这个大小可能太大了,无法处理而不会卡顿。

(特别是因为它被绘制了 3 次。)

尝试使用重量为 56K 的下采样版本的卷轴:

如果您不能让移动设备为您的设计经常触发滚动事件,那么您可以使用 html5 画布,它可以让您更好地控制重绘率。但请先尝试使用较小的图像,看看是否能解决您的移动卡顿问题。

祝你的游戏好运!

【讨论】:

变化不大。这可能不是因为滚动事件触发的频率,而是因为使用“背景位置”而不是滚动(使用 javascript)页眉和页脚中的隐藏内容。

以上是关于使用 HTML5/CSS3 而不是 JavaScript 滚动滚动/羊皮纸的主要内容,如果未能解决你的问题,请参考以下文章

web前端干货,Html5+Css3响应式网页设计视频教程,只出精品(775期)

前端25款不得不说的html5+css3动画效果

前端25款不得不说的html5+css3动画效果

前端25款不得不说的html5+css3动画效果

像 BluePrint/960gs 这样的 HTML5+CSS3 框架?

HTML5+CSS3的响应式网页设计:自动适应屏幕宽度