2014-06-24 2 views
0

zIndex 속성을 사용하여 서페이스의 레이어를 제어하려고합니다. Firefox에서는 작동하지 않지만 Chrome에서는 정상적으로 작동합니다. DOM을 조사한 결과 z-index는 우리가 설정 한 것과 상관없이 0으로 표시된다는 것을 알았습니다.famo.us Firefox 설정 Z- 인덱스가 작동하지 않습니다.

famo.us 튜토리얼 코드 @http://famo.us/university/famous-101/displaying/5/에서 문제가 재현되었습니다. 자습서 코드를 다음 코드로 바꿉니다. 같은 코드를 사용하는 Chrome과 Firefox의 차이점을 확인하십시오.

var Engine = require('famous/core/Engine'); 
var Surface = require('famous/core/Surface'); 

var mainContext = Engine.createContext(); 

var firstSurface = new Surface({ 
    size: [200, 400], 
    content: 'top', 
    properties: { 
    color: 'white', 
    textAlign: 'center', 
    backgroundColor: '#FA5C4F', 
    zIndex: 10 
    } 
}); 

var secondSurface = new Surface({ 
    size: [300, 200], 
    content: 'bottom', 
    properties: { 
    color: 'white', 
    textAlign: 'center', 
    backgroundColor: 'green', 
    zIndex: 8 
    } 
}); 

mainContext.add(firstSurface); 
mainContext.add(secondSurface); 

답변

2

Famo.us가 3D 렌더링 엔진으로 Z 인덱싱을 수행하기 때문에 zIndex 속성을 사용하지 마십시오. 원하는 것을 얻으려면 StateModifier를 사용하고 Z 방향에서 서페이스를 평행 이동합니다.

이제 FireFox에서도 작동합니다. 희망이 도움이됩니다!

var Engine = require('famous/core/Engine'); 
var Surface = require('famous/core/Surface'); 
var Transform = require('famous/core/Transform'); 
var StateModifier = require('famous/modifiers/StateModifier'); 

var mainContext = Engine.createContext(); 

var firstSurface = new Surface({ 
    size: [200, 400], 
    content: 'top', 
    properties: { 
    color: 'white', 
    textAlign: 'center', 
    backgroundColor: '#FA5C4F' 
    } 
}); 

firstSurface.state = new StateModifier({ 
    transform: Transform.translate(0,0,10) 
}); 

var secondSurface = new Surface({ 
    size: [300, 200], 
    content: 'bottom', 
    properties: { 
    color: 'white', 
    textAlign: 'center', 
    backgroundColor: 'green', 
    } 
}); 

secondSurface.state = new StateModifier({ 
    transform:Transform.translate(0,0,8) 
}); 

mainContext.add(firstSurface.state).add(firstSurface); 
mainContext.add(secondSurface.state).add(secondSurface); 
+0

감사합니다 johntraver. 나는 그것을 명심 할 것이다. translateZ를 사용하여 테스트 한 결과 작동했습니다. 그러나 나는 Z-Index가 작동하지 않는 이유를 알아 내려고 노력했습니다. 다음과 같이 'Surface'코드를 변경하면 문제가 해결됩니다. 원본 : element.style.zIndex = (matrix [14] * 1000000) | 0; // 파이어 폭스의 z 버퍼 문제를 수정하자. ' 신규 : 'element.style ['z-index '] = (행렬 [14] * 1000000) | 0; // Firefox z-buffer 문제 해결하기 ' 이 줄을 변경하면, 코드에서 제공 한 것을 반영하는 DOM에서 z- 인덱스 값을 볼 수 있습니다. 또한 서페이스는 화면에서 올바른 z 순서로 렌더링됩니다. –

+0

쿨! 당신이 그것을 알아 냈기 때문에 기쁘다! – johntraver

+0

v30.0에서 수정 된 Firefox의 버그로 인해 Famo.us가 필요합니다. 이전에 Firefox는 중첩 된 translateZ를 따르지 않았으므로 적절한 레이어를 만들기 위해 zIndexing을 적용해야했습니다. 우리는 Famo에서이를 제거 할 것입니다. 결국 Firefox 30 채택률은 보류 중입니다. – dmvaldman

관련 문제