Button

저장, 제출, 다음 단계. 사용자가 하려는 일을 명확한 동작으로 연결합니다.

Live preview
저장하기

버튼을 눌러 동작을 확인하세요.

코드 보기
HTML
<sy-button variant="primary" size="medium">저장하기</sy-button>

사용 가이드

#

사용자의 선택을 실행할 때 사용합니다. 화면 이동에는 링크를 사용하고, 한 작업 영역에서는 가장 중요한 동작을 먼저 강조하세요.

주요 동작

저장·제출에는 primary로 다음 행동을 명확하게.

보조 동작

취소·이전 단계에는 default 또는 secondary.

가벼운 동작

부가 기능에는 borderless로 강조를 줄이세요.

처리 중에는 loading, 실행할 수 없을 때는 disabled로 상태를 알려주세요.

예제

#

스타일

주요 동작에는 primary, 보조 동작에는 default 또는 secondary를 사용합니다. borderless는 가벼운 동작에 적합합니다.

PrimaryDefaultSecondaryBorderless
코드 보기
HTML
<sy-button variant="primary">Primary</sy-button>
<sy-button variant="default">Default</sy-button>
<sy-button variant="secondary">Secondary</sy-button>
<sy-button variant="borderless">Borderless</sy-button>

아이콘

기본 슬롯에 SVG를 텍스트 앞이나 뒤에 배치합니다. 아이콘만 사용할 때는 icon-only와 이름을 설명하는 tooltip을 지정합니다.

새 항목다음 단계
코드 보기
HTML
<sy-button variant="primary">
  <svg
    width="16"
    height="16"
    viewBox="0 0 24 24"
    fill="none"
    stroke="currentColor"
    stroke-width="1.8"
    stroke-linecap="round"
    aria-hidden="true"
  >
    <path d="M12 5v14M5 12h14" />
  </svg>
  새 항목
</sy-button>

<sy-button>
  다음 단계
  <svg
    width="16"
    height="16"
    viewBox="0 0 24 24"
    fill="none"
    stroke="currentColor"
    stroke-width="1.8"
    stroke-linecap="round"
    stroke-linejoin="round"
    aria-hidden="true"
  >
    <path d="M5 12h14m-6-6 6 6-6 6" />
  </svg>
</sy-button>

<sy-button icon-only tooltip="항목 추가">
  <svg
    width="16"
    height="16"
    viewBox="0 0 24 24"
    fill="none"
    stroke="currentColor"
    stroke-width="1.8"
    stroke-linecap="round"
    aria-hidden="true"
  >
    <path d="M12 5v14M5 12h14" />
  </svg>
</sy-button>

크기

small 24px, medium 32px, large 40px. 화면의 밀도에 맞게 선택합니다. 기본값은 medium입니다.

SmallMediumLarge
코드 보기
HTML
<sy-button variant="primary" size="small">Small</sy-button>
<sy-button variant="primary" size="medium">Medium</sy-button>
<sy-button variant="primary" size="large">Large</sy-button>

상태

disabled는 사용할 수 없는 동작, loading은 처리 중인 동작을 표시합니다. 두 상태 모두 추가 클릭을 차단합니다.

저장하기저장하기저장 중
코드 보기
HTML
<sy-button variant="primary">저장하기</sy-button>
<sy-button variant="primary" disabled>저장하기</sy-button>
<sy-button variant="primary" loading>저장 중</sy-button>

전체 너비

full-width를 지정하면 부모 영역의 너비를 채웁니다. 폼 제출이나 좁은 화면의 주요 동작에 사용할 수 있습니다.

계속하기
코드 보기
HTML
<sy-button variant="primary" full-width>계속하기</sy-button>

아이콘 버튼 툴팁

아이콘 전용 버튼에 마우스를 올리거나 포커스하면 동작을 설명하는 툴팁을 표시합니다.

코드 보기
HTML
<sy-button icon-only tooltip="항목 추가"><svg
    width="16"
    height="16"
    viewBox="0 0 24 24"
    fill="none"
    stroke="currentColor"
    stroke-width="1.8"
    stroke-linecap="round"
    aria-hidden="true"
  >
    <path d="M12 5v14M5 12h14" />
  </svg></sy-button>

API reference

#

이름에 마우스를 올리거나 키보드로 선택하면 적용 예제를 볼 수 있습니다. 터치 화면에서는 이름을 눌러보세요.

Properties

AttributeTypeDefaultDescription
default | primary | secondary | borderlessdefault버튼의 시각적 스타일
small | medium | largemedium버튼 크기
booleanfalse클릭과 키보드 활성화 차단
booleanfalse진행 표시 및 추가 클릭 차단
booleanfalse부모 영역 너비 채우기
booleanfalse아이콘 전용 버튼 설정. 슬롯에는 아이콘만 배치
string""기본 툴팁. 아이콘 전용 버튼의 접근 가능한 이름
button | submit | resetbutton일반 동작, 폼 제출 또는 초기화
booleanfalse제출 시 폼 유효성 검사 건너뛰기

Slots

NameDescription
버튼의 텍스트와 아이콘. 별도의 이름 없이 자식 요소로 넣습니다.

Methods

MethodReturnsDescription
Promise<void>내부 버튼의 클릭 실행. disabled·loading 상태에서는 실행되지 않음
Promise<void>내부 버튼으로 포커스 이동
Promise<void>내부 버튼의 포커스 해제
Promise<void>그룹 방향과 첫·마지막 버튼의 모양을 갱신합니다. 일반 사용에서는 sy-button-group이 관리하므로 버튼을 그룹 안에 배치하세요.

Events

EventDescription
일반 버튼의 표준 클릭 이벤트. addEventListener로 구독합니다. 폼 제출은 폼의 submit 이벤트에서 처리하세요.
아래 예제는 id="action-button"인 버튼을 대상으로 합니다.
JavaScript
const button = document.querySelector('#action-button');
await customElements.whenDefined('sy-button');
button.addEventListener('click', () => {
  console.log('버튼을 클릭했습니다.');
});
await button.setFocus();