Таблица цен с переключателем

Таблица цен — самый простой способ поделиться информацией с потенциальными клиентами и объяснить различия в ваших тарифных планах. В этом уроке приведено решение для создания таблицы цен с переключателем на чистом CSS, с помощью которого в одном блоке можно отобразить преимущества годовой оплаты по сравнению с ежемесячной.

Перейти на страницу с примером

Радио-кнопка <input type="radio"> позволяет выбрать одно значение из нескольких. Переключить состояние можно не только с помощью элемента <input>, но и с помощью связанного с ним <label>. Когда радио-кнопка нажата, с помощью псевдокласса :checked и сестринских селекторов + и ~ можно задать поведение нижестоящих элементов, когда отжата — вернуть их в исходное состояние.

<div class="tabs">
   <input id="tab1" type="radio" name="tabs" checked>
   <label for="tab1">Оплата месяц</label>
   <input id="tab2" type="radio" name="tabs" >
   <label for="tab2">Оплата год</label>
   <span class="switch"></span>

   <section id="content1">
      <div class="pricing-wrapper">
         <div class="pricing-tables">
            <div class="pricing-item">
               <div class="item-inner">
                  <div class="item-header">
                     <div class="title">
                        <b>Статичный сайт</b>
                        <span>Выбор пользователей</span>
                     </div>
                     <div class="price">
                        <b>99 ₽</b><span>в месяц</span>
                     </div>
                  </div>
                  <ul class="features">
                     <li>1.5 ГБ SSD</li>
                     <li>1 сайт</li>
                     <li>Без PHP и БД</li>
                  </ul>
                  <a href="" class="pricing-button">Выбрать</a>
               </div>
            </div>
            <div class="pricing-item">
               <div class="item-inner">
                  <div class="item-header">
                     <div class="title">
                        <b>Быстрый сайт</b>
                        <span>Оптимальный выбор</span>
                     </div>
                     <div class="price">
                        <b>159 ₽</b><span>в месяц</span>
                     </div>
                  </div>
                  <ul class="features">
                     <li>7 ГБ SSD</li>
                     <li>1 сайт</li>
                     <li>1 база данных</li>
                  </ul>
                  <a href="" class="pricing-button">Выбрать</a>
               </div>
            </div>
            <div class="pricing-item">
               <div class="item-inner">
                  <div class="item-header">
                     <div class="title">
                        <b>5 быстрых сайтов</b>
                        <span>Лучшее предложение</span>
                     </div>
                     <div class="price">
                        <b>199 ₽</b><span>в месяц</span>
                     </div>
                  </div>
                  <ul class="features">
                     <li>10 ГБ SSD</li>
                     <li>5 сайт</li>
                     <li>5 баз данных</li>
                  </ul>
                  <a href="" class="pricing-button">Выбрать</a>
               </div>
            </div>
         </div>
      </div>
   </section>

   <section id="content2">
      <div class="pricing-wrapper">
         <div class="pricing-tables">
            <div class="pricing-item">
               <div class="item-inner">
                  <div class="item-header">
                     <div class="title">
                        <b>Статичный сайт</b>
                        <span>Выбор пользователей</span>
                     </div>
                     <div class="price">
                        <b>79 ₽</b><span>в месяц</span>
                     </div>
                  </div>
                  <ul class="features">
                     <li>1.5 ГБ SSD</li>
                     <li>1 сайт</li>
                     <li>Без PHP и БД</li>
                  </ul>
                  <a href="" class="pricing-button">Выбрать</a>
               </div>
            </div>
            <div class="pricing-item">
               <div class="item-inner">
                  <div class="item-header">
                     <div class="title">
                        <b>Быстрый сайт</b>
                        <span>Оптимальный выбор</span>
                     </div>
                     <div class="price">
                        <b>139 ₽</b><span>в месяц</span>
                     </div>
                  </div>
                  <ul class="features">
                     <li>7 ГБ SSD</li>
                     <li>1 сайт</li>
                     <li>1 база данных</li>
                  </ul>
                  <a href="" class="pricing-button">Выбрать</a>
               </div>
            </div>
            <div class="pricing-item">
               <div class="item-inner">
                  <div class="item-header">
                     <div class="title">
                        <b>5 быстрых сайтов</b>
                        <span>Лучшее предложение</span>
                     </div>
                     <div class="price">
                        <b>149 ₽</b><span>месяц</span>
                     </div>
                  </div>
                  <ul class="features">
                     <li>10 ГБ SSD</li>
                     <li>5 сайт</li>
                     <li>5 баз данных</li>
                  </ul>
                  <a href="" class="pricing-button">Выбрать</a>
               </div>
            </div>
         </div>
      </div>
   </section>
</div>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+Display:wght@400;500&display=swap');

* {
   margin: 0;
   padding: 0;
   box-sizing: border-box;
}

body {
   background: #EFF7FE;
   color: #080515;
   font-family: 'Noto Sans Display', sans-serif;
   line-height: 1;
}

.tabs {
   position: relative;
   text-align: center;
}

.tabs input[type=radio] {
   display: none;
}

.tabs label {
   position: relative;
   z-index: 1;
   display: inline-block;
   width: 130px;
   height: 30px;
   line-height: 30px;
   color: white;
   font-size: 14px;
   cursor: pointer;
}

.switch {
   position: absolute;
   top: 0;
   left: 50%;
   height: 30px;
   width: 130px;
   background: #251349;
   border-radius: 40px;
   transform: translateX(-130px);
   transition: transform .5s;
}

.tabs section {
   display: none;
   padding: 40px 0 0;
   animation: scale .7s ease-in-out;
}

@keyframes scale {
   0% {
      transform: scale(0.9);
      opacity: 0;
   }

   50% {
      transform: scale(1.01);
      opacity: 0.5;
   }

   100% {
      transform: scale(1);
      opacity: 1;
   }
}

.tabs #tab1:checked~#content1,
.tabs #tab2:checked~#content2 {
   display: block;
}

.tabs input[type=radio]:checked+label+.switch {
   color: white;
}

.tabs input[type=radio]:not(:checked)+label {
   color: #080515;
}

.tabs input[type="radio"]:checked+label+.switch,
.tabs input[type="radio"]:checked+label:nth-of-type(n)+.switch {
   transform: translateX(0);
}

.item-inner {
   padding: 30px 20px;
   border-radius: 10px;
   background: white;
   box-shadow: 0 2px 40px rgba(47, 43, 50, .2);
}

.pricing-tables .pricing-item:nth-child(2) .item-inner {
   background: #251349;
   color: white;
}

.item-header {
   display: flex;
   justify-content: space-between;
   align-items: center;
   text-align: left;
   padding-bottom: 20px;
   margin-bottom: 20px;
   border-bottom: 1px solid #D7D9DB;
}

.title *,
.price * {
   display: block;
}

.title b,
.price b {
   font-size: 18px;
   margin-bottom: 8px;
   font-weight: 500;
}

.title span,
.price span {
   font-size: 12px;
   color: #9c9ba1;
}

.price {
   padding: 8px 10px;
   border-radius: 6px;
   background: #EFF7FE;
}

.pricing-tables .pricing-item:nth-child(2) .item-header {
   border-bottom: 1px solid #222A3E;
}

.pricing-tables .pricing-item:nth-child(2) .price {
   background: #3F286B;
}

.pricing-tables .pricing-item:nth-child(2) .price span {
   color: rgba(255, 255, 255, 0.4);
}

.features {
   list-style: none;
   text-align: left;
   margin-bottom: 30px;
}

.features li {
   margin-bottom: 10px;
   font-size: 14px;
}

.features li:before {
   content: "\e87f";
   display: inline-block;
   font-family: Linearicons-Free;
   speak: none;
   font-style: normal;
   font-weight: 400;
   font-variant: normal;
   text-transform: none;
   line-height: 1;
   -webkit-font-smoothing: antialiased;
   margin-right: 5px;
}

.pricing-button {
   text-decoration: none;
   background: #FF7556;
   display: block;
   font-size: 14px;
   color: white;
   height: 46px;
   line-height: 46px;
   border-radius: 6px;
   text-align: center;
   transition: .3s linear;
}

.pricing-button:hover {
   background: #cc2500;
}

@media(max-width:959px) {
   .pricing-item {
      width: 350px;
      margin: 0 auto 40px;
   }
}

@media(min-width:960px) {
   .tabs section {
      padding: 50px 0 40px;
   }

   .pricing-tables {
      display: flex;
      margin: 0 -10px;
   }

   .pricing-item {
      width: 33.333333333%;
      padding: 0 10px;
   }
}

@media(min-width:1120px) {
   .pricing-wrapper {
      width: 100%;
      max-width: 1060px;
      margin: 0 auto;
   }
}

Поделиться: