【问题标题】:Use other images for different resolutions为不同的分辨率使用其他图像
【发布时间】:2012-08-03 15:25:56
【问题描述】:

我正在制作一个网站,但我遇到了问题。我已经在屏幕的整个宽度上制作了一个滑块,但我想使用较小的图像来获得小分辨率,而使用更大的图像来获得大分辨率。我的滑块中的图像是用 html 编写的。这可能吗?我该怎么做?

这是我的网站:http://www.yannickluijten.be

【问题讨论】:

  • 到目前为止你看过什么?这是完全可能的,但很高兴在我们给你答案之前看看你尝试了什么。
  • 我发现了一些具有不同样式表的东西,但这不是我想要的。我实际上不知道该怎么做。
  • 我的滑块中的图像是用 html (img) 和 f.e. 编写的。拥有 27 英寸屏幕的人需要 2560 宽度或类似宽度的图像,而这些图像非常大,因此分辨率较小的人必须将图像加载很长时间。所以我想为大/小分辨率的人加载不同的图像。

标签: html image slider resolution


【解决方案1】:

您应该调查 CSS 媒体查询。它们允许您根据浏览器的属性(包括窗口大小)设置特定样式(或导入不同的样式表)。

http://www.w3.org/TR/css3-mediaqueries/

【讨论】:

  • 这个答案不是很有帮助,因为他指定他的图像被“硬编码”为img 标签。在 cmets 中,他还说他不想要多样式表解决方案。
  • @Codemonkey 虽然我同意这是他所说的,但我并不认为 OP 知道他想要什么。他问了一个问题并表示他没有任何线索,然后当给出一个完全有效的解决方案时,他说这不是他想要的,但没有提供任何关于他想要什么的信息。
  • 我只是不知道该怎么做,但不同的样式表不是我要做的。
  • @user1211376 您不需要不同的样式表,您可以在同一个样式表中设置背景图像样式,但可以根据用户的浏览器窗口宽度为其使用不同的图像和不同的图像大小.
  • @user1211376 这不是一个多样式表解决方案,但即使是这样,如果您如此坚决地拒绝别人的答案而没有自己的答案,那么为什么还要问这个问题呢?
【解决方案2】:

根据您的最新评论,我建议以下解决方案。

要么像其他答案一样使用媒体查询(尽管这仅受 CSS3 支持)或:

我可能会使用 javascript。检测用户的屏幕分辨率,然后根据屏幕分辨率将 src 插入到图像标签中。您可以将分辨率范围映射到 img srcs。

【讨论】:

  • 你有没有你所说的例子?我没有使用 javascript 的经验。
  • 我建议去看看javascript,搜索javascript屏幕分辨率,javascript find element by id和javascript set属性。这将为您提供所需的所有信息。
【解决方案3】:

我的建议是取消愚蠢的img 标签,而使用带有背景图像的divs。但如果你坚持使用img 标签,我想你可以像这样保存你的图片:

./ |-- some_image_1024x500.png |-- some_image_512x250.png |-- 另一个图像_1024x500.png |-- 另一个图像_512x250.png |-- third_image_1024x500.png |-- third_image_512x250.png |-- ...

然后为应该根据窗口大小改变图像分辨率的图像标签添加一个特殊类,例如<img class="width-sensitive" src="images/some_image_1024x500.png" />

然后编写一个 JavaScript 函数来检查窗口大小并执行图像源替换,例如(使用 jQuery 的伪代码):

// This function is terribly unDRY and ugly but it's just an example
function process_image_sizes() {
    var images = $('img.width-sensitive');

    if($(window).width() > 800) {
        images.each(function(index, element) {
            var src = $(element).prop('src');
            if(/512x250\.png$/.test(src)) {
                $(element).prop('src', src.replace('512x250', '1024x500'));
            }
        }
    }
    else {
        images.each(function(index, element) {
            var src = $(element).prop('src');
            if(/1024x500\.png$/.test(src)) {
                $(element).prop('src', src.replace('1024x512', '512x250'));
            }
        }
    }
}

然后在页面加载时运行该函数一次:

$(function() { process_image_sizes(); });

每当窗口调整大小时:

$(window).on('resize', process_image_sizes);

希望对你有所帮助。


编辑:作为事后的想法,您可能希望默认从小图像开始,然后在调整大小时切换到较大的图像。我仍然建议只使用 CSS。

【讨论】:

  • @JonTaylor:我认为在网站设计中使用img 标签很愚蠢。这些东西应该在样式表中! :-)
  • 呃什么?你是说你不应该使用img 标签吗?如果是这样,img 标签的意义何在?我不认为图像本身应该是样式表的责任,我认为屏幕上显示的图像的外观、大小等是样式表的责任。
  • @JonTaylor:我认为img 标签应该用于站点content 中的图像,而不是站点design。我认为当应该滑入设计背景的图像是可选择和可拖动等时,它看起来不专业。
  • 我同意您的评论,但我不同意滑块本身如果必须是网站设计,我会将其视为内容和设计之间的交叉点。它是我个人会使用 divs 的东西,但使用 imgs 并没有什么问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多