Простые гибкие таблицы цен, в 3 разных стилях и с оживленной анимацией при переключении на разные планы.
Готовая таблица цен является одним из тех ресурсов, которые имеются в нашем наборе инструментов. Они не являются особо сложными с точки зрения дизайна и удобства пользователей, но они представляют собой ключевой раздел нашей веб-страницы: именно там потенциальный клиент принимает меры.
Мы собрали легко настраиваемую таблицу ценообразования в 3 разных стилях. Кроме того, мы включили наш популярный фильтр контента Bouncy как переход при переключении с одного плана на другой.
На небольших устройствах мы использовали новый подход: вместо того, чтобы перечислять все функции по вертикали, - которые заставили бы пользователя прокручивать много, чтобы пройти за пределы ценового сегмента, мы перечислили их по горизонтали. Таким образом мы экономим много места; Пользователи могут сразу сравнить все цены, и они могут погрузиться глубже в функции, если они заинтересованы.
Создание структуры
HTML структурирован в 2 блока: div.cd-pricing-switcher
, содержащий фильтр, и ul.cd-pricing-list
, содержащий таблицы ценообразования. Внутри каждого элемента списка .cd-pricing-list
мы вложили второй элемент ul
(тот, который вращается), содержащий таблицы цен в качестве элементов списка.
Каждая таблица ценообразования составлена из заголовка .cd-pricing
(содержащего название и цену плана), тела .cd-pricing
(содержащего функции плана) и .cd-price-footer
(содержащего кнопку действия).
<div class="cd-pricing-container">
<div class="cd-pricing-switcher">
<p class="fieldset">
<input type="radio" name="duration" value="monthly" id="monthly" checked>
<label for="monthly">Monthly</label>
<input type="radio" name="duration" value="yearly" id="yearly">
<label for="yearly">Yearly</label>
<span class="cd-switch"></span>
</p>
</div> <!-- .cd-pricing-switcher -->
<ul class="cd-pricing-list">
<li>
<ul class="cd-pricing-wrapper">
<li data-type="monthly" class="is-visible">
<header class="cd-pricing-header">
<h2>Basic</h2>
<div class="cd-price">
<span class="cd-currency">$</span>
<span class="cd-value">30</span>
<span class="cd-duration">mo</span>
</div>
</header> <!-- .cd-pricing-header -->
<div class="cd-pricing-body">
<ul class="cd-pricing-features">
<li><em>256MB</em> Memory</li>
<!-- other features here -->
</ul>
</div> <!-- .cd-pricing-body -->
<footer class="cd-pricing-footer">
<a class="cd-select" href="https://s-sd.ru">Select</a>
</footer> <!-- .cd-pricing-footer -->
</li>
<li data-type="yearly" class="is-hidden">
<!-- pricing table content here -->
</li>
</ul> <!-- .cd-pricing-wrapper -->
</li>
<li class="cd-popular">
<ul class="cd-pricing-wrapper">
<li data-type="monthly" class="is-visible">
<!-- pricing table content here -->
</li>
<li data-type="yearly" class="is-hidden">
<!-- pricing table content here -->
</li>
</ul>
</li> <!-- .cd-pricing-wrapper -->
<li>
<ul class="cd-pricing-wrapper">
<li data-type="monthly" class="is-visible">
<!-- pricing table content here -->
</li>
<li data-type="yearly" class="is-hidden">
<!-- pricing table content here -->
</li>
</ul> <!-- .cd-pricing-wrapper -->
</li>
</ul> <!-- .cd-pricing-list -->
</div> <!-- .cd-pricing-container -->
Добавление стиля
На небольших устройствах .cd-pricing-footer
находится в позиции: абсолютная и помещается над заголовочным файлом .cd-price
, чтобы покрыть его (мы присвоили одинаковый размер обоим элементам). Кнопка действия имеет display: block
и height: 100%
, так что он имеет такое же измерение нижнего колонтитула таблицы (события pointer-events: none
назначенный заголовку .cd-pricing-header
, обеспечивает возможность нажатия кнопки).
В .cd-pricing-body
есть overflow-x: auto
, чтобы скрыть часть элемента ul.cd-pricing-features
- ширина которого может быть выше.
.cd-pricing-header {
height: 80px;
pointer-events: none;
}
.cd-pricing-body {
overflow-x: auto;
/* smooth scrolling on touch devices */
-webkit-overflow-scrolling: touch;
}
.cd-pricing-footer {
position: absolute;
top: 0;
left: 0;
height: 80px;
width: 100%;
}
.cd-select {
display: block;
height: 100%;
/* hide button text on mobile */
overflow: hidden;
text-indent: 100%;
white-space: nowrap;
color: transparent;
}
На настольных устройствах (ширина окна просмотра более 1170 пикселей) css довольно прост (вы можете найти дополнительные комментарии в scss / css файле для сложных деталей).
Одно важное замечание: мы создали 3 класса для настройки таблиц цен (все классы должны быть применены к элементу .cd-pricing-container
):
- Cd-full-width - установить ширину: 100% к контейнеру
.cd-pricing
, сmax-width: none
(по умолчанию мы устанавливаем ширину: 90% иmax-width: 1170px
); - Cd-tables-have-margin - добавить правое поле для таблиц цен;
- Cd-secondary-theme - сочетание различных цветовых тем;
В нашей демонстрации мы создали 3 разных стиля таблиц: первый - по умолчанию, второй - добавление к контейнеру .cd-pricing
как классов .cd-full-width
, так и .cd-second-theme
, а последнее добавление Класс .cd-tables-have-margin
.
Одно важное замечание: стили, связанные с этими 3-мя классами, отличаются только на настольных устройствах.
Дополнительное примечание о анимации: как указано в комментариях, если у вас есть только 2 варианта переключения (в нашем демо «Ежемесячно» и «Ежегодно»), более естественным является инвертировать направление вращения при переключении с одного варианта на другой. По этой причине мы создали класс .cd-bounce-invert
, который будет добавлен в список расценок ul.cd
. Если у вас есть более двух вариантов, просто удалите этот класс, и вращение сохранит направление.
Обработка событий
Мы использовали jQuery для удаления тонкого градиента с правой стороны тела таблицы калькуляции (только для мобильной версии), который мы добавили, чтобы указать, что в конце прокрутки есть больше контента.