사이트

Optimize · Bootstrap v5.0 (getbootstrap.com)

 

Optimize

Keep your projects lean, responsive, and maintainable so you can deliver the best experience and focus on more important jobs.

getbootstrap.com

 

SCSS에서는 별도로 가져오는것보다 한번에 가져오는것이 권장된다.

따라서 SCSS코드는 수정을 하지않는다.

 

예제에서 dropdown 기능을 사용하기 때문에 popperjs를 설치해 주어야 한다.

에러 메시지

설치 명령어

npm i @popperjs/core

확인

예제 JS 코드

// bootstrap의 자바스크립트 기능 가져오기 (node_modules 폴더 내부에서 검색)
// import bootstrap from 'bootstrap/dist/js/bootstrap.bundle'

// 필요한 기능만 가져오기
import Dropdown22 from 'bootstrap/js/dist/dropdown'

// 별도로 가져올 경우 초기화를 진행해 주어야 한다.
// 공식 사이트 원하는 기능화면에서 Via JavaScript 코드를 확인한다.

var dropdownElementList = [].slice.call(document.querySelectorAll('.dropdown-toggle'))
var dropdownList = dropdownElementList.map(function (dropdownToggleEl) {
  // import 데이터 이용
  return new Dropdown22(dropdownToggleEl)
})

// Dropdown 기능은 popperjs 기능을 이용하기 때문에 설치를 진행해주어야 한다.
// npm i @popperjs/core

정상 확인

 

modal 기능 최적화

Modal · Bootstrap v5.0 (getbootstrap.com)

 

Modal

Use Bootstrap’s JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.

getbootstrap.com

JS 파일

왠지 모르겠지만 초기 ID값인 myModal로 하니깐 에러가 발생하면서 작동이 안되었다.

// Modal 기능 사용
// import
import Modal from 'bootstrap/js/dist/modal'
// 초기화 (사이트에서 Via JavaScript 코드 확인)
// 모달의 id값이 일치하는지 확인 필요
// new Modal(document.querySelector('#myModal'))
var myModal = new Modal(document.querySelector('#exampleModal'),{
  // 배경을 클릭해도 꺼지지 않도록 설정
  backdrop: 'static'
})

HTML 파일에 Modal 추가

<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>

확인

 

기존 링크로 가져오는 방식은 사용자가 임의로 수정이 불가능 하였지만

npm 프로젝트로 가져와서 사용하는 방식은 커스터마이징이 가능하다.

 

사용자가 색상을 변경하는 방법

사이트: Sass · Bootstrap v5.0 (getbootstrap.com)

 

Sass

Utilize our source Sass files to take advantage of variables, maps, mixins, and functions to help you build faster and customize your project.

getbootstrap.com

 

 

필수 import 코드를 소스에 적용

 

컬러 가져오기

Color · Bootstrap v5.0 (getbootstrap.com)

 

Color

Bootstrap is supported by an extensive color system that themes our styles and components. This enables more comprehensive customization and extension for any project.

getbootstrap.com

예제 코드

SCSS 파일

// 커스터 마이징을 위해서 필수 입력
// Required
@import "../node_modules/bootstrap/scss/functions"; // 함수
@import "../node_modules/bootstrap/scss/variables"; // 변수
@import "../node_modules/bootstrap/scss/mixins";    // 재활용할 코드

// 커스터 마이징할 위치
$theme-colors: (
  "primary":    $primary,
  // 사용자 지정색으로 변경
  "secondary":  yellowgreen,
  "success":    $success,
  "info":       $info,
  "warning":    $warning,
  "danger":     $danger,
  "light":      $light,
  "dark":       $dark
);

// bootstrap의 SCSS 기능 가져오기 (node_modules 폴더 내부에서 검색)
@import "../node_modules/bootstrap/scss/bootstrap.scss";

 

HTML 파일

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="./scss/main.scss" />
  <script defer src="./main3.js"></script>
  <title>Document</title>
</head>
<body>
  
  <div class="dropdown">
    <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown"
      aria-expanded="false">
      Dropdown button
    </button>
    <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
      <li><a class="dropdown-item" href="#">Action</a></li>
      <li><a class="dropdown-item" href="#">Another action</a></li>
      <li><a class="dropdown-item" href="#">Something else here</a></li>
    </ul>
  </div>

  <div class="spinner-border text-secondary" role="status">
    <span class="visually-hidden">Loading...</span>
  </div>
  
</body>
</html>

 

확인

npm 프로젝트로 부트 스트랩을 만들면 사용자가 필요한 기능들만 가져와서 사용하는 것이 가능하고, 따라서 커스터마이징의 용이하다.

 

npm 초기화 명령어: npm init -y

 

package.json파일이 생성되었는지 확인

 

개발 소스 실행을 위해 parcel-bundler 설치: npm i -D parcel-bundler

 

node_modules, package-lock.json 파일 생성된거 확인

 

package.json 파일을 수정

"scripts": {

    "dev": "parcel 띄워줄 html 파일명",

    "build": "parcel build 띄워줄 html 파일명"

  },

 

Boot Strap 파일 설치

사이트: Bootstrap · The most popular HTML, CSS, and JS library in the world. (getbootstrap.com)

 

Bootstrap

The most popular HTML, CSS, and JS library in the world.

getbootstrap.com

 

npm install bootstrap

 

package.json 파일에서 확인

 

 

확인 예제

html파일 작성

JS파일과 SCSS파일을 연결한다.

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="./scss/main.scss" />
  <script defer src="./main3.js"></script>
  <title>Document</title>
</head>
<body>
  
  <div class="dropdown">
    <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown"
      aria-expanded="false">
      Dropdown button
    </button>
    <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
      <li><a class="dropdown-item" href="#">Action</a></li>
      <li><a class="dropdown-item" href="#">Another action</a></li>
      <li><a class="dropdown-item" href="#">Something else here</a></li>
    </ul>
  </div>

</body>
</html>

 

SCSS파일 작성

// bootstrap의 SCSS 기능 가져오기 (node_modules 폴더 내부에서 검색)
@import "../node_modules/bootstrap/scss/bootstrap.scss";

 

JS파일 작성

// bootstrap의 자바스크립트 기능 가져오기 (node_modules 폴더 내부에서 검색)
import bootstrap from 'bootstrap/dist/js/bootstrap.bundle'

 

결과 화면

Tooltip이란 설명이 팝업과 비슷하게 뜨는 것

Tooltips · Bootstrap v5.0 (getbootstrap.com)

 

Tooltips

Documentation and examples for adding custom Bootstrap tooltips with CSS and JavaScript using CSS3 for animations and data-bs-attributes for local title storage.

getbootstrap.com

 

Tooltips는 성능상에 문제로 사용자가 자바스크립트로 초기화를 진행해야한다.

 

 

초기화 하는 방법

var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
  return new bootstrap.Tooltip(tooltipTriggerEl)
})

 

예제

html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
    integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
    integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous">
  </script>
  <script defer src="./main2.js"></script>
  <title>Document</title>
</head>
<body>
  
  <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top">
    Tooltip on top
  </button>
  <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" title="Tooltip on right">
    Tooltip on right
  </button>
  <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tooltip on bottom">
    Tooltip on bottom
  </button>
  <button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" title="Tooltip on left">
    Tooltip on left
  </button>

</body>
</html>

 

JS

var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
  return new bootstrap.Tooltip(tooltipTriggerEl)
})

 

확인

Modal 사용하는 방법

popup과 비슷한 기능

 

https://getbootstrap.com/docs/5.0/components/modal/

 

Modal

Use Bootstrap’s JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.

getbootstrap.com

 

구현 방법

버튼을 만들어 주고 data-bs-toggle="modal" 을 선언해주면 modal 창을 띄워주고 기능을 하고

data-bs-target="#exampleModal" 띄워줄 모달창의 id값을 입력해주면 입력한 id값을 가지는 모달창을 띄워준다.

 

모달 구조

 

모달의 이벤트 처리 - Via JavaScript 클릭

https://getbootstrap.com/docs/5.0/components/modal/#via-javascript

 

Modal

Use Bootstrap’s JavaScript modal plugin to add dialogs to your site for lightboxes, user notifications, or completely custom content.

getbootstrap.com

 

모달 예제

html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
    integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
    integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous">
  </script>
  <script defer src = "./main.js"></script>
  <title>Document</title>
</head>
<body>
  <!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
  Launch demo modal
</button>

<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        <!-- 로그인 양식 추가 -->
        <form>
          <div class="mb-3">
            <label for="exampleInputEmail1" class="form-label">Email address</label>
            <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
            <div id="emailHelp" class="form-text">We'll never share your email with anyone else.</div>
          </div>
          <div class="mb-3">
            <label for="exampleInputPassword1" class="form-label">Password</label>
            <input type="password" class="form-control" id="exampleInputPassword1">
          </div>
          <div class="mb-3 form-check">
            <input type="checkbox" class="form-check-input" id="exampleCheck1">
            <label class="form-check-label" for="exampleCheck1">Check me out</label>
          </div>
        </form>

      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
        <button type="submit" class="btn btn-primary">Submit</button>
      </div>
    </div>
  </div>
</div>
</body>
</html>

 

모달 이벤트 처리를 진행할 JS 파일

// 모달창 띄워줄때 자동으로 email 입력창에 포커스 되도록 설정
// 포커스 처리할 id값 입력
const emailInputEl = document.querySelector('#exampleInputEmail1');
// 모달 id값 입력
const modalEl = document.querySelector('#exampleModal');
// 모달이 보여줄 때 이벤트 처리
modalEl.addEventListener('shown.bs.modal', function () {
  // 이메일 입력란이 포커스 된다.
  emailInputEl.focus();
});

Forms(양식) 사용하는 방법

https://getbootstrap.com/docs/5.0/forms/overview/

 

Forms

Examples and usage guidelines for form control styles, layout options, and custom components for creating a wide variety of forms.

getbootstrap.com

 

Form기능중에는 아래와 같은 기능을 골라서 사용할 수 있다.

class 이름을 선언하여 각각의 기능을 구현할 수 있다.

 

+ Recent posts