Reputation: 1
I am trying to toggle a css transform with jquery. I can get the first half working on click, but cannot get it to toggle.
HTML:
<div class="team-member">
<div class="team-member-bio">
<h3>Team Member Name</h3>
<p>Team Member Title</p>
<p>
Team member bio content.
</p>
</div>
<img class="team-member-img" src="" alt="">
<div class="team-member-content">
<h3 class="team-member-name">Team Member Name</h3>
<p class="team-member-title">Team Member Title</p>
</div>
</div>
CSS:
.team-member {
margin: 0 .75rem;
height: 30rem;
width: 25rem;
overflow: hidden;
position: relative;
}
.team-member-bio {
position: absolute;
z-index: 15;
background-color: white;
top: -100%;
height: 100%;
width: 100%;
transition: all .4s;
}
JQuery (that does not work):
$(".team-member").click(function(){
var bio = $(this).children('.team-member-bio');
bio.toggle(
function(){bio.css("transform", "translateY(100%)");},
function(){bio.css("transform", "translateY(-100%)");}
);
});
JQuery (that DOES work, but does not have toggle functionality):
$(".team-member").click(function(){
var bio = $(this).children('.team-member-bio');
bio.css("transform", "translateY(100%)");
});
Upvotes: 0
Views: 182
Reputation: 173
I don't know what you are trying but thats not the correct use of toggle. See: https://api.jquery.com/toggle/ I think you might need an animation https://www.w3schools.com/css/css3_animations.asp
$(".team-member").click(function(){
var bio = $(this).children('.team-member-bio');
bio.toogleClass('transformed100');
});
css
.team-member-bio {
transform: translateY(-100%);
}
.team-member-bio.transformed100 {
transform: translateY(100%);
}
Upvotes: 1