我想用HTML img标签展示一些大图片。目前,它们会超出屏幕边缘;如何将它们缩放以适应浏览器窗口?
或者,如果不可能的话,是否可以至少说“将该图像显示为其正常宽度和高度的50%”?
使用宽度和高度属性会扭曲图片 - 就我所知,这是因为它们引用容器可能具有的任何属性,这与图像无关。我无法指定像素,因为我必须处理具有不同像素大小的大量图像。最大宽度不起作用。
我想用HTML img标签展示一些大图片。目前,它们会超出屏幕边缘;如何将它们缩放以适应浏览器窗口?
或者,如果不可能的话,是否可以至少说“将该图像显示为其正常宽度和高度的50%”?
使用宽度和高度属性会扭曲图片 - 就我所知,这是因为它们引用容器可能具有的任何属性,这与图像无关。我无法指定像素,因为我必须处理具有不同像素大小的大量图像。最大宽度不起作用。
只需设置width
或height
,它会自动缩放另一个。是的,您可以使用百分比。
第一部分可行,但需要JavaScript,因此可能无法适用于所有用户。
我知道这个问题已经存在很长时间了,但是截至今天一个简单的答案是:
<img src="image.png" style="width: 55vw; min-width: 330px;" />
vw这里的使用说明宽度相对于视口宽度的55%。
现今所有主要浏览器都支持此用法。
查看此链接。
CSS足矣:
img {
width : desired_width;
height: auto; /*to preserve the aspect ratio of the image*/
}
IE6 Internet Explorer 6
百分比仅适用于元素的宽度,但是height:100%;
需要正确的代码才能正常工作。
CSS
html, body { height:100%; }
<img src="image.jpg" style="height:80%;">
您不需要width属性,当浏览器窗口大小改变时,宽度会成比例缩放。
如果图像被放大,这个小技巧可以使图像看起来不会过于模糊(它进行插值处理)。
img { -ms-interpolation-mode: bicubic; }
style="height: 80%; image-rendering: pixelated;"
(或其他插值方法,如有需要请参考此处:https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering)。 - nivniv在 img
标签中添加 max-width: 100%;
对我来说是有效的。
我认为最好的解决方案是通过脚本或本地方式调整图片大小,然后重新上传。 记住,你强迫你的观众下载比他们需要的更大的文件。
object-fit
。这通常是我想要的,并且它避免使用代码来确定哪个是主导尺寸或者使用嵌入<SVG>
元素和<image>
子元素来包装内容与其良好的preserveAspectRatio
选项。<!DOCTYPE html>
<html>
<head>
<style>
:root
{
--box-side : min( 42vmin, 480px ) ;
}
body
{
align-items : center ;
display : flex ;
flex-wrap : wrap ;
justify-content : center ;
}
body,html
{
height : 100% ;
width : 100% ;
}
img
{
background : grey ;
border : 1px solid black ;
height : var( --box-side ) ;
object-fit : contain ;
width : var( --box-side ) ;
}
</style>
<title>object-fit</title>
</head>
<body>
<img src="https://alesmith.com/wp-content/uploads/logos/ALESMITH-MasterLogoShadow01-MULTI-A.png" />
<img src="https://ballastpoint.com/wp-content/themes/ballastpoint/assets/img/bp-logo-color.svg" />
<img src="https://d2lchr2s24ssh5.cloudfront.net/wp-content/uploads/2014/01/GF19_PrimaryLogo_RGB.png" />
<img src="https://s3-us-west-1.amazonaws.com/paradeigm-social/NeFAAJ7RlCreLCi9Uk9u_pizza-port-logo.svg">
<img src="https://s3-us-west-2.amazonaws.com/lostabbey-prod/Logos/Logo_Port_SM_Circle_White.png" />
</body>
</html>
我知道的最好的方法是:
1)将溢出设置为滚动,这样图像就会保留,但您可以滚动查看它。
2)上传较小的图像。现在有很多程序可以在上传时自动缩放(顺便说一下,您需要类似于PHP或.net的东西来完成此操作)。
3)接受它并设置宽度和高度,虽然这会使其看起来失真,但正确的大小仍将导致用户必须下载全尺寸的图像。
祝你好运!