JSFiddle - React, Tailwind, and code Playground

by Tan

HTML

<p>Ut pellentesque, magna id congue dapibus, diam orci varius orci, quis consequat nunc ante in dolor. Sed id eros et enim imperdiet tempor in fringilla magna. Suspendisse erat sapien, vehicula a interdum id, feugiat vel erat. In hac habitasse platea dictumst. Vestibulum sit amet urna augue. Quisque aliquet massa et diam convallis, sit amet molestie sapien iaculis. Integer sit amet erat ullamcorper, viverra arcu ac, rutrum leo.</p>

<p>Ut pellentesque, magna id congue dapibus, diam orci varius orci, quis consequat nunc ante in dolor. Sed id eros et enim imperdiet tempor in fringilla magna. Suspendisse erat sapien, vehicula a interdum id, feugiat vel erat. In hac habitasse platea dictumst. Vestibulum sit amet urna augue. Quisque aliquet massa et diam convallis, sit amet molestie sapien iaculis. Integer sit amet erat ullamcorper, viverra arcu ac, rutrum leo.</p>

<section class="panel" id="p1">
<h2><a href="Javascripr:;" onclick="reveal('p1');">Some text</a></h2>
<div class="info">
<p>THIS Ut pellentesque, magna id congue dapibus, diam orci varius orci, quis consequat nunc ante in dolor. Sed id eros et enim imperdiet tempor in fringilla magna. Suspendisse erat sapien, vehicula a interdum id, feugiat vel erat. In hac habitasse platea dictumst. Vestibulum sit amet urna augue. Quisque aliquet massa et diam convallis, sit amet molestie sapien iaculis. Integer sit amet erat ullamcorper, viverra arcu ac, rutrum leo.</p>
<p>THIS Ut pellentesque, magna id congue dapibus, diam orci varius orci, quis consequat nunc ante in dolor. Sed id eros et enim imperdiet tempor in fringilla magna. Suspendisse erat sapien, vehicula a interdum id, feugiat vel erat. In hac habitasse platea dictumst. Vestibulum sit amet urna augue. Quisque aliquet massa et diam convallis, sit amet molestie sapien iaculis. Integer sit amet erat ullamcorper, viverra arcu ac, rutrum leo.</p>
<p>THIS Ut pellentesque, magna id congue dapibus, diam orci varius orci, quis consequat nunc ante in dolor. Sed id eros...

CSS

.panel, .panel_reveal {scroll-margin-top: 15px;} @media screen and (max-width: 480px) { h2 {scroll-margin-top: 15px;} }

.panel .info {background-color:red;max-height:0px;overflow:hidden;   }
.panel_reveal .info {background-color:yellow;max-height:1000px;overflow:hidden;    transition:max-height 2.5s ease;}

JavaScript

function id(x) {var y = document.getElementById(x);return y;}

function reveal(x) {
var panels = document.getElementsByClassName('panel_reveal');
for (let i = 0; i < panels.length; i++) {
panels[i].className = "panel";
}

var pageElement = document.getElementById(x);
scrollToElement(pageElement);

id(x).className = "panel_reveal";
}

function scrollToElement(pageElement) {    
    var positionX = 0,         
        positionY = 0;    

    while(pageElement != null){        
        positionX += pageElement.offsetLeft;        
        positionY += pageElement.offsetTop - 10;        
        pageElement = pageElement.offsetParent;        
        window.scrollTo(positionX, positionY);    
    }
}