style.css
@import url('https://fonts.googleapis.com/css2?family=Lato:wght@300&display=swap');
/* 자주쓰는 색을 변수로 --변수명 */
:root {
--primary-color: #047aed;
--secondary-color: #1c3fa8;
--dark-color: #002240;
--light-color: #f4f4f4;
--success-color: #5cb85c;
--error-color: #d9534f;
}
/* 각 태그들의 기본 마진/패딩을 초기값 0으로 하고 박스모델 기준을 보더-박스로 한다. */
* {
/* *은 모든 태그들을 선택 */
box-sizing: border-box;
padding: 0;
margin: 0;
}
body {
font-family: 'Nanum Gothic Coding', monospace;
color: #333;
/* 세로줄 간격 1.6배(160%) */
line-height: 1.6;
}
ul {
/* 리스트 앞의 점 없애기 */
list-style-type: none;
}
a {
text-decoration: none;
color: #333;
}
h1,
h2 {
font-weight: 300;
line-height: 1.2;
margin: 10px 0;
}
p {
margin: 10px 0;
}
img {
width: 100%;
}
code,
pre {
background: #333;
color: #fff;
padding: 10px;
}
.hidden {
/* 화면에 표시 안함. display: none;과 같음 */
visibility: hidden;
height: 0;
}
utilities.css
/* 자주 사용하는 형태의 CSS 들을 묶어서 클래스로 사용*/
/* 여기에 사용한 CSS는 index, docs, features 공통사용 */
.container {
max-width: 1100px;
margin: 0 auto;
overflow: auto;
padding: 0 40px;
}
.card {
background-color: white;
color: #333;
border-radius: 10px;
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
padding: 20px;
margin: 10px;
}
/* 버튼관련 css */
.btn {
display: inline-block;
padding: 10px 30px;
cursor: pointer;
/* 변수사용시 var(변수이름) */
background-color: var(--primary-color);
color: #fff;
border: none;
border-radius: 5px;
}
.btn-outline {
background-color: transparent;
border: 1px solid #fff;
}
.btn:hover {
transform: scale(0.98);
}
/* 백그라운드 색과 글자색 & 버튼색과 글자색 */
/* 바탕색이 어두우면 글자는 밝은색, 바탕이 밝으면 글자는 어두운색 */
.bg-primary,
.btn-primary {
background-color: var(--primary-color);
color: #fff;
}
.bg-secondary,
.btn-secondary {
background-color: var(--secondary-color);
color: #fff;
}
.bg-dark,
.btn-dark {
background-color: var(--dark-color);
color: #fff;
}
.bg-light,
.btn-light {
background-color: var(--light-color);
color: #333;
}
/* 예) Footer */
.bg-primary a,
.btn-primary a,
.bg-secondary a,
.btn-secondary a,
.bg-dark a,
.btn-dark a {
color: #fff;
}
/* 글자 색 */
.text-primary {
color: var(--primary-color);
}
.text-secondary {
color: var(--secondary-color);
}
.text-dark {
color: var(--dark-color);
}
.text-light {
color: var(--light-color);
}
/* 글자 크기 */
.lead {
font-size: 20px;
}
.sm {
font-size: 1rem;
}
.md {
font-size: 2rem;
}
.lg {
font-size: 3rem;
}
.xl {
font-size: 4rem;
}
/* 좌우 정렬 */
.text-center {
text-align: center;
}
/* 경고창 */
.alert {
background-color: var(--light-color);
padding: 10px 20px;
font-weight: bold;
margin: 15px 0;
}
.alert i {
margin-right: 10px;
}
.alert-success {
background-color: var(--success-color);
color: #fff;
}
.alert-error {
background-color: var(--error-color);
color: #fff;
}
/* 그리드 정렬 (절반:절반) */
.grid {
display: grid;
/* grid-template-columns: 1fr 1fr; //아랫줄과 같은 의미 */
grid-template-columns: repeat(2, 1fr);
gap: 20px;
justify-content: center;
align-items: center;
height: 100%;
}
/* 3등분하는 grid */
.grid-3 {
/* 가로 3등분을 덮어씀 */
grid-template-columns: repeat(3, 1fr);
}
/* 플렉스 */
.flex {
display: flex;
justify-content: center;
align-items: center;
height: 100%;
}
/* 마진 */
.my-1 {
margin: 1rem 0;
}
.my-2 {
margin: 1.5rem 0;
}
.my-3 {
margin: 2rem 0;
}
.my-4 {
margin: 3rem 0;
}
.my-5 {
margin: 4rem 0;
}
.m-1 {
margin: 1rem;
}
.m-2 {
margin: 1.5rem;
}
.m-3 {
margin: 2rem;
}
.m-4 {
margin: 3rem;
}
.m-5 {
margin: 4rem;
}
/* 패딩 */
.py-1 {
padding: 1rem 0;
}
.py-2 {
padding: 1.5rem 0;
}
.py-3 {
padding: 2rem 0;
}
.py-4 {
padding: 3rem 0;
}
.py-5 {
padding: 4rem 0;
}
.p-1 {
padding: 1rem;
}
.p-2 {
padding: 1.5rem;
}
.p-3 {
padding: 2rem;
}
.p-4 {
padding: 3rem;
}
.p-5 {
padding: 4rem;
}