1. create react-app으로 어플리케이션 설치 및 node sass,classNames,react-icons 설치(package.json)
yarn create react-app todo-app / yarn add node-sass@4.14.1 classNames react-icons
2.prettier설정
src폴더에 component 디렉토리만들고 js파일들 추가
3.TodoTemplate.js
import React from 'react';
import './TodoTemplate.scss';
const TodoTemplate = ({ children }) => {
return (
<div className="TodoTemplate">
<div className="app-title">일정관리</div>
<div className="content">{children}</div>
</div>
);
};
export default TodoTemplate;
4.App.js
import React from 'react';
import TodoTemplate from './component/TodoTemplate';
import TodoInsert from './component/TodoInsert';
import TodoList from './component/TodoList';
const App = () => {
return (
<TodoTemplate>
<TodoInsert />
<TodoList />
</TodoTemplate>
);
};
export default App;
5.TodoTemplate.scss
.TodoTemplate {
width: 512px;
margin-left: auto;
margin-right: auto;
margin-top: 6rem;
border-radius: 4px;
overflow: hidden;
.app-title {
background: #22b8cf;
color: white;
height: 4rem;
font-size: 1.5rem;
display: flex;
align-items: center;
justify-content: center;
}
.content {
background: white;
}
}
6.TodoInsert.js
import React from 'react';
import { MdAdd } from 'react-icons/md';
import './TodoInsert.scss';
const TodoInsert = () => {
return (
<form className="TodoInsert">
<input placeholder="할일을입력하세요" />
<button type="submit">
<MdAdd />
</button>
</form>
);
};
export default TodoInsert;
https://react-icons.github.io/react-icons/icons?name=md
React Icons
react-icons.github.io
import {아이콘이름}from 'react-icons/md' 로 필요 아이콘 불러오기
7.TodoInsert.scss
.TodoInsert {
display: flex;
background: #495057;
input {
background: none;
outline: none;
border: none;
padding: 0.5rem;
font-size: 1.125rem;
line-height: 1.5;
color: white;
&::placeholder {
color: #dee2e6;
}
flex: 1;
}
button {
background: none;
outline: none;
border: none;
background: #868e96;
color: white;
padding-left: 1rem;
padding-right: 1rem;
font-size: 1.5rem;
display: flex;
align-items: center;
cursor: pointer;
transition: 0.1s background ease-in;
&:hover {
background: #adb5bd;
}
}
}
8.TodoListItem.js
import React from 'react';
import {
MdCheckBoxOutlineBlank,
// MdCheckBox,
MdRemoveCircleOutline,
} from 'react-icons/md';
import './TodoListItem.scss';
const TodoListItem = () => {
return (
<div className="TodoListItem">
<div className="checkbox">
<MdCheckBoxOutlineBlank />
<div className="text">할일</div>
</div>
<div className="remove">
<MdRemoveCircleOutline />
</div>
</div>
);
};
export default TodoListItem;
9.TodoList.js
import React from 'react';
import TodoListItem from './TodoListItem';
import './TodoList.scss';
const TodoList = () => {
return (
<div className="TodoList">
<TodoListItem />
<TodoListItem />
<TodoListItem />
</div>
);
};
export default TodoList;
10.TodoList.scss 스타일링
.TodoList {
min-height: 320px;
max-height: 513px;
overflow-y: auto;
}
11.TodoListItem.scss 스타일링
.TodoListItem {
padding: 1rem;
display: flex;
align-items: center;
&:nth-child(even) {
background: #f8f9fa;
}
.checkbox {
cursor: pointer;
flex: 1;
display: flex;
align-items: center;
svg {
font-size: 1.5rem;
}
.text {
margin-left: 0.5rem;
flex: 1;
}
&.checked {
svg {
color: #22b8cf;
}
.text {
color: #adb5bd;
text-decoration: line-through;
}
}
}
.remove {
display: flex;
align-items: center;
font-size: 1.5rem;
color: #ff6b6b;
cursor: pointer;
&:hover {
color: #ff8787;
}
}
/*This construct is common when you need to add a border between items: you add it to the left of any items which follows another one.*/
& + & {
border-top: 1px solid #dee2e6;
}
}
'프론트엔드관련 책예제실습정리 > 리기술요약' 카테고리의 다른 글
10 일정관리 어플리케이션(scss) (0) | 2021.06.25 |
---|---|
10 일정관리 어플리케이션(js) (0) | 2021.06.25 |
09컴퍼넌트스타일링 CSSModule을 활용한 클래스네임적용, global css 작성 (0) | 2021.06.23 |
09컴퍼넌트스타일링 node-modules에서 라이브러리 불러오기(open-color, include-media) (0) | 2021.06.22 |
09컴퍼넌트스타일링 scss @import로 공통 믹스인 분리하기 (0) | 2021.06.22 |