HTMLImageElement
property
sizes
allows you to specify the layout width of the image for each of a list of media conditions. This provides the ability to automatically select among different images—even images of different orientations or aspect ratios—as the document state changes to match different media conditions.
Each condition is specified using the same conditional format used by
media queries
.
let sizes = htmlImageElement.sizes; htmlImageElement.sizes = sizes;
A
USVString
containing a comma-separated list of source size descriptors followed by an optional fallback size. Each
source size descriptor
is comprised of a media condition, then at least one whitespace character, then the
source size value
to use for the image when the media condition evaluates to
true
.
Each source size descriptor consists of a media condition as defined by the media queries standard. Because a source size descriptor is used to specify the width to use for the image during layout of the page, the media condition is typically (but not necessarily) based entirely on width information. See 句法 in Using media queries for details on how to construct a media condition.
The source size value is a
CSS length
. It may be specified using font-relative units (such as
em
or
ex
), absolute units (such as
px
or
cm
), or the
vw
unit, which lets you specify the width as a percentage of the viewport width (
1vw
being 1% of the viewport width).
注意:
The source size value must
not
be specified as a percentage of the container size; that is, lengths such as
50%
or
100%
are not allowed, as there would be uncertainty as to what the specified value is a percentage of.
In this example, a blog-like layout is created, displaying some text and an image which for which three size points are specified, depending on the width of the window. Three versions of the image are also available, with their widths specified. The browser takes all of this information and selects an image and width that best meets the specified values.
How exactly the images are used may depend upon the browser and what the pixel density of the user's display is.
Buttons at the bottom of the example let you actually modify the
sizes
property slightly, switching the largest of the three widths for the image between 40em and 50em.
<article>
<h1>An amazing headline</h1>
<div class="test"></div>
<p>This is even more amazing content text. It's really spectacular.
And fascinating. Oh, it's also clever and witty. Award-winning
stuff, I'm sure.</p>
<img src="/files/16870/new-york-skyline-wide.jpg"
srcset="/files/16870/new-york-skyline-wide.jpg 3724w,
/files/16869/new-york-skyline-4by3.jpg 1961w,
/files/16871/new-york-skyline-tall.jpg 1060w"
sizes="((min-width: 50em) and (max-width: 60em)) 50em,
((min-width: 30em) and (max-width: 50em)) 30em,
(max-width: 30em) 20em">
<p>Then there's even more amazing stuff to say down here. Can you
believe it? I sure can't.</p>
<button id="break40">Last Width: 40em</button>
<button id="break50">Last Width: 50em</button>
</article>
article {
margin: 1em;
max-width: 60em;
min-width: 20em;
height: 100vh;
border: 4em solid #880E4F;
border-radius: 7em;
padding: 1.5em;
font: 16px "Open Sans", Verdana, Arial, Helvetica, sans-serif;
}
article img {
display: block;
max-width: 100%;
border: 1px solid #888;
box-shadow: 0 0.5em 0.3em #888;
margin-bottom: 1.25em;
}
The JavaScript code handles the two buttons that let you toggle the third width option between 40em and 50em; this is done by handling the
click
event, using the JavaScript string object method
replace()
to replace the relevant portion of the
sizes
字符串。
let image = document.querySelector("article img");
let break40 = document.getElementById("break40");
let break50 = document.getElementById("break50");
break40.addEventListener("click",
event => image.sizes = image.sizes.replace(/50em,/, "40em,"));
break50.addEventListener("click",
event => image.sizes = image.sizes.replace(/40em,/, "50em,"));
This result may be viewed in its own window here .
| 规范 | 状态 | 注释 |
|---|---|---|
|
HTML 实时标准
The definition of 'HTMLImageElement.sizes' in that specification. |
实时标准 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
sizes
|
Chrome 45 | Edge 13 |
Firefox
38
|
IE No | Opera Yes | Safari No | WebView Android 45 | Chrome Android 45 |
Firefox Android
38
|
Opera Android No | Safari iOS No | Samsung Internet Android 5.0 |
完整支持
不支持
实验。期望将来行为有所改变。
用户必须明确启用此特征。
HTMLImageElement
BeforeUnloadEvent
DOMStringMap
ErrorEvent
GlobalEventHandlers
HTMLAnchorElement
HTMLAreaElement
HTMLAudioElement
HTMLBRElement
HTMLBaseElement
HTMLBaseFontElement
HTMLBodyElement
HTMLButtonElement
HTMLCanvasElement
HTMLContentElement
HTMLDListElement
HTMLDataElement
HTMLDataListElement
HTMLDialogElement
HTMLDivElement
HTMLDocument
HTMLElement
HTMLEmbedElement
HTMLFieldSetElement
HTMLFormControlsCollection
HTMLFormElement
HTMLFrameSetElement
HTMLHRElement
HTMLHeadElement
HTMLHeadingElement
HTMLHtmlElement
HTMLIFrameElement
HTMLInputElement
HTMLIsIndexElement
HTMLKeygenElement
HTMLLIElement
HTMLLabelElement
HTMLLegendElement
HTMLLinkElement
HTMLMapElement
HTMLMediaElement
HTMLMetaElement
HTMLMeterElement
HTMLModElement
HTMLOListElement
HTMLObjectElement
HTMLOptGroupElement
HTMLOptionElement
HTMLOptionsCollection
HTMLOutputElement
HTMLParagraphElement
HTMLParamElement
HTMLPictureElement
HTMLPreElement
HTMLProgressElement
HTMLQuoteElement
HTMLScriptElement
HTMLSelectElement
HTMLShadowElement
HTMLSourceElement
HTMLSpanElement
HTMLStyleElement
HTMLTableCaptionElement
HTMLTableCellElement
HTMLTableColElement
HTMLTableDataCellElement
HTMLTableElement
HTMLTableHeaderCellElement
HTMLTableRowElement
HTMLTableSectionElement
HTMLTemplateElement
HTMLTextAreaElement
HTMLTimeElement
HTMLTitleElement
HTMLTrackElement
HTMLUListElement
HTMLUnknownElement
HTMLVideoElement
HashChangeEvent
历史
ImageData
定位
MessageChannel
MessageEvent
MessagePort
Navigator
NavigatorGeolocation
NavigatorID
NavigatorLanguage
NavigatorOnLine
NavigatorPlugins
PageTransitionEvent
Plugin
PluginArray
PopStateEvent
PortCollection
PromiseRejectionEvent
RadioNodeList
Transferable
ValidityState
Window
WindowBase64
WindowEventHandlers
WindowTimers