# [GROUP J35] 6주차 피어세션
J045 김영근
J138 이민환
J174 장규영
J192 조정혜
## 논의사항
### scss
- css보다 확장된 기능을 제공한다.
- 하위 스타일을 묶어서 처리할 수 있다.
- if문, for문 등의 조건문도 사용 가능하다.
```css=
a {
all: unset;
color: inherit;
&:hover {
cursor: pointer;
font-weight: 900;
}
&:focus {
font-weight: 900;
outline: auto;
}
}
```
### canvas, svg 차이
|canvas|svg|
|---|---|
|HTML element | XML base 벡터 이미지|
|이벤트 핸들러 사용 불가 |이벤트 핸들러 사용 가능|
|비트맵 | 벡터 이미지|
|게임을 만들 수도 있다 | 크기 변화에 자유롭다|
참고 링크:[https://www.educba.com/svg-vs-canvas/](https://www.educba.com/svg-vs-canvas/)
**canvas 예시 : 원 그리기**
```html=
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<canvas width="1000" height="1000"></canvas>
</body>
<script>
const canvas = document.querySelector("canvas");
const context = canvas.getContext("2d");
const rectangleList = [];
function draw() {
context.save();
context.fillStyle = "rgba(0,0,0,0.5)";
const x = Math.random() * 100;
const y = Math.random() * 100;
const rectangle = new Path2D();
rectangle.rect(x, y, 100, 100);
context.fill(rectangle);
rectangleList.push(rectangle);
context.restore();
}
function canvasClick(e) {
rectangleList.forEach(box => {
if (context.isPointInPath(box, e.offsetX, e.offsetY)) {
console.log("clicked");
}
});
}
canvas.addEventListener("click", canvasClick);
for (let i = 0; i < 10; i++) {
draw();
}
</script>
</html>
```
**svg 예시**
```html=
<svg id="pieChart" width="600px" height="600px">
<circle class="piePart pie1" data-percent="48" fill="transparent" cx="300" cy="300" r="100"
stroke-width="200" style="stroke-dasharray: 301.593, 326.726; stroke: rgb(255, 101, 101); stroke-dashoffset: 157.08;"></circle>
</svg>
```
### history API
```jsx=
// state: model data
putHistoryAndDispatch = state => {
history.pushState(state, "", state);
};
_historyEvent() {
window.addEventListener("popstate", e => {
const { state } = e;
});
}
```
## 회고
### J045 김영근
- router, history 관리가 인상 깊었습니다.
- Model과 View는 Controller를 통해서만 접근하도록 잘 구조화 시킨 것 같습니다.
- 이벤트는 생성자 필드에 변수에 연결해서 사라지지 않게 유지한 것이 신기했습니다.
### J138 이민환
- 바쁜 일정 가운데서도 레이아웃을 깔끔하게 잘 잡으신 것 같습니다.
- 짧은 시간안에 비교적 많은 부분을 구현하신 것 같습니다.
### J174 장규영
- 파이 차트 svg로 구현한 것이 인상 깊었습니다. 태그(?) 연결하는 선까지..detail 👍🏻
- 파이 차트 선 그려지는 애니메이션이 신기했어요
### J192 조정혜
- 카카오 인증 부분을 잘 설명해주셨습니다.
- select에 기본 선택 문구를 주신 것이 인상 깊었습니다.
- auth 인증하신 부분이 인상 깊었습니다.