JSFiddle - React, Tailwind, and code Playground
by Petr Haluza
HTML
<div class="accordion">
<div class="accordion__item">
<div class="accordion__title">
<div class="accordion__arrow"><span>+</span></div>
<span class="accordion__title-text">Akordeon 1</span>
</div>
<div class="accordion__content">
Bláboly bláboly
</div>
</div><!-- /acc item -->
<div class="accordion__item">
<div class="accordion__title">
<div class="accordion__arrow"><span>+</span></div>
<span class="accordion__title-text">Akordeon 2</span>
</div>
<div class="accordion__content">
Další bláboly bláboly
</div>
</div><!-- /acc item -->
</div>
CSS
/*-------------------------------------*/
.accordion__item {
margin: 5px auto;
}
.accordion__item .accordion__title {
position: relative;
display: block;
padding: 13px 60px 15px 13px;
margin-bottom: 2px;
color: #202020;
font-size: 28px;
text-decoration: none;
background-color: #eaeaea;
border-radius: 3px;
-webkit-transition: background-color 0.2s;
transition: background-color 0.2s;
cursor: pointer;
}
.accordion__item .accordion__title:hover {
background-color: #e5e4e4;
transition: all 0.5s ease-out;
}
.accordion__item .accordion-active {
background-color: #e5e4e4;
}
.accordion__item .accordion__arrow {
position: absolute;
top: 13px; right: 10px;
display: inline-block;
vertical-align: middle;
width: 30px;
height: 30px;
text-align: center;
color: #fff;
line-height: 30px;
font-size: 20px;
font-weight: 700;
margin-right: 5px;
background-color: #c9c9c9;
border-radius: 50%;
-webkit-transition: all 0.2s ease-out;
transition: all 0.2s ease-out;
}
.accordion__item .accordion-active .accordion__arrow {
transform: rotate(225deg);
}
.accordion__item .accordion__content {
padding: 30px;
margin-bottom: 2px;
font-size: 14px;
display: none;
background-color: #f3f3f3;
}
/*-------------------------------------*/
JavaScript
$(function() {
//BEGIN
$(".accordion__title").on("click", function(e) {
e.preventDefault();
var $this = $(this);
if (!$this.hasClass("accordion-active")) {
$(".accordion__content").slideUp(400);
$(".accordion__title").removeClass("accordion-active");
}
$this.toggleClass("accordion-active");
$this.next().slideToggle();
});
//END
});