Bootstrap
부트스트랩에서 미리 정의된 components를 불러와 손쉽게 사용
설치방법 1 연동
◽ 프로젝트에 css, js 소스복사 (cdn방식)
<head>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
</head>
link CSS
css 링크코드는 붙여넣기 하면 되고
Script
◽ js에는 두 가지 버전이 있는데 popper의 유무 차이다.
- Bundle : popper을 번들로 포함한 소스 코드
- Separate : popper을 포함하지 않은 소스 코드로 popper가 미리 선행되어야 한다.
popper란? 팝업 툴팁 관련 플러그인
설치방법 2 npm📌
필요한 기능만 가져와서 쓸 수 있으며 기본적인 테마를 커스텀하기 좋다.
1. npm 시작, parcel-bundler 패키지 설치
$ npm init -t
$ npm i -D parcel-bundler
//package.json
"scripts": {
"dev": "parcel index.html",
"build": "parcel build idnex.html"
}
2. 일반 의존성으로 설치
$ npm install bootstrap
3. npm으로 bootstrap 패키지를 설치했을 때는 (cdn방식)html에 link,script태그를 쓸 필요없이 각각의 js, css파일에서 직접 import하여 사용한다.
3-1. main.js에서 bootstrap모듈을 bundle로 연동 (node_modules폴더로 바로 접근 가능)
import bootstrap from 'bootstrap/dist/js/bootstrap.bundle'
3-2. main.scss에서 bootstrap.scss파일 연동
@import "../node_modules/bootstrap/scss/bootstrap.scss";
Customize
color 예제
customizing할 때 필수적으로 import할 경로를 최상단에 놓아야 한다. variables에서 데이터를 가져와 $theme-colors에서 덮어스기 override되는 순서다.
Components
class이름만 수정하여도 컴포넌트 스타일을 변경할 수 있다.
Button을 예로 들면
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-outline-secondary">Secondary</button>
<div class="btn-group">
<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-outline-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
</div>
이외에도 form, layout 등 custom하여 사용할 수 있도록 많은 기능을 제공하고 있다.
Tooptips📌
Tooltips are opt-in for performance reasons, so you must initialize them yourself.
툴팁은 성능상의 이유로 제공되지 않으므로 사용자가 초기화해줘야 한다.
단순히 html만 복사할 경우에는
<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>
아래 그림처럼 툴팁이 제대로 작동하지 않는다.
이때 javascript에서 사용자가 초기화를 해줘야 한다. 홈페이지에서 코드 복사
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl)
})
js를 연동하면 툴팁이 제대로 나온다.
Optimize
* 성능최적화 : 필요한 기능만 가져와서 쓰기
* 트리 쉐이킹 Tree shaking : 단일 번들을 최적화할 때 사용되는 필요하지 않은 코드를 제거하는 기술
bootstrap이란 이름으로 bundle전체를 가져오는 방식에서
import bootstrap from 'bootstrap/dist/js/bootstrap.bundle'
필요한 기능(본 포스팅에서는 dropdown, modal)만 즉, 단일 번들을 불러옴으로써 최적화하는 방법이다.
import Dropdown from 'bootstrap/js/dist/dropdown'
dropdown예제
Components > dropdown > via javascript 소스코드를 js에 복붙하여 초기화과정 필요
*초기화가 필요없는 경우도 있음. 해당 컴포넌트의 문서에 별다른 javascript 언급이 없으면 스킵
modal예제
초기화할 때 주의사항은 js코드 내 사용되어지는 변수명이나 셀렉터명을 확실히 연결해야 한다.
이 과정에서 모달은 옵션추가도 가능한데 backdrop: 'static'
옵션은 바깥부분을 클릭해도 창이 꺼지지 않게 하는 옵션이다.
import Modal from 'bootstrap/js/dist/modal'
new Modal(document.querySelector('#exampleModal'), {
backdrop: 'static'
})
popper 에러
최적화 하는 과정에서 popper에러가 뜰 수 있다. 부트캠프는 popper를 번들로 설치되어지는데 단일 번들만 가져와 최적화할 경우에는 popper가 정상적으로 불러와지지 않기 때문이다.
popper를 설치하면 문제 해결
$ npm i @popperjs/core
'FE' 카테고리의 다른 글
번들러 webpack 플러그인 사용법 (0) | 2021.12.05 |
---|---|
번들러 parcel 플러그인 사용법 (0) | 2021.11.29 |
git the requested URL returend error : 403 (0) | 2021.11.28 |
goorm IDE (0) | 2021.11.28 |
SCSS 컴파일과 문법, 함수 (0) | 2021.11.28 |