MeDo

AI 카드 생성기.

카드에 무엇이 담기는지 설명하면 MeDo가 컨테이너 전체를 생성합니다 — 미디어·헤더·본문·푸터 슬롯, 호버 엘리베이션, aspect-ratio로 고정된 이미지, 그리드 내 동일한 높이, 그리고 어울리는 스켈레톤 상태까지.

카드
카드

카드는 보더가 있는 상자가 아니라 레이아웃 계약입니다

둥근 모서리와 그림자는 1분이면 작성할 수 있어서 카드는 사소한 것으로 취급됩니다. 정작 깨지는 것은 카드 주변의 모든 것입니다. 한 카드의 제목은 두 줄, 옆 카드는 네 줄이라 푸터가 더 이상 정렬되지 않습니다. 예상치 못한 비율의 이미지가 도착해 페인트 후에 그리드가 리플로우됩니다. 누군가 카드 전체를 클릭 가능하게 만들면서 "저장" 버튼을 앵커 안에 갇히게 해 유효하지 않은 HTML과 접근할 수 없는 컨트롤이 생깁니다. 이는 카드 하나의 속성이 아니라 집합 안의 카드가 가진 속성입니다. 그래서 컨테이너, 미디어 제약, 푸터 정렬, 로딩 상태를 하나의 단위로 생성하는 것이 div 하나를 잘 스타일링하는 것보다 유용합니다.

템플릿 6개

생성할 수 있는 카드 템플릿

모든 템플릿은 스크린샷이 아니라 실제 프롬프트입니다. 어떤 AI 에디터에든 붙여넣거나 MeDo에서 실행해 React + Tailwind 코드를 그대로 받으세요.

BasicSlots + Skeleton

Four-Slot Card With a Matching Skeleton

The container everything else extends. Generating the skeleton in the same pass is what keeps the two the same size six months later.

Create a card component with four optional slots: media at the top, a header with title and subtitle, a body for description text, and a footer for actions or metadata. White surface, 12px radius, 1px light grey border, 20px internal padding. Make the card a flex column with the body allowed to grow so the footer sits at the bottom and cards in a row stay equal height regardless of title wrapping. Lock the media to a 16:9 ratio with object-fit cover and explicit dimensions. Include a skeleton variant whose grey blocks match the real layout exactly — same media ratio, same line count, same footer height — so nothing shifts when data arrives.

MeDo에서 시도하기
CommerceProduct Card

Image, Price and Add to Cart

The hardest card to get right because it needs a whole-card link and a nested button. Wrap the card in an anchor and the button becomes invalid markup and unreachable.

Create a product card: a 1:1 image with object-fit cover and a reserved box, an optional discount badge in the top-left, the product name over two lines with a line clamp, a price row with the current price and a struck-through original, a star rating with a review count, and an Add to cart button in the footer. Make the whole card navigate to the product page by putting the anchor on the product name and stretching it over the card with an absolutely positioned pseudo-element, then raise the cart button above it with a higher z-index so both targets work. Add an out-of-stock state that dims the image and swaps the button for a Notify me control.

MeDo에서 시도하기
EditorialArticle Card

Cover Image, Headline and Byline

One headline wraps to two lines and its neighbor to four. Without a growing body the bylines end up on different baselines and the whole index looks unfinished.

Create an article card: a 16:9 cover image with a reserved aspect box, a category badge, a headline clamped to two lines, an excerpt clamped to three, and a footer row with an author avatar, author name, publish date and read time. Make it a flex column with the excerpt allowed to grow so bylines align across a row of cards with different headline lengths. Put the anchor on the headline and stretch it across the card so the accessible name is the headline rather than "read more". Add a featured variant that spans two grid columns with the media on the left and the text on the right.

MeDo에서 시도하기
DashboardMetric Card

Stat Card With Delta and Sparkline

No media, all typography. The number is the component, so lock its width with tabular figures or the whole row twitches on every poll.

Create a metric card for a dashboard: a small uppercase label, a large numeric value using tabular figures so the width does not jitter as the number updates, a change indicator showing the delta with an arrow and a green or red tint, and an optional sparkline across the bottom. Never rely on color alone for direction — pair the tint with an arrow glyph and a visually hidden "up" or "down". Reserve the sparkline height even before data arrives. Include a loading variant that shows a shimmering block at the exact value height, and an empty state reading "No data yet" rather than a zero that looks like a real measurement.

MeDo에서 시도하기
ConversionPricing Card

Plan Card With a Highlighted Tier

Three cards that must end on one line. If the highlighted tier gets a thicker border, compensate with padding or it will sit one pixel taller than its neighbors.

Create a pricing card: plan name, price with a billing period suffix, a one-line positioning sentence, a feature list with check icons, and a call-to-action button pinned to the bottom. Add a highlighted variant with a thicker border, a "Most popular" badge overlapping the top edge, and reduced internal padding so the extra border width does not make it taller than the adjacent cards. Make the card a flex column with the feature list growing, so buttons across three plans of different feature counts land on the same line. Keep the price in tabular figures and mark the currency and period as separate spans for annual and monthly toggling.

MeDo에서 시도하기
InteractiveClickable Card

Whole-Card Link With Nested Controls

The pattern that fixes the most common card bug. One stretched anchor, real controls layered above it, no interactive element nested inside another.

Create a fully clickable card that stays valid HTML: put a single anchor on the card title and expand it over the whole card with an absolutely positioned ::after pseudo-element covering the container, rather than wrapping the card in an anchor. Give the container position relative and any nested control — a bookmark toggle, an overflow menu, a secondary link — a higher z-index plus position relative so it remains clickable. Drive the hover elevation from the container so hovering anywhere raises the card, and mirror it on focus-within so keyboard users see the same state. Skip the translate transform when prefers-reduced-motion is set and keep the shadow change.

MeDo에서 시도하기

카드 커스터마이즈 방법

미디어 aspect-ratio를 고정하세요

이미지 영역에 명시적인 aspect-ratio와 object-fit cover를 요청하세요. 예약된 박스가 없으면 크기가 다른 이미지가 로드 후 카드를 리사이즈합니다. 이는 Cumulative Layout Shift에 직접 타격을 주며 카드 그리드에서 가장 눈에 띄는 결함입니다.

푸터를 하단에 고정하세요

카드를 플렉스 컬럼으로 두고 본문이 늘어날 수 있게 지정하면, 제목이 서로 다른 줄 수로 줄바꿈되어도 한 행 전체에서 푸터가 정렬됩니다. 들쭉날쭉한 액션 행은 깔끔한 그리드를 미완성으로 보이게 하는 가장 빠른 길입니다.

클릭 전략을 하나만 선택하세요

카드 전체가 링크이거나 내부 요소가 링크여야 하며 둘 다는 안 됩니다. 카드 전체를 클릭 가능하게 하려면 제목에 단일 앵커를 두고 절대 위치 가상 요소로 카드 위에 펼치세요. 접근성 이름이 의미를 유지하면서 그 위에 중첩 컨트롤을 둘 여유도 생깁니다.

스켈레톤을 카드와 함께 요청하세요

회색 블록이 미디어 비율과 줄 수를 포함해 실제 치수와 일치하는 로딩 변형을 요청하세요. 크기가 다른 스켈레톤은 의미가 없습니다. 데이터가 도착하는 순간 레이아웃이 여전히 튀기 때문입니다.

카드 컴포넌트를 사용하는 사람

이커머스 상품 그리드

정사각형 상품 이미지, 이름, 가격, 평점 행, 그리고 푸터의 "장바구니에 추가" 버튼이 상품 페이지로 향하는 카드 전체 링크 위에 놓입니다. 중첩 없이 두 타깃이 모두 동작합니다.

블로그 또는 리소스 목록

16:9 커버 이미지, 카테고리 배지, 두 줄로 줄바꿈되는 헤드라인, 요약, 그리고 헤드라인 길이와 무관하게 행 전체에서 정렬되는 작성자·읽는 시간 푸터.

SaaS 대시보드

미디어가 전혀 없는 지표 카드: 레이블, 큰 숫자, 변화 표시, 스파크라인. 쿼리가 완료될 때까지 첫 페인트에서는 스켈레톤으로 렌더링됩니다.

가격 또는 플랜 비교

높이가 같은 세 개의 카드, 그중 하나는 두꺼운 보더와 배지로 강조되며, 각 카드가 하단에 고정된 CTA 버튼으로 끝나 버튼들이 한 줄에 놓입니다.

웹사이트 유형별 카드 패턴

같은 카드 컴포넌트를 게시되는 사이트 유형에 맞춰 조정합니다.

01 / 06

SaaS Dashboard Cards

Metric cards with no media at all, so the number carries the whole layout. Use tabular figures and reserve the value height, because a card grid fed by a polling query will otherwise reflow every few seconds. Borders beat shadows here — twelve elevated cards on one screen read as noise rather than hierarchy.

카드 스타일과 변형

페이지의 나머지 부분과 어울리는 변형을 골라 바로 생성하세요.

01 / 06

Bordered Card

A 1px border, no shadow. The right default for dense interfaces — tables, dashboards, settings panels — where every card needs an edge but none of them should appear to float. Keep the border one step darker than the divider color or the card dissolves into the page.

React, Next.js, Vue, Svelte에서의 카드

React, Next.js, Vue 3, SvelteKit, Astro 또는 순수 HTML — 같은 카드을 여섯 가지 방식으로 넣을 수 있습니다.

01 / 06

React Card

Expose the slots as subcomponents — Card.Header, Card.Body, Card.Footer — rather than as props, so a metric card can omit the media without passing null. No state means no hooks, which is what lets you render sixty of them in a grid.

src/components/Card.tsx

export function Card({ className, ...props }) {
  return (
    <div
      className={cn(
        'flex flex-col rounded-xl border bg-white p-5',
        'transition-shadow hover:shadow-lg',
        className
      )}
      {...props}
    />
  )
}
Card.Footer = ({ children }) => <div className="mt-auto pt-4">{children}</div>

카드을 프로젝트에 추가하는 방법

카드 템플릿을 고르고 프로덕션에 배포하기까지 네 단계.

01~30s

Pick a Card Template

Scan the six templates and start from the content you are displaying — product with a cart button, article with a byline, metric with a delta, or pricing tier.

02~10s

Copy the Prompt

Take the prompt into MeDo, Lovable, Bolt, v0 or Cursor. Say what grid the card lives in before you run it, because the column count is what determines the media ratio and the equal-height rules.

03~1min

Generate and Refine

You get React + Tailwind back with a live preview. Follow up in plain English — "clamp the title to two lines", "swap the shadow for a border", "add the skeleton" — instead of editing the flex utilities by hand.

04~2min

Drop It Into the Grid

Render it inside a CSS grid so rows stretch to match, then check a row where one title wraps and another does not. That is the case that reveals whether the footer is actually pinned.

카드에 대한 자주 묻는 질문

AI로 카드 컴포넌트를 생성하는 방법은?

카드에 무엇이 담기고 어떻게 쓰일지 설명하세요. 예를 들어 "정사각형 이미지, 제목, 가격, 장바구니 푸터가 있는 상품 카드를 3열 그리드로"처럼요. MeDo는 슬롯 구조, 미디어 제약, 호버 상태를 함께 생성합니다. 그리드를 언급하는 것이 중요합니다. 그것이 동일 높이와 aspect-ratio 규칙을 결정하기 때문입니다.

카드 컴포넌트는 어떤 부분으로 구성되나요?

네 영역이 거의 모든 경우를 커버합니다: 선택적 미디어 영역, 제목과 보조 레이블이 있는 헤더, 설명 콘텐츠용 본문, 액션이나 메타데이터용 푸터입니다. 필수 마크업이 아닌 선택적 슬롯으로 다루면 하나의 컴포넌트가 상품 카드, 아티클 카드, 지표 카드를 각각의 변형 없이 모두 담당할 수 있습니다.

카드 전체를 클릭 가능하게 만들 수 있나요?

가능하지만, 버튼이나 다른 링크가 포함된 카드를 앵커로 감싸지 마세요. 인터랙티브 요소의 중첩은 유효하지 않은 HTML이며 브라우저 동작도 예측할 수 없습니다. 앵커를 제목에 두고 절대 위치 가상 요소로 카드 전체에 펼친 뒤, 중첩된 컨트롤은 더 높은 z-index로 그 위에 올리세요.

그리드에서 카드 높이를 같게 만드는 방법은?

CSS 그리드를 사용하면 같은 행의 아이템이 이미 늘어나 서로 맞춰집니다. 여기에 카드 자체를 플렉스 컬럼으로 만들어 늘어나는 본문이 푸터를 아래로 밀어내도록 하세요. 고정 높이는 잘못된 해결책입니다. 제목이 한 줄만 더 늘어나도 콘텐츠가 잘리기 때문입니다.

카드에 그림자를 쓸까요, 보더를 쓸까요?

대시보드나 테이블처럼 밀도 높은 인터페이스에서는 보더가 더 잘 읽힙니다. 그림자가 많으면 시각적 노이즈가 되기 때문입니다. 그림자는 카드가 배경에서 떠올라야 하는 여백 넉넉한 마케팅 레이아웃에 적합합니다. 하나를 기본값으로 정하고 다른 하나는 강조 변형용으로 남겨두되, 같은 레벨에서 섞지는 마세요.

카드에 로딩 스켈레톤이 필요한가요?

네트워크 요청으로 채워지는 카드라면 모두 도움이 됩니다. 실제 콘텐츠 크기에 맞춘 스켈레톤은 데이터가 도착할 때 페이지가 리플로우되는 것을 막아줍니다. 카드와 같은 프롬프트에서 스켈레톤을 요청하면 구조적으로 둘이 치수를 공유하게 되는데, 따로 작성하면 이를 유지하기 어렵습니다.