let skillList = $('#Skills>ul>li');
skillList.on('click',expandSkillList);
function expandSkillList(event){
let firstChild = $(this).children(':first');
firstChild.toggleClass('minimized');
}
#Skills{
background-color:darkgrey;
color:#fff;
}
ul{
text-align:left;
}
li ul{
height:100%;
transition:height 0.5s;
overflow-y:hidden;
}
ul.minimized{
height:0px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section id="Skills">
<h1>SKILLS</h1>
<ul>
<li>LANGUAGE
<ul class="minimized">
<li>HTML5</li>
<li>CSS3</li>
<li>JAVASCRIPT</li>
<li>PHP</li>
</ul>
</li>
<li>FRAMEWORK/LIBRARY
<ul class="minimized">
<li>JQUERY</li>
<li>BOOTSTRAP</li>
<li>REACTJS</li>
</ul>
</li>
<li>TOOL
<ul class="minimized">
<li>WORDPRESS</li>
</ul>
</li>
</ul>
</section>
This is my code snippet, and transition in above code doesn't work. It works fine if I change 100% to some pixel unit but how to do transition when I want to transition from height 0 to height 100%?
How can I transition height: 0; to height: auto; using CSS?
I read this post and tried max-height instead height too, but doesn't work
let skillList = $('#Skills>ul>li');
skillList.on('click',expandSkillList);
function expandSkillList(event){
let firstChild = $(this).children(':first');
firstChild.toggleClass('minimized');
}
#Skills{
background-color:darkgrey;
color:#fff;
}
ul{
text-align:left;
}
li ul{
max-height:100%;
transition:max-height 0.5s;
overflow-y:hidden;
}
ul.minimized{
max-height:0px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section id="Skills">
<h1>SKILLS</h1>
<ul>
<li>LANGUAGE
<ul class="minimized">
<li>HTML5</li>
<li>CSS3</li>
<li>JAVASCRIPT</li>
<li>PHP</li>
</ul>
</li>
<li>FRAMEWORK/LIBRARY
<ul class="minimized">
<li>JQUERY</li>
<li>BOOTSTRAP</li>
<li>REACTJS</li>
</ul>
</li>
<li>TOOL
<ul class="minimized">
<li>WORDPRESS</li>
</ul>
</li>
</ul>
</section>
and please, no jquery, javascript solution ONLY CSS