刚刚了解了srcset属性。我试图运行它没有任何成功。我希望在谷歌浏览器上为iPhone或IPad运行时至少看到1个图像加载,但没有显示任何内容。
<img srcset="img1.png 1x low-bandwidth, img2.png 2x high-bandwidth">
答案 0 :(得分:5)
第一个srcset
实施刚刚登陆WebKit,请参阅announcement post。
答案 1 :(得分:4)
According to the w3c,srcset属性仍处于草稿状态。这意味着尚未建议使用它,因为规范仍然可以更改,并且预计Web浏览器不会实现它。
The scrset attribute。但low-bandwidth
和high-bandwidth
不是规范的一部分。可能因为很难找到“低”和“高”带宽的客观定义,这在十年内仍然是合理的。所以你不能指望它们会产生任何影响。
答案 2 :(得分:3)
它是v34的v34测试版,现在v33是稳定版。
因此,如果没有任何改变,它很快就会处于镀铬状态。
我在v34上运行了这个测试,它按预期运行 - 甚至还有显示高分辨率图像的奖励,缩放级别为200,这是我没有预料到的(但现在我很清楚)。您当然可以检查元素并实时进行更改,如果您没有高分辨率屏幕,则可以放大浏览器。
<img src="unsupported.jpg"
srcset="cat@1x.jpg 1x,cat@2x.jpg 2x" width="100" height="100">
unsupported.jpg
cat@1x.jpg
用于正常屏幕,cat@2x.jpg
用于高分辨率cat@1x.jpg
作为标准src
属性,这仅用于演示。请记住,这还不能在iPad / iPhone上运行: - (
答案 3 :(得分:2)
srcset
属性尚未在任何浏览器中实现。
此外 - 您示例中的low-bandwidth
/ high-bandwidth
部分不属于与srcset
相关的任何规范或提案。
答案 4 :(得分:1)
Firefox不会在不久的将来支持它。你可以在这里找到它的支持。 Srcset support in different browsers
此属性中没有高带宽和低带宽元素。我们需要url,目标设备的宽度,你可以在这里找到它。
<img src="fallback.jpg" srcset="small.jpg 640w 1x, small-hd.jpg 640w 2x, large.jpg 1x, large-hd.jpg 2x" alt="…">
它可以与HTML5的图片元素一起使用。如果您有兴趣了解它的详细信息,请阅读本文。 http://www.smashingmagazine.com/2013/08/21/webkit-implements-srcset-and-why-its-a-good-thing/
答案 5 :(得分:1)
简而言之,Srcset
是一个新属性,可让您为不同的屏幕尺寸/方向/显示类型指定不同类型的图像。用法非常简单,您只需提供许多不同的图像,用逗号分隔它们:<img src="image.jpg" alt="image" srcset="<img> <descriptor>, ..., <img_n> <descriptor_n>">
。以下是一个示例:srcset="image.jpg 160w, image2.jpg 320w, image3.jpg 2x"
这是一个较长的答案,可以更详细地解释事情。
首先,您错过必需的src
属性srcset
只会增强img标记。
srcset与图片之间的差异。 srcset
和picture
都做了大致相同的事情,但存在细微差别:picture
指示浏览器应使用的图像,而srcset
则为浏览器提供选择。可以使用很多东西来选择此选项,例如视口大小,用户首选项,网络条件等。对srcset
的支持非常好,almost all current browsers或多或少支持它。 picture
元素的情况为little bit worse。
描述符只是一种显示资源背后隐藏着哪种图像的方法。有各种描述符:
srcset="image.jpg, image-2X.jpg 2x"
显示密度值-1x,2x等被称为显示密度描述符。如果未提供显示密度描述符,则假定为1x。目标视网膜显示的好变种。srcset="image-240.jpg 240w, image-640.jpg 640w"
。我确信这是自我解释的。唯一的问题是宽度描述符本身并没有真正帮助。 Why? read here srcset="image-160.jpg 160w, image-320.jpg 320w, image-640.jpg 640w, image-1280.jpg 1280w" sizes="(max-width: 480px) 100vw, (max-width: 900px) 33vw, 254px">
。浏览器的说明如下所示:(max-width: 480px) 100vw
- 如果视口宽度为480像素或更小,则图像将为视口宽度的100%。 (max-width: 900px) 33vw
- 如果视口宽度为480像素或更小,则由于先前的介质条件,将永远不会达到此规则。并且254px是在没有列出媒体条件的情况下,假设长度是在没有满足其他媒体条件时使用的默认值。为了完整起见,我们会在此处添加CSS中的背景图片的image-set()属性以及其他一些有用的链接here
答案 6 :(得分:1)
<img sizes="(min-width: 1200px) 580px,
(min-width: 640px) 48vw,
98vw"
srcset="img/hello-300.jpg 300w,
img/hello-600.jpg 600w,
img/hello-900.jpg 900w,
img/hello-1200.jpg 1200w"
src="img/hello-900.jpg" alt="hello">
sizes
就像媒体查询一样,描述了视口拍摄视频的空间大小。
srcset
只是告诉浏览器我们提供了哪些图片,以及它们的尺寸。
img/hello-300.jpg
宽300 px,img/hello-600.jpg
宽600像素,img/hello-900.jpg
是900px宽,img/hello-1200.jpg
是1200px宽 src
始终是必填图片来源。如果与srcset
一起使用,src
会在浏览器不支持srcset
的情况下投放后备图片。
<img src="img/hello-300.jpg" alt="hello"
srcset="img/hello-300.jpg 1x,
img/hello-600.jpg 2x,
img/hello-1200.jpg 3x">
srcset
提供可用图片列表,设备像素比率为x
描述符。
img/hello-300.jpg
img/hello-600.jpg
img/hello-1200.jpg
src
始终是必填图片来源。如果与srcset
一起使用,src
会在浏览器不支持srcset
的情况下投放后备图片。
答案 7 :(得分:0)
或者,您可以将<picture>
与srcset
结合使用,如here所述–就我个人而言,我有更好的经验。
<picture>
<source media="(min-width: 1200px)" srcset="img/hello-1200.jpg" />
<source media="(min-width: 900px)" srcset="img/hello-900.jpg" />
<source media="(min-width: 600px)" srcset="img/hello-600.jpg" />
<img src="img/hello-300.jpg" />
</picture>