2017-08-16 70 views
0

我有一个带有4列的flexbox,第一个有一个图像。Flexbox具有最大宽度和最大高度的内容,并且仍然是响应式的

JSFiddle

我想它使图像响应(工作),但我想这一次的屏幕越来越大,它不再收缩/扩张,有一个最大宽度以像素为单位,而不是百分比。

我以前max-width: 100%;使其反应迅速,但一旦屏幕获得的足够大的地方它不收缩或扩张,我想它有一个max-width: 250px;,所以它不会继续增长。

如果我摆脱了100%并将其更改为250px,它在屏幕变小时不再响应。

我不想做媒体查询,因为我希望它为图像工作。

有没有办法做到这一点?

HTML

<div class="container"> 
    <div class="row"> 
    <div class="col"> 
     <img src="https://s-media-cache-ak0.pinimg.com/236x/9d/db/c7/9ddbc7c118bcd047a06b44bae34bb413--exotic-flowers-tropical-flowers.jpg" /> 
    </div> 
    <div class="col"> 
     This is a group of flex columns 
    </div> 
    <div class="col"> 
     Isn't that interesting? 
    </div> 
    </div> 
</div> 

CSS

.container { 
    display: block; 
    background-color: #fff; 
    padding-left: 30px; 
    padding-right: 30px; 
} 

.row { 
    display: -webkit-box; 
    display: -ms-flexbox; 
    display: flex; 
    -webkit-box-pack: center; 
     -ms-flex-pack: center; 
      justify-content: center; 
    -webkit-box-orient: horizontal; 
    -webkit-box-direction: normal; 
     -ms-flex-flow: row nowrap; 
      flex-flow: row nowrap; 
    margin-left: -30px; 
    margin-right: -30px; 
    padding: 15px 0 60px; 
} 

.col { 
    border: 1px solid black; 
    padding-left:30px; 
    padding-right:30px; 
    min-width: 0; 
} 

.col img { 
    width: auto; 
    max-width:100%; 
    // max-width: 250px; // This breaks it, but is what I need 
    max-height: 250px; 
} 

回答

2

一种解决方案是将max-width: 250px设置你的第一个.col

Fiddle demo

栈片断

.container { 
 
    display: block; 
 
    background-color: #fff; 
 
    padding-left: 30px; 
 
    padding-right: 30px; 
 
} 
 

 
.row { 
 
    display: -webkit-box; 
 
    display: -ms-flexbox; 
 
    display: flex; 
 
    -webkit-box-pack: center; 
 
     -ms-flex-pack: center; 
 
      justify-content: center; 
 
    -webkit-box-orient: horizontal; 
 
    -webkit-box-direction: normal; 
 
     -ms-flex-flow: row nowrap; 
 
      flex-flow: row nowrap; 
 
    margin-left: -30px; 
 
    margin-right: -30px; 
 
    padding: 15px 0 60px; 
 
} 
 

 
.col { 
 
    border: 1px solid black; 
 
    padding-left:30px; 
 
    padding-right:30px; 
 
    min-width: 0; 
 
} 
 

 
.col img { 
 
    max-width: 100%; 
 
    max-height: 250px; 
 
} 
 

 
.col:first-child { 
 
    max-width: 250px; 
 
}
<div class="container"> 
 
    <div class="row"> 
 
    <div class="col"> 
 
     <img src="https://s-media-cache-ak0.pinimg.com/236x/9d/db/c7/9ddbc7c118bcd047a06b44bae34bb413--exotic-flowers-tropical-flowers.jpg" /> 
 
    </div> 
 
    <div class="col"> 
 
     This is a group of flex columns 
 
    </div> 
 
    <div class="col"> 
 
     Isn't that interesting? 
 
    </div> 
 
    </div> 
 
</div>


另一种选择是包裹在spanimg并给予spanmax-width: 250px

Fiddle demo

堆栈片断

.container { 
 
    display: block; 
 
    background-color: #fff; 
 
    padding-left: 30px; 
 
    padding-right: 30px; 
 
} 
 
.row { 
 
    display: -webkit-box; 
 
    display: -ms-flexbox; 
 
    display: flex; 
 
    -webkit-box-pack: center; 
 
     -ms-flex-pack: center; 
 
      justify-content: center; 
 
    -webkit-box-orient: horizontal; 
 
    -webkit-box-direction: normal; 
 
     -ms-flex-flow: row nowrap; 
 
      flex-flow: row nowrap; 
 
    margin-left: -30px; 
 
    margin-right: -30px; 
 
    padding: 15px 0 60px; 
 
} 
 
.col { 
 
    border: 1px solid black; 
 
    padding-left:30px; 
 
    padding-right:30px; 
 
    min-width: 0; 
 
} 
 
.col img { 
 
    max-width: 100%; 
 
    max-height: 250px; 
 
} 
 
.col span { 
 
    max-width: 250px; 
 
}
<div class="container"> 
 
    <div class="row"> 
 
    <div class="col"> 
 
     <span> 
 
     <img src="https://s-media-cache-ak0.pinimg.com/236x/9d/db/c7/9ddbc7c118bcd047a06b44bae34bb413--exotic-flowers-tropical-flowers.jpg" /> 
 
     </span> 
 
    </div> 
 
    <div class="col"> 
 
     This is a group of flex columns 
 
    </div> 
 
    <div class="col"> 
 
     Isn't that interesting? 
 
    </div> 
 
    </div> 
 
</div>

相关问题