我正在研究SLaks解决方案到底如何做,并发现了适用于我的情况的“黑客”。虽然它不能进行拉伸操作,但我正在模拟一种适用于我的情况的方法,它是100%CSS。我不认为这是一个通用的解决方案,但它确实对我有用。
要回答这个问题,我需要在我的问题的定义中更精确一些。 在我的原代码,
<div style="background-image: url(foo.jpg) repeat-x;">
... Injected HTML codes
</div>
foo.jpg是从颜色为白色是网站的颜色600px的x 1像素的梯度。通过这种方式在较大的显示器上,我可以非常平滑地从颜色过渡到白色。它不会一直走到底部是我可以生活的地方。当我需要渲染一些只显示300px高的数据时,问题就来了。然后在梯度显示中只有300像素的600像素。导致颜色变“丑”。这是我真正需要通过调整大小来摆脱的。
虽然调整的背景是技术上清晰的解决方案,我所做的就是
<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像素的图像1px的是在底部100%白和100%透明的最佳。
内在的关键是“背景位置:底部”这将定位新的背景部分。如果为我显示的部分高于800px,则此新代码不会进行任何视觉处理。
但是对于小于800px的部分,底部图片会更靠近顶部。出现这种情况是因为内部块被绘制在外部块的“上方”。然后,如果该部分变短,底部背景图像将覆盖越来越多的顶部背景图像。
但由于较低图像的透明度,它可以确保在较短的部分上,底部会出现白色混合。
我要在我的个人网站上创建一个展示示例的博客。当我完成示例时,我会更新这篇文章。
更新 - 我已工作的例子在http://sntsoftware.com/Blog
+1 - 真正的CSS 2和以前的版本。 CSS 3(仍然是一个工作草案)确实支持通过background-size属性设置背景大小。请参阅http://www.css3.info/preview/background-size/。这是浏览器的支持,虽然真的很重要,但在这种情况下可悲的是缺乏。 – Brandon 2009-10-22 19:41:52
+1如果你把你的img和网格放在一个绝对定位的元素(比如说div)中,你可以跳过使用javascript,只需在已经提到的图片元素的css中添加宽度:100%高度:100%。 – moorej 2009-10-23 04:35:49