【发布时间】: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 一样慢。
【问题讨论】:
标签: javascript html css scroll html5-canvas