content logo

React Accordions:

React Accordion with Title Change on Click

In this post, you will see a simple accordion. This accordion is small and not full width. By clicking on the title, its content will be displayed under the title. The important point in this accordion is to change the title of the accordion. Clicking on the accordion changes its title and displays its content at the same time. This accordion uses React.

#

Accordion with Text Change

#

Accordion Click Effect

#

React Accordion with Button

#

Free HTML Accordion

<!-- This script got from frontendfreecode.com -->
<div id="root"></div>
<div id="root2"></div>
<div id="root3"></div><a style="font-size: 8pt; text-decoration: none" target="_blank" href="http://frontendfreecode.com">Free Frontend</a>
                                                                            
body {
    height: 100vh;
    margin-top: 0px;
    padding-top: 20px;
    display: grid;
    place-items: center;
    background-color: #8FBC94;
    align-content: center;
}
.box {
  width: 300px;
}
.box h1 {
  font-size: 20px;
  margin: 0 0 0px 0;
}
function Collapse(props) {
    const [isCollapsed, setIsCollapsed] = React.useState(props.collapsed);
    const style = {
        collapsed: {
            display: 'none'
        },
        expanded: {
            display: 'block'
        },
        buttonStyle: {
            display: 'block',
            width: '100%'
        }
    };
    return /*#__PURE__*/(
        React.createElement("div", null, /*#__PURE__*/
            React.createElement("button", { style: style.buttonStyle, onClick: () => setIsCollapsed(!isCollapsed) },
                isCollapsed ? 'Show' : 'Hide', " content"), /*#__PURE__*/
            React.createElement("div", {
                className: "collapse-content",
                style: isCollapsed ? style.collapsed : style.expanded,
                "aria-expanded": isCollapsed
            },
                props.children)));
}
ReactDOM.render( /*#__PURE__*/React.createElement(Collapse, null, /*#__PURE__*/
    React.createElement("h1", null, "This is a collapse"), /*#__PURE__*/
    React.createElement("p", null, "Hello world!")),
    document.getElementById("root"));
ReactDOM.render( /*#__PURE__*/React.createElement(Collapse, null, /*#__PURE__*/
    React.createElement("h1", null, "This is a collapse"), /*#__PURE__*/
    React.createElement("p", null, "Hello world!")),
    document.getElementById("root2"));
    ReactDOM.render( /*#__PURE__*/React.createElement(Collapse, null, /*#__PURE__*/
    React.createElement("h1", null, "This is a collapse"), /*#__PURE__*/
    React.createElement("p", null, "Hello world!")),
    document.getElementById("root3"));
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.4/css/bulma.min.css'>
<script src='https://cdnjs.cloudflare.com/ajax/libs/react/18.1.0-next-ebd7ff65b-20220401/umd/react.production.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.1.0-next-ebd7ff65b-20220401/umd/react-dom.production.min.js'></script>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- This script got from frontendfreecode.com -->

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/normalize/5.0.0/normalize.min.css">
<link rel='stylesheet' href='https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.4/css/bulma.min.css'>
<script src='https://cdnjs.cloudflare.com/ajax/libs/react/18.1.0-next-ebd7ff65b-20220401/umd/react.production.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/react-dom/18.1.0-next-ebd7ff65b-20220401/umd/react-dom.production.min.js'></script>
<style>
body {
    height: 100vh;
    margin-top: 0px;
    padding-top: 20px;
    display: grid;
    place-items: center;
    background-color: #8FBC94;
    align-content: center;
}
.box {
  width: 300px;
}
.box h1 {
  font-size: 20px;
  margin: 0 0 0px 0;
}
</style>

</head>
<body>
<div id="root"></div>
<div id="root2"></div>
<div id="root3"></div><div id="bcl"><a style="font-size:8pt;text-decoration:none;" href="http://www.devanswer.com">Free Frontend</a></div>
<script>
function Collapse(props) {
    const [isCollapsed, setIsCollapsed] = React.useState(props.collapsed);
    const style = {
        collapsed: {
            display: 'none'
        },
        expanded: {
            display: 'block'
        },
        buttonStyle: {
            display: 'block',
            width: '100%'
        }
    };
    return /*#__PURE__*/(
        React.createElement("div", null, /*#__PURE__*/
            React.createElement("button", { style: style.buttonStyle, onClick: () => setIsCollapsed(!isCollapsed) },
                isCollapsed ? 'Show' : 'Hide', " content"), /*#__PURE__*/
            React.createElement("div", {
                className: "collapse-content",
                style: isCollapsed ? style.collapsed : style.expanded,
                "aria-expanded": isCollapsed
            },
                props.children)));
}
ReactDOM.render( /*#__PURE__*/React.createElement(Collapse, null, /*#__PURE__*/
    React.createElement("h1", null, "This is a collapse"), /*#__PURE__*/
    React.createElement("p", null, "Hello world!")),
    document.getElementById("root"));
ReactDOM.render( /*#__PURE__*/React.createElement(Collapse, null, /*#__PURE__*/
    React.createElement("h1", null, "This is a collapse"), /*#__PURE__*/
    React.createElement("p", null, "Hello world!")),
    document.getElementById("root2"));
    ReactDOM.render( /*#__PURE__*/React.createElement(Collapse, null, /*#__PURE__*/
    React.createElement("h1", null, "This is a collapse"), /*#__PURE__*/
    React.createElement("p", null, "Hello world!")),
    document.getElementById("root3"));
</script>

</body>
</html>
Preview