Анимированные вкладки CSS

Анимация для отзывчивых вкладок (tabs) на чистом CSS

by Andrey Dobrovoi

HTML

<script src="https://fonts.googleapis.com/css?family=Open+Sans:400,300&amp;subset=latin,cyrillic"></script>
<div class="wrapper">
  <div class="tabs">
    <div class="tab">
      <input type="radio" name="css-tabs" id="tab-1" checked class="tab-switch">
      <label for="tab-1" class="tab-label">Вкладка 1</label>
      <div class="tab-content"><p>Прежде всего, повышение уровня гражданского сознания позволяет оценить значение стандартных подходов. Лишь диаграммы связей и по сей день остаются уделом либералов, которые жаждут быть объявлены нарушающими общечеловеческие нормы этики и морали. Сложно сказать, почему стремящиеся вытеснить традиционное производство, нанотехнологии формируют глобальную экономическую сеть и при этом - обнародованы. Сложно сказать, почему реплицированные с зарубежных источников, современные исследования функционально разнесены на независимые элементы. </p></div>
    </div>
    <div class="tab">
      <input type="radio" name="css-tabs" id="tab-2" class="tab-switch">
      <label for="tab-2" class="tab-label">Вкладка 2</label>
      <div class="tab-content"><p>С другой стороны, разбавленное изрядной долей эмпатии, рациональное мышление прекрасно подходит для реализации укрепления моральных ценностей. Приятно, граждане, наблюдать, как независимые государства будут ограничены исключительно образом мышления. Независимые государства и по сей день остаются уделом либералов, которые жаждут быть подвергнуты целой серии независимых исследований. Сплоченность команды профессионалов играет важную роль в формировании своевременного выполнения сверхзадачи.</p></div>
    </div>
    <div class="tab">
      <input type="radio" name="css-tabs" id="tab-3" class="tab-switch">
      <label for="tab-3" class="tab-label">Вкладка 3</label>
      <div class="tab-content"><p>Внезапно, сделанные на базе интернет-аналитики выводы формируют глобальную экономическую сеть и при этом - функционально разнесены на независимые элементы. В рамках спецификации современных...

CSS

@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,300&subset=latin,cyrillic);
* {
  box-sizing: border-box;
}
html,
body {
  width: 100%;
  height: 100%;
}
body {
  font-family: 'Open Sans', sans-serif;
  background: #2c3e50;
  color: #ecf0f1;
  line-height: 1.618em;
}
.wrapper {
  max-width: 50rem;
  width: 100%;
  margin: 0 auto;
}
.tabs {
  position: relative;
  margin: 3rem 0;
  background: #1abc9c;
  height: 14.75rem;
}
.tabs::before,
.tabs::after {
  content: "";
  display: table;
}
.tabs::after {
  clear: both;
}
.tab {
  float: left;
}
.tab-switch {
  display: none;
}
.tab-label {
  position: relative;
  display: block;
  line-height: 2.75em;
  height: 3em;
  padding: 0 1.618em;
  background: #1abc9c;
  border-right: 0.125rem solid #16a085;
  color: #fff;
  cursor: pointer;
  top: 0;
  transition: all 0.25s;
}
.tab-label:hover {
  top: -0.25rem;
  transition: top 0.25s;
}
.tab-content {
  height: auto;
  position: absolute;
  z-index: 1;
  top: 2.75em;
  left: 0;
  padding: 1.618rem;
  background: #fff;
  color: #2c3e50;
  border-bottom: 0.25rem solid #bdc3c7;
  opacity: 0;
  transition: all 0.35s;
}
.tab-switch:checked + .tab-label {
  background: #fff;
  color: #2c3e50;
  border-bottom: 0;
  border-right: 0.125rem solid #fff;
  transition: all 0.35s;
  z-index: 1;
  top: -0.0625rem;
}
.tab-switch:checked + label + .tab-content {
  z-index: 2;
  opacity: 1;
  transition: all 0.35s;
}