문제가 발생하여 일련의 인용을 페이드 인 및 페이드 아웃하는 빠른 해결책을 찾았습니다. 내 솔루션은 Internet Explorer를 제외한 모든 브라우저에서 원하는대로 작동합니다. IE의 유일한 문제점은 텍스트가 페이드 인하거나 페이드 아웃하지 않는다는 것입니다. 텍스트는 단순히 존재하게됩니다.IE에서 텍스트 페이드 인/페이드 아웃
요소의 filter:alpha(opacity=xx)
을 동적으로 변경하려고 시도하기 전에 비슷한 문제가 발생했다고 생각합니다.
도움을 주시면 대단히 감사하겠습니다.
<html>
<head>
<style>
.fadetext{
background:green;
border:1px solid red;
height:50px;
width:500px;
}
.fadetext div{
background:yellow;
}
</style>
<script type="text/javascript">
var CI_common = {
C:function(cls,elm){
if(!elm) elm = document;
if(document.getElementsByClassName){
return elm.getElementsByClassName(cls);
}else{
var t = [];
var o = elm.getElementsByTagName("*");
var r = new RegExp("(^|\\s)" + cls + "($|\\s)");
for(var i=0;i<o.length;i++){
if(o[i].className.match(r)) t.push(o[i]);
}
return t;
}
},
eventAdd:function(obj,evt,func){
if(obj.addEventListener){
obj.addEventListener(evt,func,false);
}else if(obj.attachEvent){
obj["x" + evt + func] = func;
obj[evt + func] = function(){
obj["x" + evt + func](window.event);
}
obj.attachEvent("on" + evt,obj[evt + func]);
}
}
}
var CI_fadetext = {
init:function(){
var c = CI_common.C("fadetext"); // Simply a getElementsByClassName function
for(var i=0;i<c.length;i++){
c[i].style.overflow = "hidden";
var kids = c[i].getElementsByTagName("div");
for(var j=0;j<kids.length;j++){
kids[j].style.display = "none";
kids[j].style.filter = "alpha(opacity=0)";
kids[j].style.opacity = "0";
(function(obj,index,len){
obj.fadetexttimeout = setTimeout(function(){
CI_fadetext.fade(obj,true);
obj.fadeininterval = setInterval(function(){
CI_fadetext.fade(obj,true);
},5000*len)
},5000*index);
setTimeout(function(){
CI_fadetext.fade(obj,false);
obj.fadeoutinterval = setInterval(function(){
CI_fadetext.fade(obj,false);
},5000*len)
},5000*index+4400);
})(kids[j],j,kids.length);
}
}
},
fade:function(elm,dir){
function fade(start){
start = (dir ? start + 10 : start - 10);
elm.style.filter = "alpha(opacity=" + start + ")";
elm.style.opacity = start/100;
document.getElementById("output").innerHTML = elm.style.filter;
if(start > 100 || start <0){
elm.style.display = (dir ? "" : "none");
elm.style.filter = "alpha(opacity=" + (dir ? 100 : 0) + ")";
elm.style.opacity = (dir ? 1 : 0);
}else elm.fadetexttimeout = setTimeout(function(){fade(start);},50);
}
if(dir){
elm.style.display = "";
fade(0);
}else fade(100);
}
}
CI_common.eventAdd(window,"load",CI_fadetext.init); // Just a window.onload level 2 event listener
</script>
</head>
<body>
<div id="output"></div>
<div class="fadetext">
<div>AAAA</div>
<div>BBBB</div>
<div>CCCC</div>
<div>DDDD</div>
<div>EEEE</div>
</div>
</body>
</html>
www.usejquery.com – ground5hark