【问题标题】:<picture> <source> relative to width of <picture><picture> <source> 相对于 <picture> 的宽度
【发布时间】:2016-12-11 20:42:41
【问题描述】:

我正在尝试在网站上放置响应式图片。我有以下代码

<picture>
<source media="(max-width: 400px)" srcset="cache/images/image.w400.jpg"></source>
<source media="(max-width: 800px)" srcset="cache/images/image.w800.jpg"></source>
<source media="(max-width: 1000px)" srcset="cache/images/image.w1000.jpg"></source>
<source media="(max-width: 1200px)" srcset="cache/images/image.w1200.jpg"></source>
<source media="(max-width: 1920px)" srcset="cache/images/image.w1920.jpg"></source>
<img src="/imgresizer/images/image.jpg">
</picture>

图片元素的大小将由包含的div决定。

包含的 div 的大小将是随机的。可以直接在.container中,也可以在.col-sm-6中

这里的问题是相对于视口的最大宽度。 我希望根据图片元素的宽度选择源。这可能吗?如果有,怎么做?

PS。我更喜欢没有 javascript 的解决方案。

编辑:我缺少的是一种根据他自己的宽度选择 a 的方法。我猜这不在 HTML5 标准中?

【问题讨论】:

  • 你需要 javascript,因为我假设你也是为了表演而这样做的,CSS 解决方案会加载所有图像,然后只显示与你的屏幕相对应的那个。
  • 图片元素的宽度是多少?视口和图片之间是否存在大致比例,或者这完全是动态的?
  • 比例将是完全动态的。

标签: html css image twitter-bootstrap responsive


【解决方案1】:
<img class="image-responsive" data-srcset="cache/images/image.w400.jpg 400w, cache/images/image.w800.jpg 800w, cache/images/image.w1000.jpg 1000w, cache/images/image.w1200.jpg 1200w, cache/images/image.w1920.jpg 1920w" data-src="images/image.jpg" sizes="720px" src="images/image.jpg">

window.onload = function() {
        var images = document.getElementsByClassName('image-responsive');
        for(var i = 0; i < images.length; i++) {
            var width = images[i].parentElement.offsetWidth;
            images[i].setAttribute('sizes', width+'px');
            images[i].setAttribute('src', images[i].getAttribute('data-src'));
            images[i].setAttribute('srcset', images[i].getAttribute('data-srcset'));
        }
    };

现在我用 srcset 和一点 javascript 制作了一张图片。

这会将大小属性替换为其父级的宽度。默认尺寸 = 400px。

这使用 javascript :(。

【讨论】:

    【解决方案2】:

    您可以将最大宽度查询更改为使用百分比吗?这样,当您的图片元素调整大小时,它将根据图片的相同百分比宽度选择不同的来源。

    【讨论】:

    • 我不太明白你的意思。你能详细说明一下吗?
    • 你说你希望你的图像相对于图片元素而不是视口,但你没有说你是如何设置图片元素的大小的。它是相对于视口还是相对于包含元素?
    • 图片元素的大小由包含的div决定
    • 好的,什么决定了包含 div 的大小?能多发一点代码吗?
    • 包含的 div 的大小将是随机的。可以直接在.container中,也可以在.col-sm-6中
    猜你喜欢
    • 1970-01-01
    • 2019-03-12
    • 2021-07-31
    • 2019-05-05
    • 2015-06-28
    • 2021-05-03
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多