2017-03-31 107 views
1

我有一些水平分布且等间隔的徽标(父容器设置为display: flex,justify-content: space-between)。所以他们可以适应屏幕上的视口减少,我使用transform: scale()缩小它们:这并不好,因为尽管徽标本身缩小了尺寸,但它们通常需要的空间被保留下来,因此它们看起来越来越分开(特别是最左边和最右边的徽标不再接触其父容器的边缘)。如何缩小图像的百分比,而不使用transform:scale()

捕捉:与下面的简化标记不同,我的设置包含由CMS隐藏的<li>元素,并且无法预先知道哪些元素可见,哪些元素将隐藏。

任何解决此问题的方法?

HTML:

<ul> 
    <li> 
    <img src="image1.jpg" />   
    </li> 
    <li> 
    <img src="image2.jpg" />   
    </li> 
    <li> 
    <img src="image3.jpg" />   
    </li> 
    <li> 
    <img src="image4.jpg" />   
    </li> 
</ul> 

CSS:自己去约束它们的图像

ul { 
    display: flex; 
    align-items: flex-end; 
    justify-content: space-between; 
} 
li { 
    transform: scale(0.5); 
} 
+1

寻求代码帮助的问题必须包含在问题本身中重现**所需的最短代码**最好在[** Stack Snippet **](https://blog.stackoverflow.com/2014/09/引入可运行的JavaScript-CSS-和HTML的代码段/)。请参阅[**如何创建最小,完整和可验证的示例**](http://stackoverflow.com/help/mcve) –

+0

没问题,我编辑了我的问题以添加一些代码。 – drake035

+0

为什么不按照视口百分比设置图像大小? –

回答

3

使用max-width: 100%。然后使用<li>上的边距来分隔它们。

ul { 
 
    display: flex; 
 
    align-items: flex-end; 
 
    justify-content: space-between; 
 
    /* 
 
    justify-content: space-around; <-- you might try this instead 
 
    */ 
 
} 
 
li { 
 
    /*margin: 0 5px; no-no for OP use case*/ 
 
    text-align: center; 
 
} 
 
img { 
 
    max-width: 96%; /* the margin workaround */ 
 
} 
 

 
/* demo cleanup only */ 
 
ul { 
 
    list-style-type: none; 
 
    margin: 0; 
 
    padding: 0; 
 
}
<ul> 
 
    <li> 
 
    <img src="http://fillmurray.com/200/300" />   
 
    </li> 
 
    <li> 
 
    <img src="http://fillmurray.com/200/300" />   
 
    </li> 
 
    <!-- 
 
    <li></li> 
 
    Oops, missing LI. --> 
 
    <li> 
 
    <img src="http://fillmurray.com/200/300" />   
 
    </li> 
 
</ul>

需要在运行该代码段,以测试它如何扩展到打“整页”按钮。

编辑回复:否LI余量:您可以通过几种不同的方式将边距移动到图像上。在这里,由于<li>已经有text-align: center,只要减小图像的最大宽度就足够了。也意味着LI将完全崩溃。新的HTML有一个缺失的图像。

+0

很好的答案!为了说清楚,这里的关键是默认情况下flex-shrink是1,所以如果需要,li会减小尺寸 – vals

+0

谢谢。但在我的特定设置中,一些图像/标志被隐藏,我不知道哪些是提前。因此,我无法在第一个和最后一个徽标上设置0的余裕和左右的余裕。所以解决方案不能依赖利润率......我应该在我的问题中提到抱歉。刚编辑它。 – drake035

+0

@ drake035更新了我的答案。 – Will

相关问题