I am moving through form sections by setting display none/block and fade in/out. On "p1" button click I can fade out element "Q1" & display:none, display:block "Q2" - but I can never get Q2 to fade in. It shows up with full opacity, but never with a transition.
I have tried not using display at all, instead height from 0 to 100%, but still no transition with opacity. I have tried using this with css components and changing the style class, still no opacity transition on Q2.
const Q1 = document.getElementById("Q1");
const Q2 = document.getElementById("Q2");
const p1 = document.getElementById("p1");
Q1.style.display = "block";
Q1.style.opacity = 100;
Q1.style.transition = "opacity 1.0s";
Q2.style.display = "none";
Q2.style.opacity = 0;
Q2.style.transition = "opacity 1.0s";
const f_fade1 = (() => { Q1.style.opacity = 0; });
const hide_1 = (() => { Q1.style.display = "none"; });
const unhide_2 = (() => { Q2.style.display = "block"; });
const f_unfade2 = (() => { Q2.style.opacity = 1; });
p1.addEventListener("click", function(e) {
f_fade1();
Q1.addEventListener('transitionend', function(e) {
hide_1();
unhide_2();
f_unfade2();
});
});
<div id="Q1">
<table>
<tr class="highOption">
<td>
<label class="container">
<input type="radio" id="1A" name="radio1" value="Agressive">
<span class="checkmark"></span>
</label>
</td>
<td>Aggressive<br>(99)</td>
<td>100%</td>
<td>
<div class="pie" style="background: conic-gradient(#2453B7 1000%, #44CF6C 0);"></div>
</td>
<td>55%</td>
</tr>
<tr class="highOption">
<td>
<label class="container">
<input type="radio" id="1B" name="radio1" value="Agressive/Moderate">
<span class="checkmark"></span>
</label>
</td>
<td>Moderate/Aggressive<br>(97-98)</td>
<td>80%</td>
<td>
<div class="pie" style="background: conic-gradient(#2453B7 80%, #44CF6C 0);"></div>
</td>
<td>45%</td>
</tr>
<tr class="highOption">
<td>
<label class="container">
<input type="radio" id="1C" name="radio1" value="Moderate">
<span class="checkmark"></span>
</label>
</td>
<td>Moderate<br>(93-96)</td>
<td>60%</td>
<td>
<div class="pie" style="background: conic-gradient(#2453B7 60%, #44CF6C 0);"></div>
</td>
<td>35%</td>
</tr>
<tr class="highOption">
<td>
<label class="container">
<input type="radio" id="1D" name="radio1" value="Moderate/Conservative">
<span class="checkmark"></span>
</label>
</td>
<td>Moderate/Conservative<br>(85-92)</td>
<td>40%</td>
<td>
<div class="pie" style="background: conic-gradient(#2453B7 40%, #44CF6C 0);"></div>
</td>
<td>28%</td>
</tr>
<tr class="highOption">
<td>
<label class="container">
<input type="radio" id="1E" name="radio1" value="Conservative">
<span class="checkmark"></span>
</label>
</td>
<td>Conservative<br>(51-84)</td>
<td>20%</td>
<td>
<div class="pie" style="background: conic-gradient(#2453B7 20%, #44CF6C 0);"></div>
</td>
<td>20%</td>
</tr>
<tr class="highOption">
<td>
<label class="container">
<input type="radio" id="1F" name="radio1" value="Fixed Income">
<span class="checkmark"></span>
</label>
</td>
<td>Fixed Income<br>(1-50)</td>
<td>100%</td>
<td>
<div class="pie" style="background: conic-gradient(#2453B7 0%, #44CF6C 0);"></div>
</td>
<td>10%</td>
</tr>
</table>
</div>
<div id="Q2">
<table>
<tr class="highOption">
<td>
<label class="container">
<input type="radio" id="2A" name="radio2" value="Core 0%/Explore 100%">
<span class="checkmark"></span>
</label>
</td>
<td>100%</td>
<td colspan="2">
<div class="pie" style="background: conic-gradient(#00108E 0%, #1089FF 0); align:center;"></div>
</td>
<td> 0%</td>
</tr>
<tr class="highOption">
<td>
<label class="container">
<input type="radio" id="2B" name="radio2" value="Core 25%/Explore 75%">
<span class="checkmark"></span>
</label>
</td>
<td> 75%</td>
<td colspan="2">
<div class="pie" style="background: conic-gradient(#00108E 25%, #1089FF 0); align:center;"></div>
</td>
<td> 25%</td>
</tr>
</table>
</div>
<button id="p1" type="button">Page 2 Next</button>
I am currently using no css specific to Q1 or Q2 (just table stuff)
Code Pen - you can see how the fade out / display works fine, just not the fade in