【发布时间】:2014-02-03 14:00:57
【问题描述】:
情况
HTML 页面背景图像应显示在固定位置,填满整个屏幕或窗口(在非平板电脑、非智能手机设备上)。
背景图片是使用ImageShack 创建的。到目前为止没有任何问题。
我创建了一个Plunk 来展示当前的进度。
问题
在非视网膜设备(戴尔笔记本电脑)上,图像似乎可以正常渲染,填满页面的整个背景。
在我的 iPhone(视网膜)上,该图像绝对不会显示为高分辨率图像。
我目前的解决方案
本示例中使用的 JavaScript 代码如下:
function isRetina() {
return window.devicePixelRatio > 1;
}
$(document).ready(function() {
var url = "http://farm8.staticflickr.com/7398/11622056325_08e35bd803_o_d.jpg";
var b = $('body'), w = $(window), width = w.innerWidth(), height = w.innerHeight();
$('#retina').text('Is ' + (isRetina() ? '' : 'not') + ' retina.');
$('#size').text(width + " x " + height);
b.css('background-image'
, 'url(http://imagizer.imageshack.us/'
+ width
+ 'x'
+ height
+ 'f0/'
+ url
+ ')');
if (isRetina()) {
b.css('background-size', (width / 2) + 'px ' + (height / 2) + 'px');
}
});
问题
- 应使用哪些 CSS 设置来设置高分辨率“视网膜”背景图片?
- 如何在 iPhone 上创建填充整个(可见)屏幕的背景图像?
更新:我的解决方案
尽管mcmac's answer 带来了一些见解,但这并不是我想要的答案。我只是想了解如何设置背景图像的参数,以便在视网膜屏幕上显示高分辨率图像。
解决方法很简单。
a) 使用背景尺寸
当使用background-size 时,实际图像必须是屏幕大小的两倍(在每个方向上),background-size 属性必须具有屏幕大小(与我所做的相反:一半屏幕大小):
b.css('background-image', 'url(http://my.image.url.com/size' + (width * 2) + 'x' + (height * 2) + ')');
b.css('background-size', width + 'px ' + height + 'px');
b) 使用固定图像
作为R3tep suggested,我可以使用普通的固定图像代替背景图像。在这种情况下,图像的大小必须是屏幕上图像大小的两倍,并且 css 必须是 height: 100%; width: 100%。
【问题讨论】:
-
this 似乎解决了这个问题的第一部分?
-
带有
position: fixed、z-index: 0和width: 100%的img标签不是解决方案吗? -
@Liam 检测视网膜显示器在我的机器上工作。只是不清楚如何实际使用高分辨率图像以及我应该使用哪个 css。
标签: javascript jquery html css retina