我正在制作一个首页画廊,该画廊有几个图像,通过 CSS 缩放以适应页面。
图像从一个渐变到下一个(彼此重叠),并且如果用户调整浏览器大小以用完空间,则将调整大小。
问题是图像褪色在大多数浏览器和除最新计算机之外的所有计算机上都表现得非常糟糕。
但是,如果图像没有被拉伸,那么大多数计算机上所有浏览器的性能都是完美的。
我之前在我设计的其他网站上遇到过这个问题,并且花费了大量时间研究和测试解决方案,但我似乎找不到任何东西。
有任何想法吗?
我已经实现了性能/样式权衡。我没有任意缩放图像,比如 0.7543234 倍,而是将其四舍五入到 8,依此类推。我发现任意缩放因子会带来巨大的性能损失,而使用单个十进制缩放可以大大减少这种情况。
下面是一些js代码:
var adjustedNewWidth = Math.round((roundNumber( (newWidth / originalImage.width), 1)+0.1)*originalImage.width);
var adjustedNewHeight = Math.round((roundNumber( (newHeight / originalImage.height), 1)+0.1)*originalImage.height);
- newWidth 是所需的宽度,
- originalImage.width 是我保存原始图像大小的数组(因为 js 非常聪明,它在缩放后无法访问这些),
- roundNumebr 是一个缩放到最接近小数位的函数
function roundNumber(num, dec) {
var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
return result;
}
在此之后,褪色效果提高了约 50%,但仍不完美。好吧,谢谢大家的帮助,希望这可以帮助那里的人。