gpt4 book ai didi

image - 将弹出图像保持在窗口内并保持纵横比

转载 作者:行者123 更新时间:2023-11-28 08:36:41 25 4
gpt4 key购买 nike

主要编辑: 好吧,我只是意识到有一百种不同的情况,您可以按照我的意愿行事,但使用不同的规则,所以我将不得不描述我的具体情况。基本上我正在使用 this image popup ( code here )

如果在弹出窗口打开时缩小窗口的大小,您会注意到弹出窗口不会缩小以适合窗口,这会带来糟糕的用户体验,尤其是在智能手机的横向模式下

我希望我的弹出窗口根据屏幕的两个维度缩小,而不改变图像的纵横比。 (保持平方)

到目前为止,我已经做了这些改变:

.focus {
z-index: 10;
max-width: 500px;
max-height: 500px;
display: none;
}

.focus.enabled .container {
max-width: 500px;
max-height: 500px;
}

如果你尝试 there使用 Firebug ,它使图像在缩小宽度时响应,但在缩小窗口高度时不响应...如何使两个尺寸都响应,同时保持图像的良好纵横比?

------------ 上一个问题(仅供历史引用):----------------

我想在浏览器窗口中严格保留最大尺寸为 500x500 的元素(在这种情况下为图片),同时保持其纵横比。这是一些 html:

<html>
<head>
</head>
<body>
<img src="myimage.png" class="image" />
</body>
</html>

还有一些CSS:

.image { 
max-height: 500px;
max-width: 500px;
height: 100%;
width: 100%;
}

现在使用此 css,图像保留在窗口内,但当窗口的其中一个尺寸小于 500px 时图像会变形。要固定比率,我可以去掉两个 100% 规则之一:

.image { 
max-height: 500px;
max-width: 500px;
height: 100%;
/*width: 100%;*/
}

但是,比例确实保持不变,但是当窗口宽度小于 500px 时图像会被裁剪!对于这个看似基本的问题,什么是纯粹而简单的 css 解决方案?

最佳答案

这是 vmin 单位 的一个很好的用例:

1/100th of the minimum value between the height and the width of the viewport. (source : MDN)

DEMO

相关 CSS:

img {
width: 70vmin;
height: 70vmin;
max-width: 500px;
max-height: 500px;
}

使用这些单位的缺点是浏览器支持,IE8 不支持它们-(see canIuse 了解更多信息)

对于 IE9 支持,您需要指定 vm 而不是 vmin 示例:

width:70vm; 
width: 70vmin;
height:70vm;
height: 70vmin;

如果您不能使用这些单位,我就没有办法根据高度使用 CSS 来保持 div 的纵横比。您可以使用许多帖子中描述的填充技术根据宽度保持 div 的纵横比 this one .

对于图像,您可以使用我在之前的回答中描述的 CSS 规则,但您无法将图像的大小限制为任意数量的像素。

--------上一个答案--------------------

如果图像的自然大小是 500x500px,则不需要指定 500px 最大宽度/高度。

您可以将该属性用于 100% 最大宽度/高度,并为宽度/高度赋予 auto 属性以保持图像的纵横比并且永远不会超过 100% 或 500px 宽度/高度:

DEMO

HTML :

<img src="http://lorempixel.com/output/nature-q-c-500-500-5.jpg" alt="" />

CSS:

img {
max-width:100%;
max-height:100%;
width:auto;
height:auto;
}

关于image - 将弹出图像保持在窗口内并保持纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24992545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com