html - 具有可调整大小图像的 flexbox 列

标签 html css flexbox

我正在尝试在中间的 flex 元素中构建一个带有可调整大小的图像(带有链接)的 flex 盒布局。图像 flex 元素应该可以根据浏览器窗口进行缩放,其他元素与其内容一样大,但高度固定。

我希望图像在两个方向上都居中,并且最大高度和最大宽度大约为 95%,以便在浏览器窗口变小时缩小。

html:

<div id="flexbox">
    <div id="flex-1">1</div>
    <div id="flex-2">2</div>
    <div id="flex-3">
        <div id="zoom">
            <a href="http://xy.de">
                <img src="http://250kb.de/u/140905/j/lCdCSjetSUXb.jpg" alt="x" />
            </a>
        </div>
    </div>
    <div id="flex-4">4</div>
</div>

CSS:

html,body{
    height:100%;
    margin:0;
    padding:0;
}
#flexbox { 
    display: flex;
    display: -webkit-flex;
    display: -moz-flex;
    flex-direction: column;
    height:100%;
    width:100%;
    background:red;
}
#flex-1{
    border:1px solid lightblue;
}
#flex-2{
    border:1px solid lime;
}
#flex-3 {
    border:1px solid yellow;
    flex:1;
    justify-content:center;
}
#flex-4 {
    border:1px solid pink;
}
#zoom{
    background:white;
    width:100%;
    height:100%;
    text-align:center;
}
#zoom a{
    height:90%; 
}
#zoom img{
    max-width:90%;
    max-height:90%;
}

这是一个 jsfiddle: http://jsfiddle.net/haheute/67py8zez/4/

如何在 Firefox 和 Chromium 中获得正确的最大高度和最大宽度,以及如何使链接与图像在两个方向上居中?

最佳答案

这是一个解决方案:http://jsfiddle.net/mfwr0fcm/ .

HTML:

<div id="flexbox">
    <div id="flex-1">1</div>
    <div id="flex-2">2</div>
    <div id="flex-3">
        <a href = "#"><img src="http://250kb.de/u/140905/j/lCdCSjetSUXb.jpg" alt="x" /></a>
    </div>
    <div id="flex-4">4</div>
</div>

CSS:

* {
    margin: 0;
    padding: 0;
}

html, body, #flexbox {
    height:100%;
}

#flexbox { 
    display: -webkit-flex;
    display: -moz-flex;  
    display: flex;
    flex-direction: column;
    background:red;
}

#flexbox > * {
    flex: 0 0 auto;
    border: 1px solid #000;
}

#flex-3 {
    flex: 1 1 auto;
    position: relative;
}

#flex-3 img {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translateX(-50%) translateY(-50%);
    max-width: 95%;
    max-height: 95%;
}

关于html - 具有可调整大小图像的 flexbox 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25688798/

相关文章:

html - 使用 Ajax 下载(二进制)图像

javascript - 如何用div标签替换具有特定类名的HTML span开始和结束标签

html - 当浏览器从右向左元素移动时浏览器右侧的元素保持不变

html - 媒体查询中无法识别 flex 元素的宽度属性

css - Flex 布局 100% 高度太多了

html - Flex wrap-reverse 具有正常的内容顺序?

javascript - 如何在包含字符串的 <td> 中找到 'Key Word'

jquery - 删除并重置表格其余部分的 html 表格行 ID

jquery - 使用 Jquery 匹配 Rel 属性

jquery - 如何在相关的复选框操作中解决一个确切的元素(来自具有相同类的多个元素)?