首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实现HTML <picture>标记以支持WEBP,如何正确处理最大宽度

问实现HTML <picture>标记以支持WEBP,如何正确处理最大宽度
EN

Stack Overflow用户
提问于 2021-04-11 02:54:54
回答 1查看 501关注 0票数 0

我对切换到HTML标记很感兴趣,这样可以同时支持WEBP和JPEG,然而,我遇到了有关最大宽度属性的令人困惑的行为。

test.jpg和test.webp都是640x480

原始代码(没有标记,没有WEBP):

代码语言:javascript
复制
<img src="test.jpg" style="max-width:80%">

结果:一切正常工作,如果浏览器宽度缩小,图像呈现为640x480或缩小。

坏代码#1:

代码语言:javascript
复制
<picture>
    <source srcset="test.webp" type="image/webp">
    <source srcset="test.jpg" type="image/jpeg">
    <img src="test.jpg" style="max-width:80%">
</picture>

结果:即使浏览器宽度不受限制,图像也会缩小到512x384 (640x480的80%)。

坏代码#2:

代码语言:javascript
复制
<picture style="max-width:80%">
    <source srcset="test.webp" type="image/webp">
    <source srcset="test.jpg" type="image/jpeg">
    <img src="test.jpg" style="">
</picture>

结果:图像以正确的大小呈现,但如果浏览器窗口缩小,则不会缩小。

坏代码#3:

代码语言:javascript
复制
<picture style="max-width:80%">
    <source srcset="test.webp" type="image/webp">
    <source srcset="test.jpg" type="image/jpeg">
    <img src="test.jpg" style="max-width:80%">
</picture>

结果:与#1相同(图像呈现为512x384,而不是640x480)

体面代码:

代码语言:javascript
复制
<picture style="max-width:80%">
    <source srcset="test.webp" type="image/webp">
    <source srcset="test.jpg" type="image/jpeg">
    <img src="test.jpg" style="max-width:100%">
</picture>

结果:在现代浏览器中,这似乎是正确的,但我担心,在不支持标记的旧浏览器中,图像将缩小到100%,而不是80%

我也尝试过在图片标签和/或img标签中添加"width=640px“,但这似乎没有多大区别。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-10 15:38:14

下面是我找到的最好的解决方案:

  1. 将标签上的最大宽度设置为90% (或您希望它是什么)

。

  1. 将标签上的宽度设置为图像的实际大小,除非您希望它总是缩放

  1. 将图片标签的最大宽度设置为100%

  1. 将图片标签的宽度设置为等于或大于img标签的宽度除以最大宽度的数字。例如,img标签的宽度= 640 max-宽度= 90%,640/0.9 =711.111.我将图片标签的宽度设置为720只是为了使用一个更偶数,只要它更大的

就不重要了。

代码语言:javascript
复制
<picture style="max-width:100%;width:720px">
    <source srcset="test.webp" type="image/webp">
    <source srcset="test.jpg" type="image/jpeg">
    <img src="test.jpg" style="max-width:90%;width:640px">
</picture>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67041044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档