Журнал Тильды
/
Библиотека промптов
/
Карточки команды в аккордеоне
Команда, Аккордеон
Карточки команды в аккордеоне
Портреты команды выстроены в ряд: при наведении карточка раскрывается, фото становится цветным и появляется плашка с именем и должностью. На телефоне карточки раскрываются по нажатию.
Промпт
Вы можете скопировать промпт и вставить его в вайб блок в поле ввода. Подробнее в инструкции.
Создай аккордеон команды из 5 портретов.

Контент редактируемый: карточки сразу в HTML, фото img data-tilda-img="y", тексты data-tilda-edit="y". Без генерации через JS/массивы/innerHTML/canvas. JS только переключает состояния. В редакторе все фото и подписи доступны для правок; не перехватывай клики.

Белая секция width:100%, padding:40px 0. Контейнер max-width:1160px, width:calc(100% - 40px), по центру. Arial/Helvetica. Слева заголовок «The people behind the work»: clamp(32px,4vw,46px), bold, line-height:1.08, трекинг -.025em, #26272b, max-width:720px. Через 12px описание «Five minds shaping the direction, craft and culture of everything we build.»: 15px/1.5 regular, #5f6168, max-width:440px. До портретов clamp(24px,3vw,40px).

Десктоп ≥768px: горизонтальный flex-ряд, gap:16px, высота min(62vh,500px). Карточки radius:14px, overflow:hidden, фон #e8e8eb, min-width:44px. Закрытые flex:1.35 1 0, открытая flex-grow:5.2. Открыта третья — Daniel Frost. Hover любой карточки раскрывает её, остальные сужаются. Открыта ровно одна, уход мыши её не закрывает. Без автопереключения.

Фото заполняет карточку, object-fit:cover, object-position:50% 30%. Закрытое grayscale(1) contrast(1.04), scale(1.04); открытое цветное, contrast(1), scale(1). Flex-grow меняется 1400ms, масштаб фото 1650ms, easing cubic-bezier(.16,.84,.24,1); фильтр 1250ms ease delay 120ms.

У открытой карточки белая плашка: top/left:22px, padding:14px 18px 15px, radius:12px, мягкая тень, ширина по тексту, max-width:calc(100% - 44px). Должность 11px regular uppercase, трекинг .12em, #635bff; через 5px имя clamp(19px,1.8vw,24px), regular, line-height:1.12, трекинг -.015em, #26272b. Плашка проявляется из opacity:0, translateY(14px) scale(.965): opacity 820ms delay 330ms, transform 900ms delay 290ms. При закрытии исчезает за 520ms, transform 620ms.

Имя | должность | фото:
Sarah Chen | Chief Operating Officer | https://static.tildacdn.com/tild3637-6261-4063-a432-623130353930/Team_1.jpg
Marcus Reid | Chief Product Officer | https://static.tildacdn.com/tild3336-6264-4834-a664-303966363366/Team_4.jpg
Daniel Frost | Chief Executive Officer | https://static.tildacdn.com/tild3535-3338-4237-a665-363563666562/Team_25.jpg
Priya Sharma | Chief People Officer | https://static.tildacdn.com/tild3064-3361-4161-b834-373661383030/Team_27.jpg
James Okafor | Chief Financial Officer | https://static.tildacdn.com/tild6533-6364-4139-b539-626136666633/Team_28.jpg

768–1199px: gap:10px, высота min(56vh,420px), radius:12px, min-width:38px; плашка top/left:16px, padding:12px 15px 13px.
≤767px: padding секции 24px 0; вертикальный аккордеон, gap:8px, ширина карточек 100%, закрытая высота 82px, открытая min(64vh,460px), переход высоты 1250ms с тем же easing. Изначально открыта первая; тап раскрывает выбранную и закрывает остальные. Плашка top/left:14px, padding:11px 14px 12px, текст переносится.

Изолируй CSS/JS, обновляй aria-expanded. При resize открывай первую на телефоне, третью на десктопе. Reduced-motion: без переходов.
Скопировать промпт
Код
Вы можете скопировать код и вставить его в вайб блок в раздел код. Подробнее в инструкции.
<section class="vbc-section" aria-labelledby="vbc-heading">

<!--
CONTENT

Header
Heading
Intro

Team
Card
Photo
Role
Name
-->

<style>
.vbc-section,
.vbc-section * {
box-sizing: border-box;
}

.vbc-section {
--vb-page: #f1f1f3;
--vb-panel: #ffffff;
--vb-ink: #26272b;
--vb-muted: #5f6168;
--vb-accent: #635bff;
--vb-card-bg: #e8e8eb;
--vb-open-grow: 5.2;
--vb-closed-grow: 1.35;

--vb-grid-width: 1200px;
--vb-content-width: 1160px;
--vb-grid-gutter: 20px;

width: 100%;
padding: 40px 0;

background: #ffffff;

font-family: Arial, Helvetica, sans-serif;
}

.vbc-panel {
width:
calc(
100% -
var(--vb-grid-gutter) *
2
);

max-width:
var(--vb-content-width);

margin: 0 auto;
padding: 0;

border-radius: 0;

background: transparent;
}

.vbc-header {
margin-bottom:
clamp(24px,3vw,40px);
}

.vbc-heading {
max-width: 720px;

margin: 0 0 12px;

font-size:
clamp(32px,4vw,46px);

font-weight: 700;
line-height: 1.08;
letter-spacing: -0.025em;

color: var(--vb-ink);

text-wrap: balance;

cursor: text;
user-select: text;
-webkit-user-select: text;
}

.vbc-intro {
max-width: 440px;

margin: 0;

font-size: 15px;
font-weight: 400;
line-height: 1.5;

color: var(--vb-muted);

cursor: text;
user-select: text;
-webkit-user-select: text;
}

.vbc-row {
display: flex;
align-items: stretch;

gap: 16px;

width: 100%;
height: min(62vh,500px);
}

.vbc-card {
position: relative;

flex:
var(--vb-closed-grow)
1
0;

min-width: 44px;
min-height: 0;

overflow: hidden;

border-radius: 14px;

background: var(--vb-card-bg);

cursor: default;

transition:
flex-grow
1400ms
cubic-bezier(0.16,0.84,0.24,1);

isolation: isolate;
}

.vbc-card.vbc-card--open {
flex-grow:
var(--vb-open-grow);
}

.vbc-card__photo {
position: absolute;

inset: 0;

z-index: 0;

display: block;

width: 100%;
height: 100%;

object-fit: cover;
object-position: 50% 30%;

filter:
grayscale(1)
contrast(1.04);

transform:
scale(1.04);

transition:
transform
1650ms
cubic-bezier(0.16,0.84,0.24,1),
filter
1250ms
ease
120ms;

cursor: pointer;

user-select: none;
-webkit-user-select: none;
}

.vbc-card.vbc-card--open
.vbc-card__photo {
filter:
grayscale(0)
contrast(1);

transform:
scale(1);
}

.vbc-card__label {
position: absolute;

z-index: 2;

top: 22px;
left: 22px;

display: flex;
flex-direction: column;
align-items: flex-start;

width: max-content;
max-width:
calc(100% - 44px);

padding:
14px 18px 15px;

border-radius: 12px;

background: #ffffff;

box-shadow:
0 1px 2px rgba(20,22,30,0.06),
0 10px 28px rgba(20,22,30,0.14);

opacity: 0;

transform:
translateY(14px)
scale(0.965);

transform-origin: 0 0;

transition:
opacity
520ms
ease,
transform
620ms
cubic-bezier(0.16,0.84,0.24,1);

pointer-events: none;
}

.vbc-card.vbc-card--open
.vbc-card__label {
opacity: 1;

transform: none;

transition:
opacity
820ms
ease
330ms,
transform
900ms
cubic-bezier(0.16,0.84,0.24,1)
290ms;

pointer-events: auto;
}

.vbc-card__role {
display: block;

margin: 0 0 5px;

font-size: 11px;
font-weight: 400;
line-height: 1.2;
letter-spacing: 0.12em;
text-transform: uppercase;

color: var(--vb-accent);

cursor: text;
user-select: text;
-webkit-user-select: text;
}

.vbc-card__name {
display: block;

margin: 0;

font-size:
clamp(19px,1.8vw,24px);

font-weight: 400;
line-height: 1.12;
letter-spacing: -0.015em;

color: var(--vb-ink);

cursor: text;
user-select: text;
-webkit-user-select: text;
}

.vbc-section.vbc-single
.vbc-card {
flex-grow: 1;
}

@media (min-width: 768px) and (max-width: 1199px) {
.vbc-row {
gap: 10px;
height: min(56vh,420px);
}

.vbc-card {
min-width: 38px;
border-radius: 12px;
}

.vbc-card__label {
top: 16px;
left: 16px;

max-width:
calc(100% - 32px);

padding:
12px 15px 13px;
}
}

@media (max-width: 767px) {
.vbc-section {
padding: 24px 0;
}

.vbc-panel {
width:
calc(
100% -
var(--vb-grid-gutter) *
2
);

max-width:
var(--vb-content-width);

padding: 0;

border-radius: 0;
}

.vbc-row {
display: flex;
flex-direction: column;

gap: 8px;

height: auto;
}

.vbc-card {
flex: none;

width: 100%;
height: 82px;
min-width: 0;
min-height: 82px;

border-radius: 12px;

transition:
height
1250ms
cubic-bezier(0.16,0.84,0.24,1);
}

.vbc-card.vbc-card--open {
height:
min(64vh,460px);
}

.vbc-card__photo {
object-position: 50% 30%;
}

.vbc-card__label {
top: 14px;
left: 14px;

max-width:
calc(100% - 28px);

padding:
11px 14px 12px;
}

.vbc-card__role,
.vbc-card__name {
white-space: normal;
}
}

@media (prefers-reduced-motion: reduce) {
.vbc-card,
.vbc-card__photo,
.vbc-card__label,
.vbc-card.vbc-card--open
.vbc-card__label {
transition:
none !important;
}
}
</style>

<div class="vbc-panel">

<header class="vbc-header">
<h2 class="vbc-heading" id="vbc-heading" data-tilda-edit="y">The people behind the work</h2>

<p class="vbc-intro" data-tilda-edit="y">Five minds shaping the direction, craft and culture of everything we build.</p>
</header>

<div class="vbc-row" role="list">

<article class="vbc-card" role="listitem">
<img class="vbc-card__photo" data-tilda-img="y" src="https://static.tildacdn.com/tild3637-6261-4063-a432-623130353930/Team_1.jpg" alt="Sarah Chen, Chief Operating Officer" draggable="false">

<div class="vbc-card__label">
<p class="vbc-card__role" data-tilda-edit="y">Chief Operating Officer</p>
<p class="vbc-card__name" data-tilda-edit="y">Sarah Chen</p>
</div>
</article>

<article class="vbc-card" role="listitem">
<img class="vbc-card__photo" data-tilda-img="y" src="https://static.tildacdn.com/tild3336-6264-4834-a664-303966363366/Team_4.jpg" alt="Marcus Reid, Chief Product Officer" draggable="false">

<div class="vbc-card__label">
<p class="vbc-card__role" data-tilda-edit="y">Chief Product Officer</p>
<p class="vbc-card__name" data-tilda-edit="y">Marcus Reid</p>
</div>
</article>

<article class="vbc-card vbc-card--open" role="listitem" data-vb-lead="">
<img class="vbc-card__photo" data-tilda-img="y" src="https://static.tildacdn.com/tild3535-3338-4237-a665-363563666562/Team_25.jpg" alt="Daniel Frost, Chief Executive Officer" draggable="false">

<div class="vbc-card__label">
<p class="vbc-card__role" data-tilda-edit="y">Chief Executive Officer</p>
<p class="vbc-card__name" data-tilda-edit="y">Daniel Frost</p>
</div>
</article>

<article class="vbc-card" role="listitem">
<img class="vbc-card__photo" data-tilda-img="y" src="https://static.tildacdn.com/tild3064-3361-4161-b834-373661383030/Team_27.jpg" alt="Priya Sharma, Chief People Officer" draggable="false">

<div class="vbc-card__label">
<p class="vbc-card__role" data-tilda-edit="y">Chief People Officer</p>
<p class="vbc-card__name" data-tilda-edit="y">Priya Sharma</p>
</div>
</article>

<article class="vbc-card" role="listitem">
<img class="vbc-card__photo" data-tilda-img="y" src="https://static.tildacdn.com/tild6533-6364-4139-b539-626136666633/Team_28.jpg" alt="James Okafor, Chief Financial Officer" draggable="false">

<div class="vbc-card__label">
<p class="vbc-card__role" data-tilda-edit="y">Chief Financial Officer</p>
<p class="vbc-card__name" data-tilda-edit="y">James Okafor</p>
</div>
</article>

</div>

</div>

<script>
(function () {
'use strict';

var script =
document.currentScript;

var section =
script &&
script.closest
? script.closest('.vbc-section')
: null;

if (
!section ||
section.classList.contains('vbc-ready')
) {
return;
}

var row =
section.querySelector('.vbc-row');

if (!row) {
return;
}

var mobile =
window.matchMedia('(max-width: 767px)');

var editorMode = false;

try {
editorMode =
window.self !==
window.top;
}
catch (error) {
editorMode = true;
}

var cards = [];
var activeCard = null;
var leadCard = null;
var mutationTimer = null;
var initialized = false;

function refreshCards() {
cards =
Array.prototype.slice.call(
row.querySelectorAll('.vbc-card')
);

section.classList.toggle(
'vbc-single',
cards.length <= 1
);

if (
cards.length === 0
) {
activeCard = null;
leadCard = null;

return;
}

leadCard =
cards.find(
function (card) {
return card.hasAttribute('data-vb-lead');
}
) ||
cards[
Math.floor(
cards.length /
2
)
];

if (!initialized) {
activeCard =
mobile.matches
? cards[0]
: (
cards.find(
function (card) {
return card.classList.contains('vbc-card--open');
}
) ||
leadCard
);

initialized = true;
}
else if (
!activeCard ||
cards.indexOf(activeCard) < 0
) {
activeCard =
mobile.matches
? cards[0]
: leadCard;
}

openCard(activeCard);
}

function openCard(card) {
if (
!card ||
cards.indexOf(card) < 0
) {
return;
}

activeCard = card;

cards.forEach(
function (item) {
var isOpen =
item === card;

item.classList.toggle(
'vbc-card--open',
isOpen
);

item.setAttribute(
'aria-expanded',
isOpen
? 'true'
: 'false'
);
}
);
}

function getCard(target) {
var card =
target.closest
? target.closest('.vbc-card')
: null;

if (
!card ||
!row.contains(card)
) {
return null;
}

return card;
}

row.addEventListener(
'mouseover',
function (event) {
if (mobile.matches) {
return;
}

var card =
getCard(event.target);

if (!card) {
return;
}

var related =
event.relatedTarget;

if (
related &&
card.contains(related)
) {
return;
}

openCard(card);
}
);

row.addEventListener(
'click',
function (event) {
if (!mobile.matches) {
return;
}

var card =
getCard(event.target);

if (!card) {
return;
}

if (
editorMode &&
event.target.closest(
'[data-tilda-edit="y"],[data-tilda-img="y"]'
)
) {
return;
}

openCard(card);
}
);

if (
mobile.addEventListener
) {
mobile.addEventListener(
'change',
function (event) {
if (
cards.length === 0
) {
refreshCards();

return;
}

if (event.matches) {
openCard(cards[0]);
}
else {
openCard(leadCard || cards[0]);
}
}
);
}

if (
'MutationObserver' in window
) {
var observer =
new MutationObserver(
function (records) {
var structuralChange =
records.some(
function (record) {
return (
record.type === 'childList'
);
}
);

if (!structuralChange) {
return;
}

clearTimeout(
mutationTimer
);

mutationTimer =
setTimeout(
refreshCards,
40
);
}
);

observer.observe(
row,
{
childList: true
}
);
}

section.classList.add(
'vbc-ready'
);

refreshCards();

})();
</script>

</section>
Скопировать код
Что выбрать, промпт или код?
Копируйте промпт, если хотите получить похожий результат, но ввести информацию о своём бизнесе и задать свои требования. Например, изменить кнопки, тексты, цвета, фотографии или другие элементы.
Копируйте код, если хотите получить точно такой же блок. Чтобы его изменить, придётся отредактировать html-код.
Начните создание сайта на Тильде с простой регистрации на платформе
Made on
Tilda