Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Анимированое удаление (https://javascript.ru/forum/css-html/82189-animirovanoe-udalenie.html)

fori 29.03.2021 13:02

Анимированое удаление
 
Здраствуйте, помогите пожалуйста понять почему не работает анимированое удаление в коде
<!DOCTYPE html>

<body>
	<div class="container">
		<div id="del" onclick="del()"></div>
	</div>
</body>
<style>
	.container {
		width: 30vmin;
		background: green;
		transition: all 5s ease;
	}

	#del {
		width: 10vmin;
		height: 10vmin;
		background: red;
	}
</style>
<script>
	function del() {
		document.getElementById("del").style = "display:none";
	}
</script>

</html>

И как ето реализовать (я представляю еот как резкое исчезновение красного квадрата и медленное уменшение зеленого)

рони 29.03.2021 14:23

fori,
анимировать можно только значения с циферками

fori 30.03.2021 00:16

Тоесть в моем случае есть смысл использовать position:absolute, измерить чему равно height дочернео елемента и передавать (его+margins) в родительский-анимируемый div?
Как я могу получить значение height из под js (могу ли я получить значение в vmin, [если все что внутри етого дочернего компонента имеет размер в vmin] или только в px) Если только в пикселях как мне реагировать на изменение масштаба (чтоб не зависимо от масштаба размеры не менялись)
PS: проблемы таких требований к верстке вызваны тем что ето игровой интерфейс а не просто сайт))

Aetae 30.03.2021 00:52

Можно навертеть - скрывать через transform, или там opacity, что не затрагивает реальных размеров, а потом медленно уже сводить сам размер к нулю, после чего удалять. Т.е. заявзать всю анимацию на сам удаляемый элемент.
Получить же высоту можно как el.offset\client\scrollHeight либо el.getBoundingClientRect().height, либо getComputedStyle(el).height, в зависимости от того что нужно. Всегда исключительно в прикселях.
Но нет никаких проблем привести значение на момент вызова к vmin или любому другому - простая математика.


Часовой пояс GMT +3, время: 02:19.