Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.05.2012, 05:37
Аватар для yashka525
Mr. Jacob
Отправить личное сообщение для yashka525 Посмотреть профиль Найти все сообщения от yashka525
 
Регистрация: 20.01.2011
Сообщений: 194

Функция SmoothOpacity
Можете посоветовать как улучшить эту функцию? Ведь eval - нехорошо... или нормально?

Если что не понятно - могу комментарии поставить. Но вроде и так все понятно.

var IE = /*@cc_on!@*/0;

function SmoothOpacity(Element, StartFrom, EndOn, Step, Speed, OnComplete){

	IE?(Element.style.filter = 'alpha(opacity=' + StartFrom * 100 + ')'):(Element.style.opacity = StartFrom);
	
	(StartFrom < EndOn)?(
		Condition = 'EndOn > StartFrom'
	):(
		Condition = 'StartFrom > EndOn'
	)
	
	var NewCondition = Condition;
	
	(function(){
		if(eval(NewCondition)){
			StartFrom += Step;
			
			IE?(Element.style.filter = 'alpha(opacity=' + StartFrom * 100 + ')'):(Element.style.opacity = StartFrom);
			
			setTimeout(arguments.callee, Speed);
		}
		else{ //Если уже прозрачность достигла желаемой цифры
			IE?(Element.style.filter = 'alpha(opacity=' + EndOn * 100 + ')'):(Element.style.opacity = EndOn);

			if(OnComplete != 'null'){
				OnComplete(); //Можно выполнить какую-нибудь функцию... или не выполнять - 'null'
			}
		}
	})();
};

//Вызывать так:

SmoothOpacity(document.getElementById('box'), 0, 1, .05, 90, 'null');

SmoothOpacity(document.body, 1, 0, -.08, 200, function(){alert('Done!')});
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2012, 07:34
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

<div>Hello people</div>
<script type="text/javascript">

var SmoothOpacity = (function() {

    var test = document.createElement( 'div' );
    test.innerHTML = "<a style='opacity:.55;'></a>";
    var a = test.getElementsByTagName( "a" )[ 0 ],
        supportOpacity = /^0.55/.test( a.style.opacity );

    return function( element, start, end, step, speed, onComplete ) {

        var rev = start > end ? true : false,

        interval = setInterval( function(){

            if ( rev && start <= end || !rev && start >= end ) {
                start = end;
                clearInterval( interval );
            }

            if ( supportOpacity ) {
                element.style.opacity = start;
            } else {
                element.style.filter = 'alpha(opacity=' + start * 100 + ')';
            }

            onComplete && start == end && onComplete();

            start += rev ? -step : step;

        }, speed );
    }
})();

SmoothOpacity(document.body, 1, 0, .08, 100, function(){
    SmoothOpacity(document.body, 0, 1, .08, 100, function(){alert('Done!')});
});

</script>
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine

Последний раз редактировалось devote, 06.05.2012 в 07:36.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать где находится функция, на которую указывает javascript:openTag('mgmt') amigo* Общие вопросы Javascript 13 11.04.2012 12:11
функция и несуществующий id Ankh Элементы интерфейса 4 10.02.2012 23:49
функция не успевает Sadist_dead Элементы интерфейса 22 02.10.2011 19:00
Где вызывается функция? cradis Общие вопросы Javascript 5 23.04.2011 13:47
Функция которая работает на OnLoad не хочет работать на OnClick libinstyle Элементы интерфейса 6 23.03.2010 01:42