Bootstrap 5

[웹코딩 가이드] 홈

이제 지~난한(ㅡㅡ;) Bootstrap 5 강좌의 긴 여정을 시작합니다.. diagram-arrow-down

░ Web 표준은 html로 웹사이트 틀을 만들고, Css로 꾸며주고, Javascript로 동작시키는데.. 이것들은 각각 분리하여 작성되어야 나중에라도, 누구라도,, 알아보기 쉽고 유지 관리에도 도움이 된다!


☞ 이 Bootstrap 5) 강좌는 html 5) 및 Css 3)의 대략적인 기본은 갖추고, 직접 코딩하고 검색하면서 스스로 학습하고자 하는 분들(만!)을 대상으로 합니다 ㅡㅡ;


버튼 작성하기

░ 필요하다면; 특정 요소에 html의 role= "button" 속성을 추가함으로써 기본 커서를 (버튼 요소 없이도)포인터로 변경하여 대화형임을 강조할 수 있다. 하지만, 원칙적으로 버튼에는 <button> 태그를 쓰는 것이 기본이고, 더 효율적이다!

버튼 작성의 기본: <button> 태그와 .btn 클래스
1. 우선, html의 <button> 태그를 사용하는 경우에는 화면낭독기에 이 곳에 버튼이 있다는 것이 명확히 전달되고, 또한 이 버튼에는 컨텐츠를 포함할 수도 있기에 아이콘을 추가하거나 Css를 이용해 원하는 형태로 꾸미는 것도 가능해진다

                                    
                                        
                                    
                                
2. 부트스트랩 5)의 .btn 클래스는 기본적으로 <button> 태그에서 사용되도록 디자인되었지만, <a>나 <input> 태그에서도 사용할 수 있다 ← 참고로, 이하의 버튼들은 부트스트랩의 기본 규격과는 좀 다릅니다 - Css 사용자정의를 통해 색상과 모양 및 크기 등에 약간의 변형을 준 것이니 참고 바랍니다..

a .btn

                                    
                                        
                                    
                                

☞ 보통 <a> 태그가 새 페이지나 섹션을 여는 대신 (컨텐츠 축소 등의)페이지 내 기능을 트리거하는데 사용될 때 .btn 클래스를 쓸 수 있는데, 이 경우 role= "button" 속성을 통해 스크린리더기 등에 그 의미를 충분히 전달해주어야 한다!

button .btn btn-*

button .btn btn-outline-*

비활성 버튼
1. <button>(및 <a>, <input>) 태그에서 사용하는 .disabled 클래스는 Css의 pointer-events: none;과 user-select: none; 속성이 적용되어 마우스 오버 및 활성 상태가 트리거되는 것을 막는다:
                                    
                                        
                                    
                                

☞ 이 경우, 위 코드의 title= "disabled" 속성 또한 작동되지 않는다!

2. <Button> 태그에서와는 달리, <a> 태그를 쓰는 버튼에서는 위 트리거 속성들이 지원되지 않으므로 추가적으로 role= "button" 속성이 필요하며, 또한 href 속성을 포함하지 말아야 한다: <a>
                                    
                                        
                                    
                                

☞ 단, 여전히 (위 코드처럼)href 속성을 유지해야만 하는 경우에는; (키보드 입력을 받지 않도록)tabindex= "-1"과 aria-disabled= "true" 속성 또한 필요로 한다!

토글 버튼
부트스트랩의 data-bs-toggle= "button" 속성은 버튼의 on/off 상태를 나타내는데, 미리 On 상태를 만들기 위해서는; .active 클래스와 함께 aria-pressed= "true" 속성도 추가해주어야 한다
                                    
                                        
                                    
                                
닫기 버튼
부트스트랩의 .btn-close 클래스는 닫기(x) 버튼을 만든다
                                    
                                        
                                    
                                
버튼그룹과 버튼 툴바
부트스트랩의 .btn-group 및 .btn-group-vertical 클래스는 일련의 버튼을 한 줄로 그룹화하거나 세로로 쌓는다. 나아가, .btn-toolbar 클래스는 .btn-group 및 .input-group 등의 여타 부트스트랩 클래스들을 조합하여 작은 툴바를 만든다
                                    
                                        
                                    
                                

☞ 부트스트랩은 억지로 외우려 애쓰지 말고 그냥 이런게 있다 하면서 자연스레 눈에 익혀가면 됩니다 - 대충 기능과 주의점들만 알아뒀다 필요해지면 그때 소스 찾아서 붙여넣고 자신의 요구에 맞게 수정하여 쓰시면 됩니다. 부트스트랩은 모든 기능들이 마치 레고 블록과 같아서 이것, 저것,, 여기, 저기,, 막 갇다붙여도 그럭저럭, 말 잘 알아듣는 똑똑한 장난감입니다 - 다만, 원칙없이 마구 갇다 붙였다가는 나중에 코드 수정하거나 할 때 작성한 본인도 한~참 헤맬 수 있습니다!


░ 버튼 작성에 관한 기본기를 다 익힌 뒤, 버튼 작성시의 모범 예에 관해 잘 설명해주고 있는 문서도 한번 읽어보시길 권합니다..

마우스 호버 효과

░ 사용자정의 스타일 .lift 효과 등..

마우스 호버 효과: .lift
아래, 사용자정의 클래스 .lift는 hover 및 focus 시, 해당 요소를 들썩이는데, 이는 버튼 및 링크, 카드만아니라 여타 html 요소들에서도 또한 사용할 수 있다:
안뇽~

* 이 호버 효과는 카드, 버튼만 아니라 <a>, <p>, <div> 등 다른 요소들에도 역시 적용할 수 있다!

                                    
                                        
                                    
                                
                                    
                                        .lift {
                                            transition: box-shadow 0.3s ease, transform 0.3s ease;
                                        } .lift:hover, .lift:focus {
                                            box-shadow: 0 0.8rem 1rem rgb(35 35 35 / 0.2);
                                            transform: translate3d(0, -3px, 0);
                                        }
                                    
                                

☞ 들썩임의 정도는 위 사용자정의 스타일 코드를 적절히 수정하여 사용하시면 됩니다..

➥ Css 3) 아이콘 버튼

이 사용자정의 .btn-icon btn-transdark 클래스는 아이콘을 버튼으로 쓰면서 배경을 투명하게 한 것인데, 포커스가 주어지면 그림자 배경을 나타낸다:

                                    
                                        
                                    
                                

☞ 이 예제의 아이콘 버튼은 투명 버튼과 오픈소스 아이콘의 사용법을 예시하기 위한 것일 뿐입니다 ← 관련 사용자정의 Css 설정은 너무 복잡하고 양도 많아 생략합니다 ㅡㅡ;

요소의 확대/축소 및 불투명도
Css의 zoom 속성은 마우스 호버 시 해당 요소를 확대/축소하는데, 기본값인 1 및 100% 이상은 확대되고, 이하는 축소된다: 남산 로고
                                    
                                        
                                    
                                
                                    
                                        .opacity_zoom:hover { opacity: 0.5; zoom: 1.1; }
                                    
                                

☞ 다만, 이 zoom 속성은 대상 요소의 크기를 조정하기에 페이지 레이아웃에 영향을 미칠 수 있다!


✓ 참고로, Css의 transform: scale(); 효과를 사용하여 크기가 조정된 요소는 레이아웃이 재계산되거나 주변 다른 요소를 이동시키지 않는다 - 컨텐츠가 부모요소보다 커지게 되면; 오버플로된다 ← 트랜스폼 관련 상세 내용은 본 Css 3) 강좌의 Css transform 부분을 참조하십시오..

➥ Css 3) 요소 기울이기

아래 사용자정의 클래스 .rotate-각도 및 .rotate-n-각도는 해당 각도만큼 요소를 기울인다:

                                    
                                        
                                    
                                
                                    
                                        .rotate-15 { transform: rotate(15deg); }
                                        .rotate-n-15 { transform: rotate(-15deg); }
                                        /* 필요하다면; 같은 방식으로 더 추가해서 사용하면 됩니다 */
                                    
                                

☞ 필요하다면; 마우스 호버 시에 기울어지도록 사용자 정의하여 사용하는 것도 간단하지만, 너무 지나친 움직임은 도리어 사용자의 시선을 혼란스럽게 하는 결과를 초래할 수도 있습니다!

뱃지 달아주기

░ 뱃지는 버튼이나 링크의 일부분으로 사용되어 카운터를 제공할 수도 있고(예컨대, 게시글 개수 등..), 나아가 모든 컨텐츠에 추가 정보를 덧붙이는데(예컨대, 모자에 폼나게 별 4개 박은 장군, 가슴에 출렁이는 훈장들 ^^) 사용할 수도 있다!

뱃지 작성의 기본
1. 기본적으로 뱃지의 배경색은 버튼의 배경색과 같은데, Bootstrap 5) 버전에서는 뱃지의 배경색만 설정하면(예컨대, .badge text-bg-secondary); 텍스트는 그에 대비되는 색상으로 자동으로 맞추어진다. 한편, 뱃지는 em 단위를 사용하므로 그 크기는 기본적으로 부모 요소의 글꼴 크기에 맞추어진다:
                                    
                                        
                                    
                                
2. 뱃지는 기본적으로 정원으로 그려지지만 .badge rounded-pill로 주면 내부 컨텐츠에 맞추어 최대한 둥글게 표시된다:
                                    
                                        
                                    
                                

☞ 위 <button>에서의 .position-relative 및 <span>에서의 position-absolute top-0 start-100 translate-middle는 버튼 내 뱃지의 위치를 지정해주기 위한 것이다


✓ 뱃지는 유용한 시각적 정보를 제공하지만, 오히려 이것이 스크린리더기 등에는 혼란을 줄 수도 있다. 따라서, 컨텍스트가 명확하지 않은 경우, 숨겨진 텍스트를 통해 부가적으로 정보를 제공해주는 것도 좋다: <span class="visually-hidden">뱃지 설명..</span>

➥ Css 3) 기울어진 뱃지

아래, 사용자정의 클래스 .badge-rotate는 Css transform 등을 써서 이미지에 기울어진 뱃지를 달아준다:

목없는 부처님
목없는 부처님
                                    
                                        
                                    
                                
                                    
                                        .badge-rotate {
                                            position: absolute; left: 0; top: 1.8rem;
                                            padding: 0.25rem; padding-left: 3rem; padding-right: 3rem;
                                            transform: rotate(-45deg) translate(-30%, -50%);
                                            z-index: 1;
                                        }
                                    
                                

☞ 이 기울어진 뱃지는 배지를 요소의 맨 위에 고정시키기 위해 부모 래퍼에서 overflow-hidden과 position-relative 값을 주고, 내부 .badge에서 .badge-rotate 사용자정의 클래스를 부가한 것이다!

수평/수직선 긋기

░ 여기서는 부트스트랩의 수평선 및 수직선 관련 클래스들을 간략히 살펴봅니다..

가로선: <hr> 태그
부트스트랩에서 <hr> 태그는 ( 브라우저 기본값과 유사하게)border-top 으로 스타일링되고, 불투명도는 opacity: 0.25;로 설정되며, (따로 지정하지 않은 경우)부모요소로부터 상속받은 색상을 사용한다 ← 부트스트랩의 <hr> 태그에서는 .text-색상, .border, .opacity-# 등의 클래스들 또한 사용할 수 있다!

(* 아래 가로선은 부트스트랩 기본 <hr> 태그입니다 - 단, 이 문서에서의 사용자정의 스타일에 의해 부트스트랩의 기본 모양과는 약간 다를 수도 있습니다..)


(* 아래 가로선들은 부트스트랩 클래스들로 스타일링한 <hr> 태그들입니다)




                                    
                                        
                                    
                                
➥ Css 3) 짧은 hr 태그 .hr-short_50

html 기본 태그인 <hr>을 사용자 정의하여, 아래와 같은 짧은 <hr> 가로선을 만들어쓸 수도 있다:


                                    
                                        
                                    
                                
                                    
                                        hr.hr-short_50 { width: 50%; margin: 0 auto; opacity: 0.25; }
                                    
                                

☞ margin: 0 auto;는 가로선을 수평 중앙에 배치한 것인데, 이 코드를 없애주면 앞에서부터 배치된다!


✓ 나아가, hr.hide { visibility: hidden; }와 같은 방식으로 사용자 정의하여 눈에 보이지 않는 구획선을 만들어쓸 수도 있다 ← 이는 보이지 않는 선에 상하 마진을 주어 간격을 넓혀주고자 할 때 유용하게 쓸 수 있다: <hr class="hide my-5">

수직선: .vr 클래스
부트스트랩의 .vr 클래스는 width: 1px; 및 min-height: 1em; 값을 가지며, 부모 요소의 색상 및 불투명도를 상속받는다: ← 자신의 필요에 맞추어 선의 굵기 및 높이, 색상 등은 변경해줄 수 있다!
스택에 사용된 .vr 클래스
아이템 1
아이템 2
                                    
                                        
                                    
                                

☞ 수직선에 font: 1.5/1.5; 값을 줌으로써, font-size와 line-height 값이 같아져 1.5 배 더 커진 수직선이 세로 중앙에 자리잡게 된다!

부트스트랩 색상

░ 부트스트랩 v5.3)의 에서 Css 색상 변수들은 :root로 전역 설정되며, 다크 색상모드에서도 또한 (기존 테마 색상들은 변경되지 않은 상태에서)그에 맞추어 자동 조정된다!

부트스트랩의 색상 파레트
.text-body와 .bg-body 클래스는 <body> 기본 텍스트색과 배경색을 나타내며, .text-reset 클래스는 현재 요소의 텍스트 색상을 부모요소의 색상으로 되돌린다

☞ .text-reset은 보통 <a> 요소에서의 기본 링크 텍스트 색상을 변경하고자 할 때 사용되는데, 이 경우 부모 요소에서 지정된 색상을 물려받게 된다: [기본 링크색] 대 [리셋한 링크색] ← 이 리셋한 링크는(아무런 설정도 안한 단순 <p> 문단이 부모요소이므로) 부트스트랩 기본 .text-body 색상으로 표시됩니다


✓ 이 강좌 사이트에서 보이는 색상들은 :root에서의 사용자정의 Css를 통해 조금 연한 Solid 색상으로 재정의한 것입니다 - 실제 부트스트랩의 기본 색상들은 좀 다르고, 더 진한 편입니다..

1. 부트스트랩 v5.3)의 신규 색상 파레트에는 기존의 테마 색상들에다 -secondary(연한 색상 for color와 bg), -tertiary(더 연한 색상 for color와 bg), -emphasis(더 진한 텍스트 for color) 등이 추가되었다

.text-body-emphasis .text-body(텍스트색) .text-body-secondary .text-body-tertiary

.bg-body(배경색) .bg-body-secondary .bg-body-tertiary

2. 부트스트랩 v5.3)의 신규 색상 파레트에서 배경색과 테두리 색상에는 -subtle(연한 색상 for bg와 border) 색상 변수가 추가되었다

.bg-success .bg-success-subtle

.border border-success .border border-success-subtle


* cf) 부트스트랩 v5.3)에서는 배경색만 설정하면(예컨대, .text-bg-색상); 텍스트는 그에 대비되는 색상으로 자동으로 맞추어진다!

.text-bg-primary .text-bg-secondary .text-bg-success

텍스트색 및 배경색의 불투명도
텍스트의 불투명도를 설정하는 .text-opacity-25/50/75, 배경색의 불투명도를 설정하는 .bg-opacity-25/50/75는 모두 색상 클래스와 함께 조합하여 사용해야 한다!

.text-primary & text-opacity-75 & text-opacity-50 & text-opacity-25

.bg-success & bg-opacity-75 & bg-opacity-50 & bg-opacity-25


* cf) 배경색을 완전히 없애고자할 때는 .bg-transparent 클래스(= Css의 transparent 키워드)를 쓸 수 있다 ← 이 투명 배경 클래스는 카드의 헤더 및 푸터에 기본 설정되어 있던 배경색을 없애줄 때 주로 사용된다!

요소의 불투명도
요소의 불투명도는 .opacity-0/25/50/75/100 클래스로 설정한다: .opacity-25 .opacity-50 .opacity-75

* cf) 부트스트랩에서 기본 제공하는 요소의 불투명도 값은 0/25/50/75/100 뿐이지만, 필요하다면; Css 사용자정의로 .opacity-0/10/20/30/40/50/60/70/80/90/100 식으로 세분화하여 만들어 사용할 수 있다: .opacity-60 { opacity: 0.6; }

➥ Css 3) 사라진 텍스트 색상 되살리기

기존의 .text-muted(흐릿~한 텍스트)와 .text-black-50, .text-white-50은 부트스트랩 v5.3) 버전에서 제거되었다! 대신에 텍스트 색상에다 .text-opacity-# 클래스를 덧붙여서 사용하면 된다

하지만, 편의상 필요하다면; 아래와 같이 Css 사용자정의를 통해 .text-muted, .text-black-50, .text-white-50 등 Bootstrap 5)에 와서 사라진 기존의 텍스트 색상을 되살려 쓸 수도 있다:

.text-muted
.text-white-50 bg-dark
.text-black-50 bg-light
                                    
                                        .text-muted { color: #999999 !important; }
                                        .text-white-50 { color: rgb(255 255 255 / 0.5) !important; }
                                        .text-black-50 { color: rgb(0 0 0 / 0.5) !important; }
                                    
                                
그라디언트 배경
배경색과 함께 다음과 같은 사용자정의 .bg-gradients 클래스를 만들어 추가해주면 배경에 자신만의 그라디언트를 더해줄 수 있다:
.bg-secondary bg-gradients
                                    
                                        
                                    
                                
                                    
                                        .bg-gradients { background: linear-gradient(180deg, rgba(255, 255, 255, 0), rgba(255, 255, 255, 0.25)); }
                                    
                                

☞ 필요하다면; 위 코드에서 그라디언트 종류 및 색상이나 각도, 불투명도 등을 원하는 대로 적당히 바꾸어 다른 형태의 그라디언트 배경색으로 만들어 쓰면 됩니다..

➥ 부트스트랩의 다크 색상모드

부트스트랩 v5.3) 기본 배경 색상모드는 Light Mode인데, Dark Mode 또한 지원한다. Dark 모드는 data-bs-theme= "dark" 속성을 써서 html 요소나 특정 컴포넌트 등에 대하여 전역적으로 적용하거나 전환할 수 있다

예컨대, <html> 요소에서 <html data-bs-theme= "dark">로 설정해주면; 현재 웹문서 전체를 대상으로 Dark 모드가 적용되고, 해당 웹문서에서 특정한 속성이 적용된 구성요소 이외의 모든 컴포넌트와 요소에는 Dark 모드가 적용된다!

타이포그래피

░ 여기서는 부트스트랩 v5.3)의 텍스트, 글꼴 관련 클래스들을 간략히 살펴봅니다..

텍스트 타이포그래피
1. 아래 예제 코드를 보면서 .display-1/2/3/4/5/6 대 .fs-1/2/3/4/5/6간 차이를 눈으로 새겨두시면 됩니다
.display-

1

2

3

4

5

6

.fs- 1 2 3 4 5 6
2. 마찬가지로, <h#> 태그들과 .lead 클래스, <body> 기본 텍스트, <small> 태그간 글자의 크기 및 굵기 차이를 눈으로 새겨두시면 됩니다
h

1

2

3

4

5
6
.lead 클래스 body 기본 텍스트 small 태그
Title .text-body-secondary small
                                    
                                        
                                    
                                

☞ 위 코드는 <h5> 태그 내 제목 옆에 .text-body-secondary와 .small 클래스를 써서 작고 흐릿한 보조 제목을 달아준 것입니다

3. 그밖에, 다음과 같은 텍스트 관련 클래스들이 있습니다:

.fw-bold | .fw-normal(= body 기본) | .fw-light

(부모요소의 font-weight 대비) .fw-bolder | .fw-medium | .fw-lighter

.font-monospace (고정폭 글꼴)

.fst-italic | .fst-normal(= body 기본) | i 태그

➥ Css 3) 사용자정의 .mark, .small 클래스

html 기본 태그인 <mark>, <small>과 같은 규격으로 정의한 사용자정의 클래스를 만들어쓸 수도 있다: mark 태그 대 .mark 클래스, small 태그 대 .small 클래스

                                    
                                        /* 사용자정의 small, mark 클래스 추가 */
                                        small, .small { font-size: 0.875em; }
                                        mark, .mark { padding: 0.2em; background-color: #fcf8e3; }
                                    
                                

☞ 이 사용자정의 클래스는 html 태그의 글꼴 스타일과 일치시키되, 간결하게 <small class="mark">작은 형광문자</small>와 같은 방식으로 쓰고자할 때 매우 유용하다: 작은 형광문자

이렇게 사용자정의 클래스로 만들면; <div>, <p>와 같은 블록레벨 요소에서도 사용할 수 있게 된다!

                                    
                                        
                                    
                                

패러그래프

░ 여기서는 부트스트랩 v5.3)의 문단 관련 클래스들을 간략히 살펴봅니다..

문단 수평정렬: .text-start/center/end
1. 이는 기본적인 문단 수평정렬인데(Css 3에서의 .text-left/center/right), 뷰포트에 따라 따라 반응하는 .text-*-start/center/end 클래스를 사용할 수도 있다 ← 참고로, 부트스트랩 5) 버전에서는 left/right 속성명은 제거되었습니다 - 대신, start/end 속성명을 사용하십시오(여타, 同)

.text-start(기본값)

.text-center

.text-end

2. 텍스트 수직 정렬을 설정하는 .align- 클래스(기본값: .align-baseline)는 인라인, 인라인블록, 인라인 테이블 및 테이블 셀 요소에만 영향을 미친다 ← 인라인이 아닌 컨텐츠에는 플렉스박스를 사용해야 한다!
.align-baseline .align-top .align-middle .align-bottom
줄 높이: .lh-sm/base/lg
html 문서 기본, 또는 부트스트랩에서 재설정한 기본값인 .lh-base 클래스의 line-height 값은 대략 1.5 정도이다
.lh-sm: css 스타일로 값을 설정할 때는 font-size에 따라 line-height 값이 달라질 수 있도록 단위 없는 숫자 값을 사용하는 것이 좋다!

(기본값) .lh-base: css 스타일로 값을 설정할 때는 font-size에 따라 line-height 값이 달라질 수 있도록 단위 없는 숫자 값을 사용하는 것이 좋다!

.lh-lg: css 스타일로 값을 설정할 때는 font-size에 따라 line-height 값이 달라질 수 있도록 단위 없는 숫자 값을 사용하는 것이 좋다!

* cf) Css 스타일로 값을 설정할 때는 font-size에 따라 line-height 값이 달라질 수 있도록 단위 없는 숫자 값을 사용하는 것이 좋다 ← 예컨대, font: 1.8/1.8;로 주면 font-size가 1.8 배로 커질 때, line-height 값도 1.8 높이로 되어 수직 중앙에 자리잡게 된다!

텍스트 자르기, 래핑 및 오버플로
1. .text-truncate 클래스는 현재의 화면 너비를 벗어나는 영역서부터는 자르고, 나머지는 ...로 표시한다 ← 이 클래스는 블록레벨 요소 및 인라인-블록 요소에서만 작동된다!

(* 여기는 블록 요소 p) .text-truncate 클래스는 (현재의 화면 너비를 벗어나는 영역서부터는) 자르고 나머지는 ...로 표시하는데, 블록 및 인라인-블록 요소에서만 작동된다!

(* 여기는 인라인-블록 요소 span) 블록 및 인라인-블록 요소에서만 .text-truncate 클래스가 작동됨!
                                    
                                        
                                    
                                
2. html에서는 기본적으로 텍스트가 길어지면 자동 줄바꿈하여 다음 줄로 내려간다(기본값인 .text-wrap). 하지만, 해당 요소에 .text-nowrap 클래스를 주면; (텍스트가 길어져서 다른 영역을 침범하더라도)자동 줄바꿈을 하지 않는다

* 참고로, .text-nowrap 시 부모요소에서 .overflow-auto로 설정해주면; 남의 영역을 침범하는 대신 (필요할 때만)스크롤바가 생겨난다

                                    
                                        
                                    
                                

☞ .text-nowrap 시 부모요소에서 .overflow-auto로 설정해주면; 남의 영역을 침범하는 대신 (필요할 때만)스크롤바가 생겨난다 ← 위 코드의 <div>에서 .overflow-auto 클래스를 제거해보십시오..

블록쿼터
Bootstrap 5)에서 <blockquote> 태그(및 .blockquote 클래스)는 마진이 margin: 0 0 1rem;(= 상/좌우/하)으로 재설정되었고, <address> 태그는 이탤릭체에서 브라우저 기본 스타일로 재정의되고 line-height 또한 상속되며, margin-bottom: 1rem;이 추가되었다

blockquote .blockquote

                                    
                                        
                                    
                                

리스트 스타일

░ 여기서는 부트스트랩 v5.3)의 리스트 관련 클래스들을 간략히 살펴봅니다..

목록 리스트
Bootstrap 5)에서는 <ul> 및 <ol>, <dl>의 margin-top은 제거되고, margin-bottom: 1rem;으로 재설정되며(내부의 중첩된 목록에서는 margin-bottom도 제거된다), 앞쪽 패딩 또한 재설정된다
1. <ul> 및 <ol>에서 .list-unstyled 클래스를 주면; 앞에 붙는 불릿을 없애고 앞쪽 마진도 없애준다:
  • 여기에는 리스트 스타일이 전혀 적용되어 있지 않지만, 그럼에도 이것은 구조적으로 여전히 리스트이다 - 단, 이는 직계 자식 요소에만 적용된다!
  • 그 내부에 중첩된 리스트에서는
    • .list-unstyled 효과가 미치지 않고..
    • 다시 앞에 불릿도 나타나고 적절한 왼쪽 마진을 갖는다
  • 이러한 성질은, 경우에 따라서는 오히려 유용할 때가 있다!
                                    
                                        
                                    
                                
2. <ul> 및 <ol>에서 .list-inline 클래스를 주고, 각 <li>에서 .list-inline-item 클래스를 주면; 가로로 펼쳐지는 인라인 리스트를 만들 수 있다:
  • html 5
  • css 3
  • Bootstrap 5
                                    
                                        
                                    
                                

☞ 이러한 인라인 리스트는 주로 가로 메뉴바를 만들 때 활용된다!

사전목록 리스트
Bootstrap 5)에서는 <dl> 리스트에서 (html 5에서와는 좀 다르게)<dt>는 굵게 표시되고, <dd>는 margin-left: 0; margin-bottom: 0.5rem;으로 재설정된다. 한편, 가로 사전목록은 Bootstrap 5)의 그리드시스템을 써서 작성할 수 있다
제목

내용 설명 1

내용 설명 2

여긴 제목이 좀 길어서 잘라주겠습니다:
이 설명은 <dd> 공간이 좁아질 경우에 대비하여 .text-truncate 클래스를 붙였습니다!
                                    
                                        
                                    
                                

박스 스타일

░ 부트스트랩 이전 버전들 속성명에서 방향을 의미하는 left/right는 Bootstrap 5) 버전에 와서 start/end로 바뀌었습니다. 이는, 최근의 Css 쓰기모드를 고려한 새로운 작명 방식인데, 부트스트랩 이전 버전들만 아니라 Css의 속성명과도 좀 상이해진 점이 있으니 우선적으로 기억해두십시오..

박스 테두리 스타일: .border
1. 박스 테두리는 .border 클래스로 그려주는데, 여기서 특정 방면만 제외하고자 할 때는; .border에 덧붙여 .border border-top/bottom/start/end-0 식으로 사용해주면 된다:

.border 대 .border border-start-0


✓ 먼저 테두리를 그리고( .border ), 다시 특정 방면만 제외하는( .border border-start-0 ) 방식은 부트스트랩의 코딩 철학인 UI 타입과 스타일링의 분리 적용에 의한 결합을 잘 보여주고 있다!


* cf) 각 방면만의 박스 테두리는 .border-top/bottom/start/end 클래스로 그려줄 수 있는데, 여기서는 .border 클래스는 포함시키지 않습니다: .border-start border-top

2. 박스 둥근 모서리는 .border에 덧붙여 .border rounded 방식으로 그려주는데.. .border rounded-1/2/3/4/5 클래스로 그 둥글기의 정도를 지정해주거나 또는, .border rounded-pill/circle 클래스를 사용할 수도 있다:

.border rounded-1 & .rounded-3 & .rounded-5

.border rounded-pill .border rounded-circle

rounded-top-5 rounded-start-5 rounded-start-circle rounded-start-pill rounded-5 rounded-top-0

                                    
                                        
                                    
                                

☞ 이 코드는 존재하는 이미지에 대해 둥근 모서리를 적용한 것인데, .rounded[-*]-0는 기존의 둥근 모서리를 제거한다

3. 박스 굵은 테두리는 .border border-lg (부트스트랩 기본 굵은 테두리) 및 .border border-1/2/3/4/5 방식으로 그려줄 수 있다:

.border border-1 & .border-3 & .border-5


* cf 1) 박스 테두리의 불투명도는 텍스트 및 배경 색상에서와 마찬가지로, .border border-색상 에다 .border-opacity-100/75/50/25/10/0 불투명도 클래스를 덧붙여서 작성해줄 수 있다: & .border-opacity-50

* cf 2) 어떤 요소에서건, .shadow 클래스를 덧붙여 박스 배경에 은은한 그림자 를 만들어줄 수 있다: <span class="shadow rounded-5">그림자</span> ← .shadow-lg/sm 클래스로 그 퍼짐의 정도를 조정해줄 수도 있다!

➥ Css 3) 방향별 굵은 테두리

부트스트랩에서 기본적으로 지원하는 굵은 테두리는 박스 4방면 모두 에 함께 적용되지만, 필요하다면; 아래, .border-*-lg와 같은 사용자정의 스타일을 작성하여 각 방향별 굵은 테두리를 만들어 쓸 수도 있다:

                                    
                                        
                                    
                                
                                    
                                        /* Css 사용자정의 굵은 테두리 */
                                        .border-lg { border-width: 0.25rem; }
                                        .border-top-lg { border-top-width: 0.25rem; }
                                        .border-end-lg { border-right-width: 0.25rem; }
                                        .border-bottom-lg { border-bottom-width: 0.25rem; }
                                        .border-start-lg { border-left-width: 0.25rem; }
                                    
                                
포커스 링 스타일: .focus-ring
.focus-ring은 포커스가 주어진 상태(:focus)의 기본 윤곽선을 제거하고 보다 광범위하게 사용자 정의할 수 있는 박스 모양으로 대체하는데, 모든 요소 및 컴포넌트에 대해 사용할 수 있다

기본 a 링크 .focus-ring .focus-ring border-success

                                    
                                        
                                    
                                

☞ 여기서는 <a> 기본 링크 밑줄을 제거하고(.text-decoration-none), 부트스트랩의 .focus-ring 클래스 및 색상 유틸리티를 써서 윤곽선을 넣어주었다


* cf) Css :root 레벨에서 Css 변수를 써서 부트스트랩의 기본 포커스 링 스타일을 자신이 원하는 형태로 재정의하여 사용할 수도 있다!

                                    
                                        :root {
                                            --bs-focus-ring-width: 0.25rem;
                                            --bs-focus-ring-opacity: 0.25;
                                            --bs-focus-ring-color: rgb(4 91 193 / 0.25);
                                            /* .. */
                                        }
                                      
                                        .focus-ring:focus {
                                            outline: 0;
                                            box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color);
                                        }
                                    
                                

Table 작성 기본

░ 부트스트랩의 Table은 (타사 위젯을 사용하는)Opt-in으로서, <table> 태그 안에서 .table로 지정해준 다음(.table table-sm은 작은 테이블), 선택적 수정자 클래스 및 사용자 지정 스타일로 확장하게 된다. 한편, 테이블 스타일은 상속되지 않는다 - 곧, 중첩된 테이블은 독자적으로 스타일을 지정해줄 수 있다

테이블 작성하기
1. .table table-bordered는 테이블에 테두리를 그려주며, 반대로, .table table-borderless는 테이블의 테두리를 없애준다
2. .table table-색상은 테이블에 색상을 넣어준다 ← 테이블 색상은 (<thead>, <tbody>, <tfoot>)각 그룹별, 행이나 열, 셀별로 각각 설정해줄 수도 있다!
3. .table table-striped는 테이블 행에 구분을 위한 줄무늬를 추가하며, .table table-striped-columns 클래스는 테이블 열에 구분을 위한 줄무늬를 추가한다
# 도시 국립공원 사찰
1 경주시 남산 삼불사
2 경주시 남산 상선암
3 경주시 남산 천우사
4 경주시 남산 관음사
5 경주시 남산 백운암
                                    
                                        
                                    
                                

☞ .tbody table-group-divider는 테이블 그룹들 사이에 두꺼운 테두리를 만든다 ← Bootstrap v5.3) 버전에서는 (예정되어 있지만)아직 구분선의 색상은 지원되지 않는다!

테이블 제목
테이블 제목을 나타내는 <caption> 태그는 (어디에 놓여지든 간에)기본적으로 바닥행에 배치되는데, .table caption-top 클래스로 상단에 배치해줄 수도 있다
* 테이블 캡션
# 도시 산 사찰
1 경주시 남산 상선암
2 경주시 남산 백운암
3 남산 용장 천우사 & 관음사
footer footer footer footer
                                    
                                        
                                    
                                

☞ .table table-hover (tbody를 대상으로)마우스 hover 상태를 표시한다 ← 한편, (tr이나 셀에서 설정하는).table-active는 활성 상태를 표시한다

반응형 테이블은 .table table-responsive로 래핑함으로써 모든 뷰포트에서 쉽게 가로 스크롤을 가능하게 한다. 곧, .table-responsive는 항시 반응형으로 동작하여 가로로 스크롤된다. 한편, .table-responsive-*로 특정 브레이크포인트를 설정해주면; 해당 지점서부터는 반응형 작동을 멈추게 된다!

사용자 상호작용

░ 부트스트랩 v5.3)의 사용자 상호작용 관련

사용자 상호작용 방지하기
부트스트랩의 .text-decoration-none 클래스는 <a> 태그의 링크 밑줄을 제거한다(소소한 이야기). 한편, .pe-none 클래스는 <a> 요소의 링크 밑줄만 아니라, 포인터(마우스, 스타일러스펜, 터치 등)과의 상호작용마저도 방지한다: 소소한 이야기

이 링크는 부모 요소에 .pe-none 클래스가 주어져 있기에 클릭할 수 없다. 하지만, 이 링크에서 다시 .pe-auto 클래스를 넣어주었기에 클릭이 가능해진다!

                                    
                                        
                                    
                                

☞ 다만, .pe-none 클래스를 주어도 키보드로는 여전히 초점을 맞출 수 있고 실행할 수 있다. 키보드 기능까지 완전히 방지하려면; (키보드 포커스를 받는 것을 방지하기 위해)tabindex= "-1" 속성과 (보조기술에 이 사실을 전달하기 위해)aria-disabled= "true" 속성도 추가해주어야 한다 ← 좀 더 간단하게는, 폼에서는 disabled 속성을 추가함으로써 가능하고, 링크에서는 href 속성을 제거하여 비대화형 앵커로 만들면 된다!

숨겨진 대화형 컨텐츠
1. 시각적으로는 숨기되, 스크린리더기 등에는 알려야 하는 컨텐츠에는 .visually-hidden 클래스를 사용할 수 있는데, 이는 추가적인 시각 정보나 단서를 (예컨대, 색상을 통해 무언가를 알리고자 하는데)볼 수 없는 사용자에게 그 의도를 전달해야할 때 유용하다

위험! .visually-hidden 클래스는 시각적으로는 숨기되, 스크린 리더기에서는 액세스할 수 있도록 해준다!

                                    
                                        
                                    
                                

☞ 곧, 위 코드의 위험! 부분은 화면상 보이지 않지만, 스크린리더기가 이 코드를 만나면; (시각이 없는)사용자에게 그 내용을 읽어주는 것이다!

2. 시각적으로 숨겨진 대화형 컨텐츠의 경우, .visually-hidden-focusable 클래스를 사용할 수 있는데, 포커스가 주어지면 컨트롤이 표시된다

.visually-hidden-focusable 클래스는 다시 (시력이 있는 키보드 사용자의 경우)초점이 맞춰지면 시각적으로 표시해준다!

                                    
                                        
                                    
                                

☞ 곧, 키보드 사용자가 위 <a> 요소에 초점을 맞추면; href= "#content" 앵커에 연결된 목적지로 이동하여 내용을 보여주는 것이다!


* cf) .visually-hidden-focusable 클래스는 독립형 클래스로서 .visually-hidden 클래스와 조합하여 사용해서는 안된다! 한편, 이들 클래스는 컨테이너에도 적용할 수 있다 - 곧, 컨테이너 내부에 포함된 자식요소가 포커스를 받으면; 컨테이너가 표시되도록 하는 것이다!

텍스트 선택방식
.user-select-all/none 클래스는 사용자가 텍스트 단락에서 클릭할 때 컨텐츠가 선택되는 방식을 설정한다:

이 단락을 클릭하면 전부가 선택된다: .user-select-all

이 단락은 클릭해도 아무 것도 선택되지 않는다: .user-select-none

기본값인 .user-select-auto는 클릭 시, 브라우저 기본 선택동작(대개는, 드래그 동작)이 있다 ← 이 문단 안에서 클릭한 뒤 드래그해보세요..

플레이스홀더/스피너보더

░ 플레이스 홀더와 스피너 보더는 컴포넌트 또는 페이지에서 무언가가 로딩 중임을 표시한다

플레이스 홀더
플레이스 홀더는 .placeholder 클래스로 작성한다. 플레이스 홀더의 높이는 기본적으로 부모 요소의 크기를 기반으로 하지만, .placeholder-lg/sm/xs 클래스로 변경해줄 수도 있다
1. 플레이스 홀더의 너비는 그리드 컬럼이나 .w- 유틸리티 클래스, 또는 인라인 스타일을 통해 변경해줄 수 있고, 색상은 기본적으로 currentColor를 사용하는데, .bg-색상 클래스로 변경해줄 수도 있다:
                                    
                                        
                                    
                                
2. 플레이스 홀더에 애니메이션을 적용하려면; .placeholder 바깥에서 .placeholder-glow/wave 클래스로 래핑해주면 된다:
                                    
                                        
                                    
                                
스피너 보더
부트스트랩에서 스피너 보더는 스크립트 없이 단지 html과 Css로만 작성하는데, rem 단위 사이즈 및 display: inline-flex;로 빌드된다
1. 스피너 보더의 형태에는 .spinner-border 및 .spinner-grow가 있고, .spinner-*-sm/lg 클래스를 써서 크기를 설정해줄 수도 있다:
                                    
                                        
                                    
                                

☞ 접근성을 위해서 각각의 로더에는 role= "status" 코드를 넣어주는 것이 좋고, 스크린 리더기 등을 위해 <span class="visually-hidden">..</span>으로 추가 정보를 덧붙여주는 것도 좋다!

2. 스피너 보더의 색상은 기본적으로 currentColor(부모요소의 색상)으로 빌드되는데, .text-색상 및 .text-bg-색상 클래스를 써서 변경해줄 수도 있다:
Loading..
Loading..
                                    
                                        
                                    
                                

* cf) 나아가, Loaders Css ↓ 와 같은 플러그인 라이브러리를 쓰면; 자바스크립트 없이도, 순수 html과 Css 만으로 Css 로딩 애니메이션 과 같은 멋진 모양의 움직이는 애니메이션을 쉽게 만들 수 있습니다 ← 이는 웹 페이지 로딩 시, 움직이는 짧고 작은 애니메이션을 보여줍니다..

Loaders.css

░ 플러그인 라이브러리는 웹페이지 로딩 시, 움직이는 짧고 작은 애니메이션을 보여주는 순수 Css 로딩 애니메이션이다 ← 프리로더 예 1 , 프리로더 예 2

프리로더 애니메이션
먼저, loaders.css 소스 링크를 필요로 하며, 이어서 <body> 바로 다음에 컨테이너 요소를 만들어 애니메이션 종류를 지정해준다. 다음, 컨테이너 요소 안에 필요한만큼 적절한 수의 빈 <div> 블록을 만들어주면 된다 ← 그 개수에 따라 모양 및 움직임이 미세하게 달라진다! Css 로딩 애니메이션
[ loaders.css 사용하기 ]
                                        
                                            
                                        
                                    

☞ <body> 태그 바로 뒤에 프리로더 컴포넌트를 추가하여 프리로더를 활성화하는데, 애니메이션이나 카운트다운 등 다른 모든 구성요소는 프리로더가 멈춘 이후 작동을 시작하게 된다!

[ 사용자정의 옵션 설정하기 ]
                                        
                                            /* 로더 크기 변경하기: 트랜스폼 Scale 추가 */
                                            .loader-inner {
                                                transform: scale(0.5, 0.5);
                                            }

                                            /* 텍스트색 및 배경색 변경하기: 자식 div 요소에 스타일 추가 */
                                            .ball-pulse > div {
                                                color: #fff; background: #516643;
                                            }
                                        
                                    

프로그레스 바

░ 프로그레스 바는 프로젝트의 현재 진척 정도를 표시한다

프로그레스 바
부트스트랩 5)에서는 더 이상 html의 <progress> 태그를 사용하지 않는다. 대신에, 프로그레스 바는 두 개의 html 요소와 너비 설정을 위한 Css, 약간의 추가적인 속성들로 구성된다. 프로그레스 바를 쌓고, 거기에 애니메이션을 적용하고, 그 위에 텍스트 레이블을 배치해줄 수 있다
1. 프로그레스 바의 높이 및 값 범위를 나타내기 위해 .progress를 래퍼로 사용하는데, 이 래퍼는 role= "progressbar" 속성과 접근을 위한 label 및 접근 가능하게 만드는 aria 속성들(aria-label, aria-labelledby)을 필요로 한다. 그 내부에서 바와 레이블을 위해 .progress-bar를 배치하는데, 색상 및 너비는 인라인 스타일이나 유틸리티 클래스, 또는 사용자정의 Css를 사용하여 설정할 수 있다:
height: 50px, width: w-25
                                    
                                        
                                    
                                

☞ 부트스트랩 5)에서는 프로그레스 바의 너비를 지정하기 위한 간편 유틸리티가 새로 도입되었고(.w-), 높이는 .progress에서만 설정하면 내부 프로그레스 바는 그에 맞춰 자동으로 변경된다!

2. 프로그레스바의 모양은 .progress-bar 클래스에 .progress-bar-striped 및 .progress-bar-animated 등을 덧붙여서 설정해줄 수 있다:
                                    
                                        
                                    
                                
3. 다중/누적 프로그레스바를 위해서는 래퍼로 .progress-stacked 클래스를 사용하는데, 멀티 진행률 표시기에서의 너비는 .progress-bar가 아닌 .progress에서 설정해주어야 한다:
                                    
                                        
                                    
                                

* cf) 자바스크립트를 이용하면 움직이는 진행 상황을 나타낼 수 있는데.. Progressbar.js ↓ 같은 관련 플러그인 라이브러리를 사용하면 반응형의 스타일리시한 웹용 진행률 막대바를 쉽게 만들 수 있습니다

Progressbar.js

░ 플러그인을 사용하면 반응형의 스타일리시한 웹용 진행률 표시기를 쉽게 만들 수 있는데, 애니메이션은 모바일 장치에서도 잘 작동된다!

프로그레스 바
Progress Bar에서는 Line, Circle 및 SemiCircle 등 몇 가지 모양을 기본 제공하는데, 먼저, 스크립트 소스를 불러들여야 한다
[ Progress Bar 스크립트 소스 ]
                                        
                                            <script src="vendors/progressbar/progressbar.js"></script>

                                            <script>
                                                var ProgressBar= require('progressbar.js');

                                                // html에 빈 <div id="container"></div>가 있다고 가정할 때
                                                var bar= new ProgressBar.Line('#container', {easing: 'easeInOut'})
                                                bar.animate(1)  // Value from 0.0 to 1.0
                                            </script>
                                        
                                    
                                    
                                        
                                    
                                

░ 그외에도, 강력한 대화형 차트 작성 및 시각화 라이브러리인 , 의존성 없는 순수 자바스크립트 별표 평가 위젯인 등도 있습니다. 필요해지면; 찾아가보세요..

wave