JSFiddle - React, Tailwind, and code Playground
by Paqura
HTML
<section class="block-about">
<div class="block-about__wrapper">
<div class="element__wrapper">
<button class="block-about__btn about-btn__active"></button>
<div class="block-about__content about-active">
<h3 class="block-about__content_header">What Out Client Say</h3>
<p class="block-about__content_descr">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vel tempora vero, atque id omnis expedita.</p>
<hr>
<span class="block-about__content_name">Kevin Samsung</span>
<span class="block-about__content_works">CEO/Task</span>
</div>
</div>
<div class="element__wrapper">
<button class="block-about__btn"></button>
<div class="block-about__content">
<h3 class="block-about__content_header">Said For Us</h3>
<p class="block-about__content_descr">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Explicabo quod impedit, ab, vero reiciendis, iusto quis, culpa quidem sunt quas minus dignissimos ducimus sint nemo!.</p>
<hr>
<span class="block-about__content_name">Kevin Samsung</span>
<span class="block-about__content_works">CEO/Task</span>
</div>
</div>
<div class="element__wrapper">
<button class="block-about__btn"></button>
<div class="block-about__content">
<h3 class="block-about__content_header">What Out Client Say</h3>
<p class="block-about__content_descr">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vel tempora vero, atque id omnis expedita.</p>
<hr>
<span class="block-about__content_name">Kevin Samsung</span>
<span class="block-about__content_works">CEO/Task</span>
</div>
</div>
<div class="element__wrapper">
<button class="block-about__btn"></button>
<div class="block-about__content">
<h3 class="block-about__content_header">What Out Client Say</h3>
<p class="block-about__content_descr">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vel tempora vero, atque id omnis expedita.</p>
<hr>
<span...
CSS
@import "bourbon";
@import "../../prework/vars";
@import "../../prework/base";
.block-about {
height: 100%;
width: 100%;
background-color: #3b3342;
position: relative;
}
.block-about__wrapper {
width: 60%;
margin: 0 auto;
position: relative;
padding-top: 7%;
}
.block-about__btn {
max-width: 20%;
width: 8%;
max-height: 80%;
height: 10%;
background-color: #fff;
border: none;
cursor: pointer;
padding-bottom: 10%;
opacity: .2;
transition: opacity .5s ease;
}
.block-about__btn:hover {
opacity: 1;
}
.block-about__content {
display: none;
}
@keyframes mymove {
0% {top: -1000px;}
100% { top: 45%;}
}
.about-active {
display: block;
position: absolute;
top: 25%;
right: 0;
width: 70%;
float: right;
animation: mymove .5s ease-in-out;
}
.about-btn__active {
opacity: 1;
background-image: url('../img/about_one.png');
background-repeat: no-repeat;
max-width: 20%;
width: 8%;
max-height: 30%;
height: 10%;
background-color: transparent;
border: none;
cursor: pointer;
padding-bottom: 10%;
}
Babel + JSX
"use strict";
const items = document.getElementsByClassName('block-about__btn');
for (let i = 0; i < items.length; i++) {
let key = items[i];
key.addEventListener('click', function(e) {
e.preventDefault();
let classContentLength = this.nextElementSibling.classList.length;
let classBtnLength = this.classList.length;
if (classBtnLength <= 1 || classContentLength <= 1) {
this.classList.add("about-btn__active");
this.nextElementSibling.classList.add('about-active');
} else {
this.classList.remove("about-btn__active");
this.nextElementSibling.classList.remove('about-active');
}
});
};