Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2022, 10:57
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

Аналог нативного JS .hide(300) и .show(300)?
Доброго времени суток.

В jQuery есть возможность плавного скрытия и отображения элемента - .hide(300) и .show(300) .

А как добиться этого же в нативном JS?
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2022, 11:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

12345678,
https://learn.javascript.ru/js-animation
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2022, 11:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

12345678,
проще присвоить class https://youmightnotneedjquery.com/#fade_in
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2022, 12:02
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

<style>
div {
	position:relative;
	width:200px;
	height:150px;
	background-color:red;
	transition-property: opacity;
	opacity:1;
}
.hidden {
	opacity:0;
}

</style>
<body>
<button id=show>Show</button>
<button id=hide>Hide</button>
<br>
<br>
<div id=div></div>

<script>

function show (elem, tm) {
	if (elem.classList.contains('hidden')) {
		elem.hidden = false;
		elem.style.transitionDuration = tm + 'ms'
		setTimeout(() => elem.classList.remove('hidden'), 0)
	}
}

function hide (elem, tm) {
	if (!elem.classList.contains('hidden')) {
		elem.addEventListener('transitionend', () => elem.hidden = true, {once:true})
		elem.style.transitionDuration = tm + 'ms'
		elem.classList.add('hidden')
	}
}

const div = document.getElementById('div')

document.getElementById('show')
.addEventListener('click', () => show(div, 1000));

document.getElementById('hide')
.addEventListener('click', () => hide(div, 1000))

</script>
</body>
Ответить с цитированием
  #5 (permalink)  
Старый 07.02.2022, 00:12
Кандидат Javascript-наук
Отправить личное сообщение для 12345678 Посмотреть профиль Найти все сообщения от 12345678
 
Регистрация: 03.09.2012
Сообщений: 109

рони
voraa


Спасибо за ответы. Но это вроде как всё не аналогичная замена. При скрытии, как я понял (при просмотре html в инструменте разработчика пробегают цифры), меняется высота блоков, от изначального до нулевого, оттого визуально и складывается впечатление плавного скрытия\раскрытия.
Причём размеры скрываемых и отображаемых блоков могут быть не указаны вовсе.
Ответить с цитированием
  #6 (permalink)  
Старый 07.02.2022, 07:06
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,745

Сообщение от 12345678
меняется высота блоков, от изначального до нулевого, оттого визуально и складывается впечатление плавного скрытия\раскрытия.
У кого меняется высота блока? У jquery?
У меня меняется только прозрачность, а потом блок просто исчезает.
Можно сделать как угодно - можно менять высоту, можно менять ширину, можно сделать выезжающий блок...
Если размеры не указаны, их можно посчитать...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Операционная Система на JS Icat Общие вопросы Javascript 3 17.04.2018 22:54
Не получается вставить код js в HTML garmoni Элементы интерфейса 3 05.09.2013 05:56
Аналог php функции в JS ВэйДлин Общие вопросы Javascript 1 20.07.2011 01:03
аналог __autoload в JS Tim Общие вопросы Javascript 17 15.12.2010 16:03
помогите написать аналог строки include("index.php?open=1") на js bushstas Общие вопросы Javascript 1 19.07.2009 02:48