2016-02-08 73 views
0

我在div上使用縮放轉換,以便我可以使用具有設置位置和大小的子元素,並且仍然可以縮放以填充屏幕。我正在編寫GWT 2.7,並且在Mac和Chrome中改變Chrome和Safari中的元素可見性(webkit bug?)時遇到問題。這裏有一個例子:div scale轉換問題

<!doctype html> 
 

 
<html lang="en"> 
 

 
<head> 
 
\t <style> 
 
\t #container { position: absolute; left: 50px; top: 30px; width: 576px; height: 456px; overflow: hidden; background-color: cyan; } 
 
\t #backCanvas { position: absolute; left: 44px; top: 260px; } 
 
\t #frontCanvas { position: absolute; left: 240px; top: 397px; } 
 
\t 
 
\t .scaled 
 
\t { 
 
\t \t -ms-transform-origin: 0 0; \t /* IE 9 */ 
 
\t \t -ms-transform: scale(1.2); 
 
\t 
 
\t \t -webkit-transform-origin: 0 0; /* Safari 8 */ 
 
\t \t -webkit-transform: scale(1.2); 
 
\t 
 
\t \t transform-origin: 0 0; 
 
\t \t transform: scale(1.2); 
 
\t } 
 
\t </style> 
 
</head> 
 

 
<body onload="initCanvas()"> 
 
\t <div id="container" class=""> 
 
\t \t <canvas id="backCanvas" tabindex="-1" width="490" height="158"></canvas> 
 
\t \t <canvas id="frontCanvas" tabindex="-1" width="87" height="31"></canvas> 
 
\t 
 
\t \t <button onclick="showScaled(false)">Unscaled</button> 
 
\t \t <button onclick="showScaled(true)">Scale transform</button> 
 
\t \t <button onclick="showElement('frontCanvas',false)">Hide canvas</button> 
 
\t \t <button onclick="showElement('frontCanvas',true)">Show canvas</button> 
 
\t </div> 
 
\t 
 
\t <script> 
 
\t \t function initCanvas() 
 
\t \t { 
 
\t \t \t fillCanvas(document.getElementById("backCanvas"), "green"); 
 
\t \t \t fillCanvas(document.getElementById("frontCanvas"), "red"); 
 
\t \t } 
 
\t \t 
 
\t \t function fillCanvas(canvas, color) 
 
\t \t { 
 
\t \t \t var context = canvas.getContext("2d"); 
 
\t \t \t context.fillStyle = color; 
 
\t \t \t context.fillRect(0, 0, canvas.width, canvas.height); 
 
\t \t } 
 
\t \t 
 
\t \t function showScaled(scaled) 
 
\t \t { 
 
\t \t \t document.getElementById("container").className = scaled ? "scaled" : ""; 
 
\t \t } 
 
\t \t 
 
\t \t function showElement(element, show) 
 
\t \t { 
 
\t \t \t // none of these work when scaled 
 
\t \t \t document.getElementById(element).style.display = show ? null : "none"; 
 
// \t \t \t document.getElementById(element).style.visibility = show ? "visible" : "hidden"; 
 
// \t \t \t document.getElementById(element).style.zIndex = show ? "100" : "-100"; 
 
// \t \t \t document.getElementById(element).style.left = show ? "240px" : "-1000px"; 
 
\t \t } 
 
\t </script> 
 
</body> 
 

 
</html>

+0

它適用於我的Mac上的Chrome。 –

+0

有趣,謝謝你的嘗試。對於我來說,我會在紅色帆布前看到綠色的帆布,而這絕不應該發生。我還沒有找到修復程序。也許我可以強制容器重新佈局/重繪? – Moronicus

回答

0

問題有溢出的事:隱藏。我將它包含在容器中,因爲這是GWT所做的。所以,我從容器中移除了溢出並添加了溢出:隱藏到了主體中。這適用於我的應用程序,因爲我縮放以適應窗口。容器可能存在一些裁剪問題,但現在繪圖順序正常工作。

這是一個正在修復過程中的webKit錯誤。