Efeito de transição CSS

08/01/2017

0

Olá, fiz um exemplo simples com javascript e css; quando clico na primeira div (#ativa-menu) , a segunda div (#menu) aparece.

gostaria de adicionar efeitos css na segunda div quando a mesma aparece, por ex.: ela vir de cima para baixo. Porém, com o javascript no meio não estou conseguindo adicionar efeitos de transição com css.

queria saber como posso adicionar efeitos no exemplo abaixo.

Nairan Omura.

<style>
	#ativa-menu {
		border: 1px solid red;
		width: 150px;
		height: 50px;
		margin-left:30%;
	}
	#menu {
		border: 1px solid blue;
		width: 20%;
		height: 50px;
		position:absolute;
		top:50%;
		left:30%;
		background:blue;
		color:white;
		display:none;
	}
	
	#ativa-menu:hover #menu {
		border: black 1px solid;
	}
</style>
<script>
	function mostramenu(){
		
		var ativa = document.getElementById("menu").style.display;
		
		if (ativa=="none"){
			document.getElementById("menu").style.display="inline";
		}else {
			document.getElementById("menu").style.display="none";
		}
	}
</script>
<body>
	<div id=ativa-menu onclick=mostramenu()>ativa</div>
	
	<div id=menu>hello!</div>
</body>
Nairan

Nairan

Responder

Posts

11/01/2017

Victor Machado

Olá Nairan, beleza?

O que você pode fazer é deixar o menu fora da tela como o padrão, e adicionar a propriedade "transition: top 1s".

#menu {
border: 1px solid blue;
width: 20%;
height: 50px;
position:absolute;
top:0;
left:30%;
background:blue;
color:white;
display:none;

transition: top 1s;
}


E quando for ativar o menu, colocar alguma classe nele que modifique o top dele para 50%;

#menu.active {
top:50%;
}


Assim quando ele for ativo o transition vai fazer com que ele deslize até a posição dele na tela.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar