BootStrap
css 프론트엔드 프레임워크 (Toolkit: 도구 상자)
트위터에서 만들어짐
https://getbootstrap.com/ 외국사이트에 비해 한국 사이트는 버젼이 뒤쳐짐
CDN : content Delivery Network
- 지리적 제약 없이 빠르고 안전하게 콘텐츠를 전송할 수 있는 전송 기술
- 서버와 사용자 사이의 물리적인 거리를 줄여 콘텐츠 로딩에 소요되는 시간을 최소화 ( 웹 페이지 로드 속도를 높임)
- 지리적으로 사용자와 가까운 CDN 서버에 콘텐츠를 저장해서 사용자에게 전달
Bootstrap CDN : 파일로서 저장해서 사용하는 것
기본사용법
<p class= "mt-5"> Hello, world!</p>
m t - 5
{property}{sides}-{size}
Reset CSS
모든 HTML 요소 스타일을 일관된 기준으로 재설정하는 간결하고 압축된 규칙 세트
⇒ HTML Element, Table, List 등의 요소들에 일관성 있게 스타일을 적용 시키는 기본 단계
user agent stylesheet가 브라우저마다 상이함 ⇒ 모두 똑같은 스타일 상태로 만들고 스타일 개발을 시작하자
User-agent stylesheets 모든 문서에 기본 스타일을 제공하는 기본 스타일 시트
Normalize CSS
Reset CSS 방법 중 대표적인 방법
웹 표준 기준으로 브라우저 중 하나가 불일치 한다면 차이가 있는 브라우저를 수정하는 방법
- 경우에 따라 IE 또는 EDGE 브라우저는 표준에 따라 수정할 수 없는 경우도 있는데, 이 경우 IE 또는 EDGE의 스타일을 나머지 브라우저에 적용시킴
부트스트랩에서는 Reset CSS
bootstrap-reboot.css
라는 파일명으로 자체적으로 커스텀해서 사용하고 있음
Bootstrap 활용
Typography
제목, 본문, 텍스트, 목록 등
Display headings
기본 heading보다 더 눈에 띄는 제목이 필요할 경우 (더 크고 약간 다른 스타일)
<h1 class="display-1"> Display 1 </h1>
Inline text elements
HTML inline 요소에 대한 스타일
<p>You can use the mark tag to <mark>highlight</mark> text.</p>
<p><del>This line of text is meant to be treated as deleted text.</del></p>
<p><s>This line of text is meant to be treated as no longer accurate.</s></p>
<p><ins>This line of text is meant to be treated as an addition to the document.</ins></p>
<p><u>This line of text will render as underlined.</u></p>
<p><small>This line of text is meant to be treated as fine print.</small></p>
<p><strong>This line rendered as bold text.</strong></p>
<p><em>This line rendered as italicized text.</em></p>
Lists
HTML list 요소에 대한 스타일
<ul class="list-unstyled">
<li>This is a list.</li>
<li>It appears completely unstyled.</li>
<li>Structurally, it's still a list.</li>
<li>However, this style only applies to immediate child elements.</li>
<li>Nested lists:
<ul>
<li>are unaffected by this style</li>
<li>will still show a bullet</li>
<li>and have appropriate left margin</li>
</ul>
</li>
<li>This may still come in handy in some situations.</li>
</ul>
Colors
Bootstrap Color system 부트스트랩이 지정하고 제공하는 색상 시스템
색상 키워드를 가지고 적용한다
<div class="text-bg-primary p-3">Primary with contrasting color</div>
<div class="text-bg-secondary p-3">Secondary with contrasting color</div>
<div class="text-bg-success p-3">Success with contrasting color</div>
<div class="text-bg-danger p-3">Danger with contrasting color</div>
<div class="text-bg-warning p-3">Warning with contrasting color</div>
<div class="text-bg-info p-3">Info with contrasting color</div>
<div class="text-bg-light p-3">Light with contrasting color</div>
<div class="text-bg-dark p-3">Dark with contrasting color</div>
border
<span class="border border-primary"></span>
<span class="border border-primary-subtle"></span>
Component
Bootstrap에서 제공하는 UI 관련 요소
버튼, 네비게이션 바, 카드, 폼, 드롭다운 등 이 있다
이점
일관된 디자인을 제공하여 웹 사이트의 구성 요소를 구축하는 데 유용하게 활용
Alert
<div class="alert alert-primary" role="alert">
A simple primary alert—check it out!
</div>
Badges
Example heading New
Buttons
<button type="button" class="btn">Base class</button>
Cards
<div class="card" style="width: 18rem;">
<img src="..." class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
Navbar
https://getbootstrap.com/docs/5.3/components/navbar/
왜 Bootstrap을 사용하는 가?
- 가장 많이 사용되는 CSS 프레임워크
- 사전에 디자인된 다양한 컴포넌트 및 기능
- 빠른 개발과 유지보수가 가능하다
- 손쉬운 반응형 웹 디자인 구현
- 커스터마이징이 용이
- 크로스 브라우징 지원
- 모든 주요 브라우저에서 작동하도록 설계되어 있음
carousel 회전목마 : 슬라이딩 메인사진 같은것
같은 id값을 가지고 여러개를 만들 때 제대로된 작동이 되지 않음
⇒ carousel 의 id 값과 각 버튼의 data-s-target이 일치 하는 지를 잘 봐야 한다.
modal
modal id 값과 버튼의 data-bs-target이 각각 올바르게 일치하는 지 확인
- modal 코드와 button 코드가 반드시 함께 다녀야할까? 상관없음, data-bs-target이 중요하다.
- modal 코드가 다른 코드 안쪽에 중첩되어 들어가버리면 modal이 켜졌을때 회색 화면 뒤로 감춰질 수 있다
- modal 코드는 주로 body 태그가 닫히는 곳에 모아두는 것을 권장
Semantic Web
웹 데이터를 의미론적으로 구조화된 형태로 표현하는 방식
이 요소가 시각적으로 어떻게 보여질까? ⇒ 이 요소가 가진 목적과 역할은 무엇일까? 의 흐름
Semantic in HTML
HTML 요소가 의미를 가진다는 것
<p style="font-size: 30px;"> Heading </p>
단순히 제목처럼 보이게 큰글자로 만드는 것
→
<h1> Heading </h1>
”페이지 내 최상위 제목” 이라는 의미를 제공하는 요소 h1
⇒ 브라우저에 의해 스타일이 지정됨
== 차이가 있다
HTML Semantic Element
기본적인 모양과 기능 이외에 의미를 가지는 HTML 요소
⇒ 검색엔진 및 개발자가 웹 페이지 콘텐츠를 이해하기 쉽도록 하기 위함
대부분의 개발자들이 div
태그만 사용하게 되면서 스크린 리더가 어느 부분이 무엇을 뜻하는지를 알 수 없게 되버렸음
⇒ 같은 기능을 가지고 있지만, 이름은 다른 태그를 만듬으로 의미를 부여시킴
대표적인 Semantic Element ( div와 같은 기능 가짐 )
- header
- nav
- main
- article
- section
- aside
- footer
Semantic in CSS
CSS 방법론 : CSS를 효율적이고 유지 보수가 용이하게 작성하기 위한 일련의 가이드라인
OOCSS : Object Oriented CSS
객체 지향적 접근법을 적용하여 CSS를 구성하는 방법론
OOCSS 기본 원칙
- 구조와 스킨을 분리
- 컨테이너와 콘텐츠를 분리
1. 구조와 스킨 분리
-1) 구조와 스킨을 분리함으로써 재사용 기능성을 높임
-2) 모든 버튼의 공통 구조를 정의 + 각각의 스킨(배경색과 폰트 색상)을 정의
/* bad */
.blue-button{
border: none;
font-size: 1em;
padding: 10px 20px;
background-color: blue;
columns: white;
}
/* good */
.button{
border:none;
font-size: 1em;
padding: 10px 20px;
}
.button-blue{
background-color: blue;
color: white;
}
.button-red{
background-color: red;
color: white;
}
2. 컨테이너와 콘텐츠 분리
- 객체에 직접 적용하는 대신 객체를 둘러싸는 컨테이너에 스타일을 적용
- 스타일을 정의할 때 위치에 의존적인 스타일을 사용하지 않도록 함
- 콘텐츠를 다른 컨테이너로 이동시키거나 재배치할 때 스타일이 깨지는 것을 방지
OOCSS 적용 예시
/* bad */
.header h2{
font-size:24px;
color:white;
}
.footer h2{
font-size: 24px;
color: black;
}
- 변경 전
- .header와 .footer 클래스가 폰트 크기에 색 둘 다 영향을 주고 있음
/* good */
.container .title{
font-size:24px;
}
.header{
color:white;
}
.footer{
color:black;
}
- 변경 후
- .container .title은 폰트 크기 담당 ( 콘텐츠 스타일)
- .header와 .footer는 폰트 색 담당 ( 컨테이너 스타일)
참고
책임과 역할
HTML : 콘텐츠의 구조와 의미
CSS : 레이아웃과 디자인
의미론적인 마크업이 필요한 이유
- 검색엔진 최적화 (SEO)
- 검색 엔진이 해당 웹 사이트를 분석하기 쉽게 만들어 검색 순위에 영향을 줌
- 웹 접근성(Web Accessibility)
- 웹 사이트, 도구, 기술이 고령자나 장애를 가진 사용자들이 사용할 수 있도록 설계 및 개발하는 것
- ex) 스크린 리더를 통해 전맹 시각장애 사용자에게 웹의 글씨를 읽어줌
- https://nuli.navercorp.com
'TIl' 카테고리의 다른 글
Django, Web Application, Framework, (3) | 2024.03.14 |
---|---|
Responsive Web (2) | 2024.03.11 |
CSS Layout (1) | 2024.03.09 |
HTML, CSS (0) | 2024.03.06 |
Computing Thinking (2) | 2024.03.05 |