Javascript.RU

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

Плавное изменение размера блока
Доброго дня! Нужен по большей части просто блок, который по клику плавно изменяет размер блока (меню, к примеру). У меня есть такой код (писал не полностью сам, логику подсмотрел где-то на этом же форуме).
var toggle_menu = document.querySelector('.menu-mini');
		toggle_menu.addEventListener("click", function(){
			toggleBlock('.main_menu', 200);
		});

	}
	

	function toggleBlock(css, height) {
		var block = document.querySelector(css);
		var display = getCss(block, 'display');
		if(display == 'block') {
			var cur_hei = height;
			var hei = 0;
			block.style.height = height + 'px';

			var interval = setTimeout(function go() {
				block.style.height = (parseInt(block.style.height) - 10) + 'px';
				if(parseInt(block.style.height) > hei) {
					setTimeout(go, 50);
				}
				else {
					block.style.display = 'none';
				}
			}, 50);

		}
		else if(display== 'none') {
			var cur_hei = 0;
			var hei = height;
			block.style.height = '0px';
			block.style.display = 'block';

			var interval = setTimeout(function go() {
				block.style.height = (parseInt(block.style.height) + 10) + 'px';
				if(parseInt(block.style.height) < hei) {
					setTimeout(go, 50);
				}
			}, 50);
		}
	}

	function getCss(node, prop) {
		return getComputedStyle(node).getPropertyValue(prop);
	}


Он работает, но очень неправильно. В инспекторе размер меняется, однако с отображением беда. Все происходит резко, некрасиво, рывками. При закрытии display:block наступает раньше, чем height доходит до нуля.
Я знаю, что это делается на jQuery несколькими строчками. Но мне принципиально добиться того же на чистом JS. Не извращения ради, но тренировки для.

Заранее огромное спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2017, 22:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

sandcrawler,
может css добавить тогда хватит смены класса
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размера блока по нажатию кнопки Globus Элементы интерфейса 2 19.09.2015 12:16
Пропорциональное изменение размера div блока NiGiLiSt jQuery 2 01.11.2013 15:39
изменение размера блока dimiork Элементы интерфейса 1 08.01.2011 21:01
плавное изменение размера блока alexk984 jQuery 4 29.11.2010 08:46
Изменение размера блока реклама в зависимости от разрешения экрана. toxiz77 Общие вопросы Javascript 3 11.02.2009 14:12