Переливы прозрачности. Плавное изменение свойства
Работает во всех браузерах!
Исходный код этого примера:
<style>
#a {
background-color: #dc251c;
border: 3px solid #b4241b;
padding: 5px;
opacity: 0.5;
width: 166px;
}
</style>
<script type="text/javascript">
<!--
function showElement(show, obj, time, resolution) {
resolution=(resolution>0? resolution: 50); //пауза между фреймами
var step=(show? 1: -1)*(1/(time>0? time: 1000))*resolution; //шаг в процентах от заданного времени
var opacity=(typeof(obj.style.KhtmlOpacity)!="undefined")? parseFloat(obj.style.KhtmlOpacity): //konquerror и его семейство
(typeof(obj.style.MozOpacity)!="undefined")? parseFloat(obj.style.MozOpacity): //мозилла и прочие Gecko. мозилла не покажет какое сейчас значение, если его не меняли...
(typeof(obj.filters)!="undefined")? obj.filters.Alpha.Opacity.value/100: //IE вариант
(typeof(obj.style.opacity)!="undefined")? parseFloat(obj.style.opacity): //не стоит доверять, может не undefined для понту, а всё равно не поддерживаеться CSS3
null; //нет прозрачности как таковой
if(opacity==null) return;
opacity=isNaN(opacity)? (show? 0: 1) : opacity; //тест на вшивость
//и так здесь мозилла(возможно konquerror) обложалась, мы не можем узнать значение opacity если оно не менялось
//потому в первый раз возьмём как будто мы находимся на границе, либо 0, либо 1
var timer=window.setInterval(function() {
if((opacity+=step)>=1||opacity<=0) window.clearInterval(timer);
if(obj.filters) obj.filters.alpha.opacity=Math.round(opacity*100);
obj.style.KhtmlOpacity=obj.style.MozOpacity=obj.style.opacity=opacity;
}, resolution);
}
//-->
</script>
<img src="../ann.jpg" id="a">
<br>
<input type=submit value="Скрыть" onClick="showElement(0,document.getElementById('a'),0,0)">
<input type=submit value="Отобразить" onClick="showElement(1,document.getElementById('a'),0,0)">
.
Прокомментировать/Отблагодарить