Tailwind Modal: Tailwind CSS를 사용하여 React Modal을 만드는 방법입니다.

8906 단어
React Modals는 최신 웹 페이지에서 존재감을 굳혔으며, 새로고침할 필요 없이 기본 페이지에서 사용자에게 제공되는 정보 외에 새로운 정보를 제공합니다.

웹 사이트 제작자가 일반적으로 중요하다고 생각하는 특정 정보에 사용자가 집중하게 함으로써 양질의 사용자 경험을 제공하는 그들의 존재로 인해 모달을 보거나 경험했을 가능성이 매우 높습니다.

반응 모달이란?



React Modal은 전체 웹 페이지에 대한 정보를 표시하는 웹 요소인 구성 요소로, 웹 페이지를 비활성화합니다. 모달이 표시되면 일반적으로 오버레이를 제외한 웹 페이지의 나머지 부분에 어두운 오버레이를 배치합니다. 이를 통해 모달이 전달하는 정보에 집중하거나 작업 수행에 집중하거나 모달이 수행하는 상호 작용을 완료할 수 있습니다. 요청합니다.

내용의 테이블


  • 전제 조건
  • Tailwind CSS란 무엇입니까
  • React 프로젝트 만들기
  • Tailwind CSS 설치
  • React 부트스트랩 모달 만들기
  • 결론
  • 자원

  • 전제 조건



    이 문서를 최대한 활용하려면 다음이 있어야 합니다.
  • HTML에 대한 기본적인 이해.
  • CSS에 대한 기본적인 이해.
  • React에 대한 기본적인 이해.
  • 노드와 패키지 관리자인 npm, node -v && npm -v 명령을 실행하여 설치되었는지 확인하거나 here에서 설치합니다.
  • 또는 다른 패키지 관리자인 Yarn을 사용할 수 있습니다.

  • Tailwind CSS란?



    TailwindCSS은 자신을 유틸리티 우선 CSS 프레임워크라고 합니다. 이 프레임워크는 특수 클래스를 통해 개발자가 사용할 수 있는 맞춤형 스타일을 생성하여 웹 응용 프로그램을 만드는 개발 프로세스를 쉽게 할 수 있도록 설계되었으며 이후 요소에 추가됩니다. .

    React 프로젝트 만들기



    새 반응 프로젝트를 생성하려면 터미널로 이동하여 원하는 디렉토리로 이동한 다음 이 명령npx create-react-app project-name을 실행합니다.

    cd Documents
    npx create-react-app project-name
    
    


    Tailwind CSS 설치



    프로젝트에서 tailwindcss를 사용할 수 있게 하려면 이전에 만든 프로젝트로 cd합니다.

    cd project-name
    
    


    다음 실행

    npm install -D tailwindcss postcss autoprefixer
    npx tailwindcss init -p
    
    


    템플릿 경로 구성

    경로를 구성하려면 tailwind.config.js 로 이동하고 module.exports 개체를 편집하고 content 배열의 템플릿 파일에 대한 경로를 추가합니다.

    module.exports = {
      content: ['./src/**/*.{js,jsx,ts,tsx}'],
      theme: {
        extend: {},
      },
      plugins: [],
    };
    
    


    다음으로 Tailwind 지시문을 CSS에 추가합니다.
    ./src/index.css 파일에 tailwind 지시문을 추가합니다.

    @tailwind base;
    @tailwind components;
    @tailwind utilities;
    
    


    이 후 우리는 프로젝트를 실행합니다

    npm run start
    
    

    http://localhost:3000/로 이동하면 브라우저에서 이 작업을 수행해야 합니다.



    Tailwind 모달: Tailwind CSS 모달 만들기



    문서의 템플릿을 사용하여 tailwindcss 모달을 만들려면 반응 라이브러리를 설치해야 합니다. 이를 위해 다음 명령을 실행합니다.

    
    // npm
    
    npm install @headlessui/react
    
    // Yarn
    
    yarn add @headlessui/react
    
    


    간단한 모델

    /* This example requires Tailwind CSS v2.0+ */
    import { Fragment, useRef, useState } from 'react';
    import { Dialog, Transition } from '@headlessui/react';
    import { ExclamationIcon } from '@heroicons/react/outline';
    
    export default function Example() {
      const [open, setOpen] = useState(true);
    
      const cancelButtonRef = useRef(null);
    
      return (
        <Transition.Root show={open} as={Fragment}>
          <Dialog
            as="div"
            className="fixed z-10 inset-0 overflow-y-auto"
            initialFocus={cancelButtonRef}
            onClose={setOpen}
          >
            <div
              className="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block
             sm:p-0"
            >
              <Transition.Child
                as={Fragment}
                enter="ease-out duration-300"
                enterFrom="opacity-0"
                enterTo="opacity-100"
                leave="ease-in duration-200"
                leaveFrom="opacity-100"
                leaveTo="opacity-0"
              >
                <Dialog.Overlay className="fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity" />
              </Transition.Child>
    
              {/* This element is to trick the browser into centering the modal contents. */}
              <span className="hidden sm:inline-block sm:align-middle sm:h-screen" aria-hidden="true">
                &#8203;
              </span>
              <Transition.Child
                as={Fragment}
                enter="ease-out duration-300"
                enterFrom="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
                enterTo="opacity-100 translate-y-0 sm:scale-100"
                leave="ease-in duration-200"
                leaveFrom="opacity-100 translate-y-0 sm:scale-100"
                leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
              >
                <div
                  className="inline-block align-bottom bg-white rounded-lg
                   text-left 
                overflow-hidden shadow-xl 
                transform transition-all 
                sm:my-8 sm:align-middle sm:max-w-lg sm:w-full"
                >
                  <div className="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4">
                    <div className="sm:flex sm:items-start">
                      <div
                        className="mx-auto flex-shrink-0 flex items-center
                       justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0
                        sm:h-10 sm:w-10"
                      >
                        <ExclamationIcon className="h-6 w-6 text-red-600" aria-hidden="true" />
                      </div>
                      <div className="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left">
                        <Dialog.Title as="h3" className="text-lg leading-6 font-medium text-gray-900">
                          Deactivate account
                        </Dialog.Title>
                        <div className="mt-2">
                          <p className="text-sm text-gray-500">
                            Are you sure you want to deactivate your account? All of your data will be
                            permanently removed. This action cannot be undone.
                          </p>
                        </div>
                      </div>
                    </div>
                  </div>
                  <div className="bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse">
                    <button
                      type="button"
                      className="w-full inline-flex justify-center rounded-md
                       border border-transparent shadow-sm px-4 py-2 bg-red-600
                        text-base font-medium text-white hover:bg-red-700 
                        focus:outline-none focus:ring-2 focus:ring-offset-2
                         focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm"
                      onClick={() => setOpen(false)}
                    >
                      Deactivate
                    </button>
                    <button
                      type="button"
                      className="mt-3 w-full inline-flex justify-center
                      rounded-md border border-gray-300 shadow-sm px-4 py-2
                       bg-white text-base font-medium text-gray-700
                        hover:bg-gray-50 focus:outline-none focus:ring-2
                         focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0
                          sm:ml-3 sm:w-auto sm:text-sm"
                      onClick={() => setOpen(false)}
                      ref={cancelButtonRef}
                    >
                      Cancel
                    </button>
                  </div>
                </div>
              </Transition.Child>
            </div>
          </Dialog>
        </Transition.Root>
      );
    }
    
    




    위의 코드 조각에서 우리는 반응에서 얻은 useState 후크를 사용하여 모달이 열리는지 여부를 제어하는 ​​데 사용할 상태 조각을 만듭니다. 우리는 Transition 구성 요소를 사용하여 모달 요소 안팎으로 애니메이션을 적용하고 Dialog 구성 요소를 사용하여 사용자와 통신합니다. 이 구성 요소는 사용자에게 전달하려는 정보를 보유합니다.

    tailwind css로 다른 템플릿을 사용하려면 프로 버전을 가져와야 합니다here.

    결론



    이 기사에서는 tailwind css 설치와 이를 설치해야 하는 이유에 대해 논의했습니다. 다음으로 우리는 UI 라이브러리로 반응 부트스트랩 모달을 만들었습니다.

    좋은 웹페이지 즐겨찾기