具有最大高度和最大宽度以及适合对象的 flex 父级图像包含
Image inside flex parent with max-height and max-width and object-fit contain
如果我不使用 object-fit contains,图像会拉伸。宽度拉伸,失去纵横比。
object-fit 包含修复该问题。
问题是,不包含元素本身,只包含可见图像。这意味着如果我使图像可点击,则整个元素区域(甚至在图像之外)都是可点击的。
https://jsfiddle.net/nyysyngp/10/(或查看下面的代码)
我只希望可见图像可以点击。这似乎适用于 Firefox,但不适用于 Chrome。
body, html
{
margin: 0;
padding: 0;
background-color: red;
display: flex;
height: 100%;
width: 100%;
}
#media
{
display: flex;
background-color: #262423;
justify-content: center;
align-items: center;
flex-direction: column;
flex-grow: 1;
}
#media_split
{
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
align-items: center;
}
#media_image_container
{
height: 50%;
width: 100%;
flex-grow: 1;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
background-color: green;
}
#media_image
{
object-fit: contain;
max-height: calc(100% - 4em);
max-width: calc(100% - 4.7em);
min-height: 100px;
min-width: 100px;
cursor: pointer;
}
#media_tv
{
height: 50%;
width: 100%;
flex-grow: 1;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
background-color:blue;
}
<div id='media'>
<div id='media_split'>
<div id='media_image_container'>
<img id='media_image' src='https://i.imgur.com/F26h0tq.jpg'>
</div>
<div id='media_tv'></div>
</div>
</div>
在#media_image_container中删除显示:flex;并添加 text-align: center;
它将解决问题。
好吧,几个月后我找到了解决方案。只需将 "position: absolute" 添加到 #media_image 问题就消失了,在我的情况下并没有破坏其他任何东西。
如果我不使用 object-fit contains,图像会拉伸。宽度拉伸,失去纵横比。
object-fit 包含修复该问题。
问题是,不包含元素本身,只包含可见图像。这意味着如果我使图像可点击,则整个元素区域(甚至在图像之外)都是可点击的。
https://jsfiddle.net/nyysyngp/10/(或查看下面的代码)
我只希望可见图像可以点击。这似乎适用于 Firefox,但不适用于 Chrome。
body, html
{
margin: 0;
padding: 0;
background-color: red;
display: flex;
height: 100%;
width: 100%;
}
#media
{
display: flex;
background-color: #262423;
justify-content: center;
align-items: center;
flex-direction: column;
flex-grow: 1;
}
#media_split
{
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
align-items: center;
}
#media_image_container
{
height: 50%;
width: 100%;
flex-grow: 1;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
background-color: green;
}
#media_image
{
object-fit: contain;
max-height: calc(100% - 4em);
max-width: calc(100% - 4.7em);
min-height: 100px;
min-width: 100px;
cursor: pointer;
}
#media_tv
{
height: 50%;
width: 100%;
flex-grow: 1;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
background-color:blue;
}
<div id='media'>
<div id='media_split'>
<div id='media_image_container'>
<img id='media_image' src='https://i.imgur.com/F26h0tq.jpg'>
</div>
<div id='media_tv'></div>
</div>
</div>
在#media_image_container中删除显示:flex;并添加 text-align: center;
它将解决问题。
好吧,几个月后我找到了解决方案。只需将 "position: absolute" 添加到 #media_image 问题就消失了,在我的情况下并没有破坏其他任何东西。