2017-06-14 82 views
1

我正在使用柔性佈局以呈現具有3個均勻大小的列的容器DIV。它正如我所期望的那樣工作,直到我應用一個縮放變換。當容器縮小時,內容框之間出現細縫。這個問題發生在MacOS Chrome和Safari上,但不是Firefox。我相信我看到了渲染錯誤,但是想知道是否有人可能有解決方法的想法。比例變換導致與柔性佈局的渲染間隙

這裏有一個大大簡化例子演示了Chrome的問題:

body { 
 
    background: black; 
 
    margin: 0; 
 
} 
 
.scale { 
 
    transform: scale(0.703125); 
 
} 
 
.container { 
 
    display: flex; 
 
    width: 600px; 
 
    height: 200px; 
 
} 
 
.column { 
 
    flex-grow: 1; 
 
    background:#ff0000; 
 
} 
 
.column:nth-child(2) { 
 
    background: #ff3333; 
 
}
<div class="container scale"> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
</div> 
 
<div class="container"> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
</div>
周圍

+0

以供將來參考報我尺度變換問題在這裏鉻:HTTPS ://bugs.chromium.org/p/chromium/issues/detail?id = 733294 – Ghazgkull

回答

1

請考慮解決該問題與CSS盒子陰影。

以下是使用box-shadow屬性的值spread-radius的示例。

body { 
 
    background: black; 
 
    margin: 0; 
 
} 
 

 
.container { 
 
    display: flex; 
 
    height: 200px; 
 
} 
 

 
.column { 
 
    flex-grow: 1; 
 
    background: #ff0000; 
 
} 
 

 
.scale { 
 
    transform: scale(0.703125); 
 
    overflow: hidden;     /* new */ 
 
} 
 

 
.scale>div:nth-child(2) { 
 
    box-shadow: 0 0 0 1000px #ff0000; /* new */ 
 
} 
 

 
.column:nth-child(2) { 
 
    background: orange;    /* easier to see */ 
 
}
<div class="container scale"> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
</div> 
 
<div class="container"> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
</div>

下面是這個方法是如何工作的詳細解釋:

+0

您對問題的解釋並不準確,但想法在影子周圍工作是非常好的。你可以更新你的答案,以消除有關小數位的問題的想法是什麼? (想想以後有人碰到這個問題,不想傳播虛假信息) – Ghazgkull

+0

...爲什麼它值得,一個簡單的1px的影子似乎在做詭計。'box-shadow:0 0 0 1px#ff0000;' – Ghazgkull

+1

對於任何玩家來說,下面是一個最終的Codepen,展示了一個更復雜的示例,應用此解決方法:https://codepen.io/Ghazgkull/pen/BZLVmO – Ghazgkull

0

的一種方法是使用該元素相匹配的顏色之一的背景,所以頁面的背景不顯示在元素之間。

body { 
 
    background: black; 
 
    margin: 0; 
 
} 
 
.scale { 
 
    transform: scale(0.703125); 
 
} 
 
.container { 
 
    display: flex; 
 
    width: 600px; 
 
    height: 200px; 
 
} 
 
.column { 
 
    flex-grow: 1; 
 
    background:#ff0000; 
 
} 
 
.column:nth-child(2), .scale { 
 
    background: #ff3333; 
 
}
<div class="container scale"> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
</div> 
 
<div class="container"> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
    <div class="column"></div> 
 
</div>

+0

感謝您的想法。但在我的真實例子中,這個容器是一個覆蓋層,我爲三列順序放置以顯示下面的內容...所以容器實際上必須是透明的。 – Ghazgkull

+0

你能告訴我你正在使用的實際代碼嗎?也許用它更新你的文章或創建一個小提琴或codepen它? @Ghazgkull –

+0

根據縮放柔性盒容器的這個問題,示例代碼顯示了問題。我只是尋找解決方法來消除縮放內容div之間出現的差距。 – Ghazgkull