Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.07.2011, 19:10
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Замена .animate()
Всем привет. Подскажите, как сделать подобие .animate(); только на чистом js?
А именно, меня интересует плавное скрытие и показ элемента: $(id).animate({height: 'show'}, 200);

Подскажите, как такое сделать, а то даж не знаю с чего начать
Ответить с цитированием
  #2 (permalink)  
Старый 14.07.2011, 19:23
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Лучше всего начать с поиска!
Ответить с цитированием
  #3 (permalink)  
Старый 14.07.2011, 19:48
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Sweet,
Я так понимаю, нужно просто плавно изменять высоту/ширину элемента и всё? Если да, то подскажи, как получить доступ к высоте и ширине элемента?
Ответить с цитированием
  #4 (permalink)  
Старый 14.07.2011, 20:08
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Сам нашёл)
Ответить с цитированием
  #5 (permalink)  
Старый 14.07.2011, 20:33
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Посмотрите этот код пжл, скажите, что в нём не так?

<script>
function myf(div)
{
	var elem = document.getElementById(div);
	var show = document.getElementById('di');
	show.innerHTML = elem.offsetHeight;
	setTimeout(function() {
	elem.style.height = (elem.offsetHeight - 15) + 'px';
	
	
	show.innerHTML = elem.offsetHeight;
	if(elem.offsetHeight > 0)
	{
		myf(div);
	}
	},50);
}
</script>
<a href="javascript:void(0)" onclick="myf('dii')">Запуск</a>
<div id="di"></div><hr>
<div id="dii" style="background-color: blue">
 111111111111111111111111111111111111111111111111111111111111111111<br>
 1111111 1111111111111111111 11111111111111111 111111111 11111111111111<br>
 1111111111111111111 111111111111111111111 11111111111111111111111111<br>
 111111111111111111111111111111111111111111111111111111111111 111111<br>
 11111111111111111111111111111111111111111111111111 11 11111111111111<br>
 </div>

Последний раз редактировалось monolithed, 14.07.2011 в 22:54.
Ответить с цитированием
  #6 (permalink)  
Старый 14.07.2011, 21:26
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Блин, код сдесь не запускается почему-то но в браузере работает. Но не совсем так, как нужно.. сама высота дива уменьшается, это можно посмотреть по уменьшению столбика с синим цветом, но вот единички не исчезают.
Ответить с цитированием
  #7 (permalink)  
Старый 14.07.2011, 21:56
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Поставьте overflow: hidden, и будет вам счастье.
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 14.07.2011, 22:22
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Спасибо)
Ответить с цитированием
  #9 (permalink)  
Старый 15.07.2011, 19:47
Профессор
Отправить личное сообщение для (Sandr) Посмотреть профиль Найти все сообщения от (Sandr)
 
Регистрация: 14.10.2010
Сообщений: 376

Возник ещё один вопрос. Если длина дива не уменьшается, а увеличивается, то нужно прописать в условии, чтобы код корректно исполнялся?
function myf(div)
{
    var elem = document.getElementById(div);
    var show = document.getElementById('di');
    show.innerHTML = elem.offsetHeight;
    setTimeout(function() {
    elem.style.height = (elem.offsetHeight + 1) + 'px';
     
     
    show.innerHTML = elem.offsetHeight;
    if(elem.offsetHeight > 0) // что здесь прописать?
    {
        myf(div);
    }
    },50);
}


Конечно можно прописать что-то в роде if(elem.offsetHeight < x)
Где x - длина дива в "развёрнутом" состоянии. Но вот как тогда узнать эту длину?

Последний раз редактировалось (Sandr), 15.07.2011 в 20:38.
Ответить с цитированием
  #10 (permalink)  
Старый 22.07.2011, 17:36
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Для понимания, как-то так (стоит отметить, что это не правильные подходы):
<script type="text/javascript">
//show
window.onload = function() {
    var i = 0;
    (function(){
        if(++i <= 100) {
           document.getElementsByTagName('div')[0].style.height = i+'px';
           setTimeout(arguments.callee, 10);
        }
        else {
            alert('finished');
        }
    })();
};
</script>

<style type="text/css">
div {
    background: blue;
    position: absolute;
    width: 100px;
}
</style>

<div></div>


<script type="text/javascript">
//toggle
window.onload = function() {
    var elem = document.getElementById('div'), i = 0, j = 0, s = 100;   
    document.getElementById('a').onclick = function() {
        if(++i <= s) {
            elem.style.height = i +'px';
            j = i;
            if(j >= s) return false;
        }
        else {
            elem.style.height = --j +'px';
            if(j <= 0) {
                i = 0;
                return false;
            }
        }
        window.setTimeout(arguments.callee, 1);
        return false;
    };
};
</script>

<a href="#" id="a">click<a/>
<div id="div" style="background: #0095FF; overflow: hidden; width: 200px; height: 0px;"></div>


как правильно, написано тут

Последний раз редактировалось monolithed, 22.07.2011 в 19:06.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена слова посредством Java-script Assassin Общие вопросы Javascript 33 11.11.2014 22:23
Постоянная работа скрипта Furio29 Общие вопросы Javascript 0 05.05.2011 17:40
Регулярное выражение, замена ссылки к файлу на имя файла libinstyle Events/DOM/Window 2 19.07.2010 17:50
Greasemonkey Замена конкретной части кода osvezhitel Firefox/Mozilla 1 26.05.2010 16:26
Замена слов в тексте Dan T Общие вопросы Javascript 8 18.03.2009 12:36