2012-08-26 2 views
0

자바 스크립트를 사용하여 HTML div 태그의 텍스트에서 임의로 단어를 선택하고 span 태그로 묶습니다. span 태그의 클래스를 사용하여 color라는 단어가 검은 색에서 빨간색으로 CSS 전환을 시도합니다. 그런 다음 스팬 태그를 제거하여 단어를 다시 검은 색으로 바꿉니다. 내가 찾고있는 효과는 "깜박 거리는 단어"입니다.자바 스크립트에서 스팬을 사용하여 CSS 전환 만들기

나는 색상을 바꾸기 위해 단어를 얻을 수 있지만 원활한 CSS 전환은 작동하지 않습니다.

제 질문은 : CSS 전환이 작동하지 않는 이유는 무엇입니까?

내 문제는 this question과 비슷하지만 내 경우에는 "레이아웃 강제 적용"솔루션을 얻을 수 없습니다.

여기에 코드를 게시하는 대신 test code I am working with에 대한 작동 링크를 제공하면 좋을 것입니다 (javascript file here). 그렇지 않은 경우 요청시이 게시물에 코드를 추가합니다.

미리 감사드립니다. 나는 성공없이 하루 종일이 문제에 맞서 머리를 파열 시켰습니다. 이 도움이 필요하다는 것을 인정해야 할 때 :

편집 : 코드 추가.

HTML :

<div id="message"> 
Some words here. 
</div> 

CSS :

div#message span 
{ 
    color: black; 
} 

div#message span.redtext 
{ 
    transition: color 5s ease-out 0s; 
    color: red; 
} 

자바 스크립트 :

//Insert span around word 
var newText = text.split(randomWord).join('<span>' + randomWord + '</span>'); 
$("#message").html(newText); 

//Request property that requires layout to force a layout 
var x = $("#message").clientHeight; 

//Add class to span 
var newText = newText.split('<span>').join('<span class="redtext">'); 
$("#message").html(newText); 
+1

이 왜 DOMContentLoaded''의 범위에 사업부에서 각 단어를 변환하지 않고 다음 무작위 스팬의 클래스를 변경? 또한, $ ("# message") .clientHeight'는'undefined'입니다.'$ ("message #) [0] .clientHeight' –

+1

네, 코드를 게시하는 것이 좋을 것입니다.SO에 대한 질문은 향후 독자에게 어떤 의미를 부여하기로되어 있으므로 서버가 다운되거나 파일이 수정되는 경우 질문과 대답은 앞으로도 유용 할 것입니다. 그리고 2. 게시 코드 (링크 만)가 없으면 특정 시점 (코드가 너무 현지화되어있을 수 있음)의 코드에서 문제를 수정하는 데 도움을 요청하는 사람처럼 보입니다.하지만이 문제를 최소화하기 위해 노력한 것을 볼 수 있습니다. 이미 컴파일 가능한 예제. 그래, 질문을 할 때 상대 코드를 게시하십시오. '=]' –

+0

답장을 보내 주셔서 감사합니다! 두 점은 Fabricio를 잘 이해하고 있으며이 질문에 코드를 추가하고 향후 질문에 코드를 제공합니다. –

답변

1

CSS 전환 요소에 스타일 변화에 적용됩니다. 새로운 CSS 스타일이 요소에 적용되면 해당 변경에서 사용할 전환을 지정할 수 있습니다. 귀하의 예에서는 빨간색 텍스트 스타일로 작성된 범위를 추가했습니다. span 요소의 생성시 빨간색 텍스트 스타일이입니다. 한 스타일에서 다른 스타일로 요소를 전환하지 않고 단순히 redtext 클래스 스타일로 삽입하는 것입니다.

당신이해야 할 일은 검정색 텍스트가있는 스팬을 추가 한 다음 스팬의 클래스를 "blacktext"에서 "redtext"로 변경하면 전환이 적용됩니다. 클래스없이 삽입 한 다음 변경할 수는 있지만 'blacktext'클래스를 사용하여 쉽게 식별 할 수 있습니다.

참조 :

http://jsfiddle.net/n8zNW/

+0

답변 해 주셔서 감사합니다. 스팬을 참조하는 데 사용할 수있는 검정 텍스트 클래스를 사용하여 스팬을 만드는 것이 가장 좋습니다. 내 문제는 그렉 대답 위와 마찬가지로 jsfiddle에서 색이 바뀌는 것을 볼 수 없지만 단어를 10 초로 설정하더라도 단어가 즉시 빨간색으로 바뀝니다. Opera, Firefox 및 IE의 최신 버전에서 테스트되었습니다. 어쩌면 나는 정말 기본적인 것을 놓치고있을 것이다. 나는 웹 개발에 대한 전문가가 없다. –

+0

나는 그것을 작동하게했다! 강제 레이아웃을 '$ ("message #) [0] .clientHeight;' shhac이 쓴 것처럼, 검은 텍스트가있는 범위를 만든 후에 그것을 옮깁니다. 도와 주셔서 감사합니다. –

1

주고 요 UQuery 클래스를 사용하면 jquery를 사용하여 쉽게 참조 할 수 있습니다. 그런 다음 addClass 및 removeClass jquery 메서드를 사용하여 텍스트에 색상을 지정하는 클래스를 추가하고 제거합니다.

여기에 동작하는 예제입니다 : http://jsfiddle.net/sVMZJ/

+0

답변 해 주셔서 감사합니다! 나는 jquery 레퍼런스와 메소드를 확실히 사용할 것이다. 그러나 제 문제는 jsfiddle에서 색상 변이를 볼 수 없다는 것입니다. 단어를 10 초로 설정 했더라도 단어가 즉시 빨간색으로 바뀝니다. 나는 내 자신의 눈을 불신하기 시작했다. Opera, Firefox 및 IE의 최신 버전에서 테스트되었습니다. –

+0

나는 그것을 작동하게했다! 강제 레이아웃을 '$ ("message #) [0] .clientHeight;' shhac이 쓴 것처럼, 'highlightedWord'클래스를 사용하여 스팬이 생성 된 후에 그것을 옮깁니다. 도와 줘서 고마워! 귀하의 대답은 기본적으로 같았지 만 매트 트 대답에 좀 더 많은 설명이 포함되어 있으므로 동의하겠습니다. –

관련 문제