2017-10-10 77 views
0

我在网站上有一个部分,它由八个图像排列成两排四个。每个图像外壳 - grid-item - 将包含具有不同原始尺寸的不同图像。不管怎样,我需要在屏幕尺寸缩小时避免对图像进行任何缩放。我试过很多方法来避免这种情况,但仍然找不到解决方案。我很确定这些尺寸是关键 - 我如何改变这一点?CSS - 图像缩放/避免拉伸和压扁

最后的解决方案,我试过是遵循这一fiddle从之前常见&一个在这里,但这只适用于如果我改变高度统治(其中,最终则扭曲图像排列)。

我也看了砖石但同样,高度规则不起作用。

下面的代码,因为我有它的时刻(对于这个问题的利益,我用于每个grid-item同一个图像文件) -

.grid-container { 
 
    display: grid; 
 
    grid-template-columns: repeat(4, 1fr); 
 
    grid-auto-rows: 100px; 
 
    grid-gap: 10px; 
 
    width: auto; 
 
    height: auto; 
 
    margin: 3em; 
 
} 
 

 
#block1 { 
 
    grid-row: span 4; 
 
    
 
} 
 

 

 

 
.grid-item { 
 
    display: flex; 
 
    flex-direction: column; 
 
    align-items: center; 
 
    justify-content: center; 
 
    width: auto; 
 
    height: auto; 
 
    
 
} 
 

 
.grid-item img { 
 
    width: 100%; 
 
    height: 100%; 
 

 
} 
 

 

 
/* RWD */ 
 

 
@media only screen and (min-width: 320px) { 
 

 

 
     .grid-container { 
 
     -moz-column-count: 1; 
 
     -webkit-column-count: 1; 
 
     grid-template-columns: repeat(1, 1fr); 
 
    } 
 

 
     #block1 { 
 
      grid-row: span 2; 
 
    
 
      } 
 

 
    
 
} 
 

 

 

 

 
    
 

 
@media only screen and (min-width: 560px) and (max-width: 960px) { 
 
    
 
      .grid-container { 
 
     -moz-column-count: 2; 
 
     -webkit-column-count: 2; 
 
     grid-template-columns: repeat(2, 1fr); 
 
    } 
 

 
     #block1 { 
 
      grid-row: span 2; 
 
    
 
      } 
 

 
} 
 

 

 

 

 
@media only screen and (min-width: 960px) and (max-width: 1300px) { 
 

 
    .grid-container { 
 
     -moz-column-count: 3; 
 
     -webkit-column-count: 3; 
 
     grid-template-columns: repeat(3, 1fr); 
 
    } 
 

 
     #block1 { 
 
      grid-row: span 3; 
 
    
 
      } 
 
    
 

 
} 
 

 

 
@media only screen and (min-width: 1300px) { 
 
    .grid-container { 
 
     -moz-column-count: 4; 
 
     -webkit-column-count: 4; 
 
     grid-template-columns: repeat(4, 1fr); 
 
    } 
 

 
      #block1 { 
 
       grid-row: span 4; 
 
    
 
     } 
 
    
 
}
<div class="grid-container"> 
 
     <div class="grid-item" id="block1"> 
 
       <img src="http://res.cloudinary.com/mrmw1974/image/upload/v1507199659/graphic_design_rbakaf.jpg">  
 
     </div> 
 
     <div class="grid-item" id="block1"> 
 
       <img src="http://res.cloudinary.com/mrmw1974/image/upload/v1507199659/graphic_design_rbakaf.jpg">  
 
     </div> 
 
    <div class="grid-item" id="block1"> 
 
       <img src="http://res.cloudinary.com/mrmw1974/image/upload/v1507199659/graphic_design_rbakaf.jpg">  
 
     </div> 
 
    <div class="grid-item" id="block1"> 
 
       <img src="http://res.cloudinary.com/mrmw1974/image/upload/v1507199659/graphic_design_rbakaf.jpg">  
 
     </div> 
 
    <div class="grid-item" id="block1"> 
 
       <img src="http://res.cloudinary.com/mrmw1974/image/upload/v1507199659/graphic_design_rbakaf.jpg">  
 
     </div> 
 
    <div class="grid-item" id="block1"> 
 
       <img src="http://res.cloudinary.com/mrmw1974/image/upload/v1507199659/graphic_design_rbakaf.jpg">  
 
     </div> 
 
    <div class="grid-item" id="block1"> 
 
       <img src="http://res.cloudinary.com/mrmw1974/image/upload/v1507199659/graphic_design_rbakaf.jpg">  
 
     </div> 
 
    <div class="grid-item" id="block1"> 
 
       <img src="http://res.cloudinary.com/mrmw1974/image/upload/v1507199659/graphic_design_rbakaf.jpg">  
 
     </div> 
 
</div>

编辑UPDATE -

如果我与height: auto使用不同的图像,那么这就是发生了什么(看起来很像石工)

Image scaling with height set at auto

回答

0

flexbox解决您的问题

看看这个小提琴:https://jsfiddle.net/wgL6z2be/

希望它能帮助!

+0

感谢您的支持。 *在造型中代表什么,是身体? –

+0

它实际上是一个通用选择器。看看这篇文章:https://css-tricks.com/box-sizing/ 请确保你标记答案也是正确的。 :) –

+0

不幸的是,它不起作用。它仍然扭曲了图像的高度 - 我需要它们都在我的示例中设置的高度。如果你使用不同的图像,那么他们的高度都是不同的。我刚刚添加了一张图片来说明我的意思。 –