带有可调整大小图像的flexbox列

时间:2014-09-05 15:00:48

标签: html css css3 flexbox

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

我希望图像在两个方向上居中,并且最大高度和最大宽度大约为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和chrome中获得最大高度和最大宽度,如何在两个方向上将链接与图像对齐?

1 个答案:

答案 0 :(得分:2)

以下是一个解决方案: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%;
}