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

相關問題