2013-06-18 1 views
4

float 속성을 변경하면 CSS 전환이 실행되지 않는 Webkit 브라우저에서 성가신 버그가 발생했습니다. 기본적으로 요소의 너비가 변경 될 때 전환이 발생하고 float: left;에서 float: none;으로 변경하면 전환이 시작되지 않습니다.Webkit CSS 전환이 float 속성 변경시 실패

$('#element').one('transitionend webkitTransitionEnd oTransitionEnd otransitionend', function(){ 
    ... 
} 

내가 요소가 이전에 폭 변경에 속성을 떠 변경하는 클래스를 적용하고, 두 시도 :

$(this).toggleClass('removeFloat widthChange'); 

//and 

$(this).toggleClass('removeFloat'); 
$(this).toggleClass('widthChange'); 
당신이 전환 끝에 일부 JS 호출을하고자하는 경우에 더 문제가 발생

나는 레이아웃의 특정 인스턴스에서 white-space: nowrap;을 사용해야 할 필요가 있기 때문에이 문제를 겪었습니다. 이는 플로팅 요소에서 작동하지 않습니다.

+0

흥미 롭습니다. 관심 밖의 이유로, 왜 float을 추가하고 제거하고 싶습니까? 귀하의 예에서는 다른 것으로 보이지는 않지만, 최소한의 테스트 케이스 일 가능성이 높습니다. –

+1

@RichBradshaw 이것은 설명하지는 않았지만 너비가 증가한 첫 번째 요소는 상위 div의 외부로 넘쳐 나오는 다른 두 요소를 오른쪽으로 밀어냅니다. 이 요소들을 같은 줄에 보존하기 위해서는'white-space : nowrap; '이 필요하기 때문에 float을 제거해야합니다. 나는 그리드 시스템을 사용하고 있으며 그 요소가 떠 다니고 정상적으로 배치되고 필요할 때만 변경되는 것을 선호합니다. 의도 된 기능의 종류에 대한 푸시 예를 참조하십시오. http://api.jquerymobile.com/panel/ – Patrick

답변

2

대표적인 SO 세션, 근본 문제를 알아 내고, 해결책을 찾기 위해 검색하고, 아무 것도 찾지 말고, 예를 들어 피들을 사용하여 질문을 구성하십시오. 누군가가 생각해 낼 수있는 모든 가능한 제안을 시도하면서 결과를 풀어보십시오 너 자신의 문제. 어쨌든 게시하기에는 이상한 공이라고 생각했습니다.

간단하게 설정 한 후 요소의 CSS를 조사하기 위해 필요한, 그 폭 조정 이전에

: http://jsfiddle.net/patrickmarabeas/vrcaA/


편집 : 크롬 고정 보이는

$(this).toggleClass('removeFloat'); 
$(this).css('float'); //or any other valid property 
$(this).toggleClass('widthChange'); 

이 업데이트 바이올린 참조 이 문제는

+1

와우, 이것이 내가 이상한 버그라고 부르는 것입니다. 정말 좋은 그것을 공유 할 수 있습니다! –

+1

실제로 요소에 유효한 CSS 속성 (예 : $ (this) .css ('color'))을 호출해야합니다. http://jsfiddle.net/vrcaA/1/ –

+0

@roasted 잘 알고 있습니다 :) – Patrick