본문 바로가기
명함 만들기 캐릭터 모음 16가지 디자인 · PNG / SVG / PDF

파일 올리기

서류나 사진처럼 사용자가 가진 파일을 받아야 할 때 쓰는 조각.

입력

실제 미리보기

출처

<div class="dc-drop">
  <input class="dc-drop__input" id="dc-drop-a" type="file" multiple />
  <label class="dc-drop__area" for="dc-drop-a">
    <span class="dc-drop__icon" aria-hidden="true">⬆</span>
    <span class="dc-drop__title">파일을 끌어다 놓거나 눌러서 고르세요</span>
    <span class="dc-drop__hint">JPG · PNG · PDF / 한 개당 10MB 까지</span>
  </label>
</div>
.dc-drop { position:relative; max-width:520px; font-family:var(--dc-font); }
.dc-drop__input { position:absolute; width:1px; height:1px; opacity:0; }
.dc-drop__area { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:var(--dc-2); min-height:148px; padding:var(--dc-6) var(--dc-4); border:1px dashed var(--dc-line-field); border-radius:var(--dc-r-md); background:var(--dc-sunken); text-align:center; cursor:pointer; transition:background var(--dc-fast), border-color var(--dc-fast); }
.dc-drop__area:hover { background:var(--dc-brand-soft); border-color:var(--dc-brand); }
.dc-drop__input:focus-visible + .dc-drop__area { outline:2px solid var(--dc-brand); outline-offset:2px; }
.dc-drop__area--sm { min-height:56px; padding:var(--dc-3); }
.dc-drop__area.is-error { border-color:var(--dc-danger); background:var(--dc-danger-soft); }
.dc-drop__icon { font-size:22px; line-height:1; color:var(--dc-brand); }
.dc-drop__title { font-size:14px; font-weight:600; color:var(--dc-text); }
.dc-drop__hint { font-size:12px; color:var(--dc-text-mute); }
.dc-drop__error { margin:var(--dc-2) 0 0; font-size:12px; font-weight:600; color:var(--dc-danger); }
.dc-drop__list { list-style:none; margin:var(--dc-3) 0 0; padding:0; display:flex; flex-direction:column; gap:var(--dc-2); }
.dc-drop__item { display:flex; align-items:center; flex-wrap:wrap; gap:var(--dc-2); padding:var(--dc-2) var(--dc-3); border:1px solid var(--dc-line); border-radius:var(--dc-r-sm); background:var(--dc-surface); font-size:13px; }
.dc-drop__name { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--dc-text); }
.dc-drop__size { font-size:12px; color:var(--dc-text-mute); font-family:var(--dc-mono); }
.dc-drop__meta { font-size:12px; color:var(--dc-brand-text); }
.dc-drop__del { display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; border:0; border-radius:var(--dc-r-full); background:transparent; color:var(--dc-text-sub); font-size:13px; }
.dc-drop__del:hover { background:var(--dc-danger-soft); color:var(--dc-danger); }
.dc-drop__bar { flex:1 1 100%; height:4px; border-radius:var(--dc-r-full); background:var(--dc-sunken); overflow:hidden; }
.dc-drop__fill { display:block; height:100%; background:var(--dc-brand); }

이렇게 씁니다

  • 받을 수 있는 형식과 용량 한도를 영역 안에 미리 적어 둔다
  • 올린 파일은 목록으로 보여 주고 하나씩 지울 수 있게 한다
  • 여러 개를 받을 때만 multiple 을 붙인다 — 한 개면 교체가 더 친절하다

주의할 점

  • 끌어다 놓기만 되게 만들지 마라 — 영역을 눌러 파일 선택창이 열려야 키보드로도 쓸 수 있다
  • 숨긴 input 에 label for 를 연결해야 읽어 주는 기계가 입력칸으로 읽는다

다음에 볼 것