我正在研究如何实现SLaks的解决方案,并发现了一个适用于我的情况的“hack”。虽然它不能进行拉伸操作,但我以一种适合我的方式模拟了它,并且它是100%的CSS。我不声称这是一个通用解决方案,但它对我有效。
为了回答这个问题,我需要更精确地定义我的问题。在我的原始代码中,
<div style="background-image: url(foo.jpg) repeat-x;">
... Injected HTML codes
</div>
foo.jpg 是一个从一种颜色渐变到白色的 600px x 1px 渐变背景,这个颜色是网站的主题色。这样在大屏幕上,我可以得到非常平滑的颜色过渡效果。虽然它没有完全延伸到底部,但我可以接受。问题出现在当我需要呈现一些仅显示 300px 高度的数据时。那么只有渐变中的 300px 显示出来,导致颜色出现“丑陋”的跳变。这正是我通过调整大小想要解决的问题。
虽然调整背景大小是技术上更干净的解决方案,但我所做的是
<div style="background-image: url(foo.jpg) repeat-x;">
<div style="background-image: url(fooBottom.png) repeat-x; background-position: bottom;"
... Injected HTML codes
</div>
</div>
对我来说,fooBottom.png是一张200像素宽、1像素高的图片,底部为100%白色,顶部为100%透明。
内部关键点是“background-position: bottom;”,这将定位新的背景区域。如果对我显示的区域高度>800像素,则此新代码在视觉上不起作用。
但是对于短于800像素的区域,底部图像会靠近顶部。这种覆盖发生是因为内部块在外部块之上绘制。然后,如果区域变短,底部背景图像将覆盖越来越多的顶部背景图像。
但由于底部图像中的透明度,它确保在较短的区域中,底部有一个混合到白色的效果。
我将在我的个人网站上创建一个博客,展示示例。当我完成示例时,我将更新此帖子。
更新 - 我已经在http://sntsoftware.com/Blog发布了一个可用的示例。