我注意到浏览器在显示时显示的内容有很大不同:内联图像被破坏。当图像被破坏时,是否应该有任何标准行为,至少在是否仍然遵守宽度和高度(HTML属性或CSS)方面,以及该元素是否仍被视为替换元素?
https://html.spec.whatwg.org/multipage/images.html#img-error似乎没有定义这个。某处有补充吗?自从最早的图形浏览器以来,我习惯于不同的浏览器拥有不同的破碎图像图标,但我认为现在至少可以在某处指定与布局相关的东西。这不是这种情况吗?
当src为404时,有一个alt属性,并且显示为默认值(内联):
我在下面的破碎图片中注意到的其他事情:
(没有alt属性的图像实际上不是有效的HTML,但是为了比较行为而显示。)
在Chrome 64,Firefox 58,Safari 11,EdgeHTML 16.16299中测试过
img{
border:1px solid black;
margin:1em;
padding:1em;
}
.force-ib-images img{
display:inline-block;
}
<img src="x" width="300" height="120" alt="alttext"> (alt="alttext") <br>
<img src="x" width="300" height="120" alt="" > (alt="")<br>
<img src="x" width="300" height="120" alt > (alt)<br>
<img src="x" width="300" height="120" > (no alt attribute)<br>
<hr>
<h3>
with height/width set via css:
</h3>
<img src="x" style="width:300px; height:120px" alt="alttext"> (alt="alttext") <br>
<img src="x" style="width:300px; height:120px" alt="" > (alt="")<br>
<img src="x" style="width:300px; height:120px" alt > (alt)<br>
<img src="x" style="width:300px; height:120px" > (no alt attribute)<br>
<hr>
<div class="force-ib-images">
<h3>
Forced inline-block:
</h3>
<img src="x" style="width:300px; height:120px" alt="alttext"> (alt="alttext") <br>
<img src="x" style="width:300px; height:120px" alt="" > (alt="")<br>
<img src="x" style="width:300px; height:120px" alt > (alt)<br>
<img src="x" style="width:300px; height:120px" > (no alt attribute)<br>
</div>
<hr>
<h3>
With image:
</h3>
<img src="https://i.imgur.com/FQFzBJh.png" width="300" height="120" alt="an image">
的jsfiddle:https://jsfiddle.net/upkt6p7p/
来自HTML 5.3 10.4.2 Images:(WHATWG)
如果元素是表示某些文本的img元素,并且用户代理不希望这更改
期望用户代理将元素视为未替换的短语元素,其内容是文本,可选地具有指示图像缺失的图标,以便用户可以请求显示图像或调查其未呈现的原因。在非图形上下文中,应省略这样的图标。
因此,当图像被破坏时,它应该是一个未被替换的元素。
但请注意,浏览器不必符合第10节的要求。“预期”意味着浏览器只有在声明的情况下才需要遵守。
用户代理不需要以任何特定方式呈现HTML文档。但是,本节提供了一组用于呈现HTML文档的建议,如果遵循这些建议,可能会导致用户体验非常类似于文档作者的预期体验。 [...]为了符合指定支持建议的默认呈现的用户代理,本节中的“预期”一词与“必须”具有相同的一致性含义。 (10 Rendering)(WHATWG)