알고리즘 코드카타
스탠다드반 6차 수업
팬레터함 수정
└ 디자인 수정
└ 리덕스 추가 공부
function App() {
const [data, setData] = useState([]);
useEffect(() => {
axios
.get('https://jsonplaceholder.typicode.com/todos')
.then((res) => {
setData(res.data);
// console.log(data) <- 여기서 확인하면 안됨 🙅♀️
})
.catch((error) => console.log('오류발생', error));
}, []);
// 여기서 확인 🙆♀️
useEffect(() => {
console.log(data);
}, [data]);
return (
<>
<ul>
{data.map((item) => (
<li key={item.id}>{item.title}</li>
))}
</ul>
</>
);
}
function App() {
const [data, setData] = useState([]);
useEffect(() => {
const fetchData = async () => {
const response = await axios.get(
'https://jsonplaceholder.typicode.com/todos'
);
// return response;
setData(response.data)
};
fetchData();
}, []);
useEffect(() => {
console.log(data);
}, [data]);
return (
<>
<ul>
{data.map((item) => (
<li key={item.id}>{item.title}</li>
))}
</ul>
</>
);
}
function App() {
const [data, setData] = useState([]);
const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
const fetchData = async () => {
setIsLoading(true);
const response = await axios.get(
'https://jsonplaceholder.typicode.com/todos'
);
setIsLoading(false);
setData(response.data);
};
fetchData();
}, []);
useEffect(() => {
console.log(data);
}, [data]);
// 1.
// if (isLoading) {
// return <div>로딩중...</div>;
// }
return (
<>
<ul>
{/* 2. */}
{/* {!isLoading ? (
data.map((item) => <li key={item.id}>{item.title}</li>)
) : (
<div>로딩중...</div>
)} */}
{/* 3. */}
{!isLoading && data.map((item) => <li key={item.id}>{item.title}</li>)}
{isLoading && <div>로딩중...</div>}
</ul>
</>
);
}
프로젝트 디자인에 너무 신경을 안쓴 것 같아서 다른 사람들처럼 테마를 잡고 수정해보기로 했다
요즘 그룹 아티스트들을 잘 몰라서 재밌게 본 애니캐릭터들의 팬레터함으로 하기로!
그 애니는 바로 주술회전 😎
💥 문제의 시작 : background-size: contain
1. 헤더와 바디의 배경을 따로 가져가려다가 배경이 이어지는 게 이쁜 것 같아서
헤더의 배경을 transparent
로 하고 하나의 배경으로 이어지게 했다
2. 제작된 이미지가 아니다보니 원하는 비율이 안나와서 어떻게 해야 할지 고민하다가
배경(background-color)으로 그라데이션을 깔고 그 위에 이미지(background-image)를 올리려고 했는데 따로 적용이 안됐다
3. 알고보니 그라데이션도 background-image로 적용하는 것이었다
4. 그래서 before와 after로 가상클래스를 만들고 z-index로 레이어처럼 쌓기로 했다
5. 원하는 대로 적용은 됐지만 또 다른 문제 발생..!
가로가 긴 이미지로 size를 contain으로 주니 content 내용에 따라 아래쪽이 계속 잘리는 문제가 생겼다
background-size: cover
로 바꾸면서 해결했다/* 이전 코드 */
body {
position: relative;
height:100%;
}
body::before {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(0deg, #0f0d0e 60%, #2c0001);
z-index: -2; /* 그라데이션 레이어의 z-index를 설정합니다. */
}
body::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-image: url('image');
background-repeat: no-repeat;
background-size: cover;
background-attachment: fixed;
z-index: -1; /* 이미지 레이어의 z-index를 설정합니다. */
}
/* 바꾼 코드 */
body {
background-image: url('image');
background-size: cover;
background-attachment: fixed;
}
background-attachment: fixed
속성을 추가하여 해결했다주술회전에서만 나오는 가장 간지나는 기술이 영역전개 이기 때문에 이 부분을 활용하고 싶어서 팬레터를 접었다 펼치는 버튼을 추가했다 😋
'료이키 텐카이...'
useState로 상태를 관리하고 true/false에 따라 렌더링되도록 만들었다
오랜만에(?) CSS 하니까 정말 어렵다^^
원하는대로 움직이게 만드는 게 이렇게 어렵다니..!
그냥 마우스로 원하는대로 끌어다 놓고 싶었다 🥴
일주일이 정말 빨리 간다
첫날 과제 듣고 어떻게 만들지 막막했던 게 생생한데
과제 제출날이 어느새 코앞이네!
주말에 조금 더 다듬어서 늦지 않게 내도록 해야겠다