본문 바로가기

Web 개발/Plugin&Library

Flatpickr [1] - 날짜&시간 선택 JS 라이브러리

  • Flatpickr.js 소개
  • 사용 방법
  • 데모 화면

# Flatpickr.js 소개

 

flatpickr

Introduction Introduction flatpickr is a lightweight and powerful datetime picker. Lean, UX-driven, and extensible, yet it doesn’t depend on any libraries. There’s minimal UI but many themes. Rich, exposed APIs and event system make it suitable for any

flatpickr.js.org


  • 날짜 및 시간 선택 JS 기반 라이브러리
  • <input type="date"> 와는 반대로 CSS 커스텀이 가능하다
  • JS 로 제작되어 빠르고 가벼우며, 다양한 기능(테마, 시간 선택, 언어 등)을 제공한다
  • 모든 브라우저에서 같은 UI와 기능을 제공한다
    (<input type="date"> 는 Safari 9 이전은 미지원한다)

# 사용 방법

1. flatpickr.min.css, flatpickr.js 연결 (CDN)

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
<script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>

 

2. [HTML] flatpickr 적용할 요소에 아이디명(혹은 클래스명) 추가

<input type="text" id="아이디명">
  • div, input 등 다양한 요소에 적용해도 동작 하지만, <input type="text"> 에 적용하는 것을 추천한다
  • 왜 <input type="date">에 적용하지 않는지?
    - 브라우저의 기본 달력 UI를 제거하고 Flatpickr을 적용하기 위해서
    - 기본 달력 UI가 보일수가 있고, 기본 달력 이벤트가 충돌할 수도 있기 때문이다

3. [JS] flatpickr 초기화(선언)

flatpickr("#아이디명", {
  /* 옵션 : 옵션값, */
});

# 데모 화면

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Flatpickr</title>
  <!-- FlatPickr CDN -->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css">
  <script src="https://cdn.jsdelivr.net/npm/flatpickr"></script>
  <!-- FontAwesome CDN-->
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
  <style>
    /* reset.css */
    *{margin: 0; padding: 0;}
    /* layout.css */
    body{display: flex; align-items: center; justify-content: center; height: 80vh;}
    .wrap h2{font-size: 1em; font-weight: 400; margin-bottom: 12px;}
    .flatpickr-container{position: relative;}
    .flatpickr-container input{border:1px solid #d4d4d4; padding: 8px; border-radius: 6px;}
    .flatpickr-container i{position: absolute; top:4px; right: 8px; z-index: 1; padding: 4px; cursor: pointer;}
    .flatpickr-container:hover i{color: darkcyan;}
  </style>
</head>
<body>
  <div class="wrap">
    <h2>FlatPickr 라이브러리</h2>
    <div class="flatpickr-container">
      <input type="text" id="flatpickr" placeholder="날짜를 입력하세요">
      <i class="fa-solid fa-calendar"></i>
    </div>
  </div>
<script>
  const pickr = flatpickr("#flatpickr",{ });
  document.querySelector(".flatpickr-container i").addEventListener("click", () => {
    pickr.open();
  });
</script>
</body>
</html>