티스토리 뷰
드코엘 강좌를 보다가 CSS로 서로 다른 상황에 대한 이해가 안 가는 부분이 있었다. 한참을 고민하다가 사용법에 대해 이해하고 익혀서 까먹지 않기 위해 작성한 포스팅이다.
#1 요구사항
왼쪽의 썸네일 이미지를 클릭하면 오른쪽과 같이 보이도록 만들어야 했다.
조건은: 클릭 했을 때, 2줄이 한 줄로 보이도록 만드는 것.
위 이미지에 해당하는 코드 일부분을 가져왔다.
어떻게하면 위처럼 이미지를 클릭했을 때 다른 레이아웃이 보이는지
코드를 분석해 보자
import React from "react";
import styles from "./video_item.module.css";
//video>item>snippet
const VideoItem = ({ video, video: { snippet }, onVideoClick, display }) => {
const displayType = display === "list" ? styles.list : styles.grid; //displayType에 display타입이 리스트면 stylelist를쓰고 아니면 grid를 써
return (
<li
className={`${styles.container} ${displayType}`}
onClick={() => onVideoClick(video)}
>
<div className={styles.video}>
<img
className={styles.thumbnail}
src={snippet.thumbnails.medium.url}
alt="video thumbnail"
/>
<div className={styles.metadata}>
<p className={styles.title}>{snippet.title}</p>
<p className={styles.channel}>{snippet.channelTitle}</p>
</div>
</div>
</li>
);
};
export default VideoItem;
<전체코드>
#2 코드 분석
const displayType = display === "list"? styles.list : styles.grid;
displayType변수를 선언하고 (const display)
인자 값 display타입이 리스트면 style.list를 쓰고(타입 비교는 === 사용)
아니면 styles.grid를 쓰라는 뜻 (item? a :b )
#3 CSS 다루기
className={`${styles.container} ${displayType}`}
이전에 postcss를 사용하여 styles.로 이름 명시
위 코드 블록은 상황별 css를 주기 위한 코드 선언 부분이다.
1. ` `과 $으로 감싸고
2. container와
3. displayType이 있다
여기서 displayType은 #2 코드 분석에서 다뤘던 과 같이 특정 조건에 따라 className. list or. grid가 반환된다.
즉 조건에 따라. container와. list가 합쳐지고,. container와. grid가 합쳐진 2가지 케이스를 사용할 수 있다.
#4 CSS선언
.container.grid {
width: 50%;
}
.container.list {
width: 100%;
}
css를 적용 모습
#5 느낀 점
이전에 혼자 웹사이트를 만들며 CSS를 처음 접했을 때 개고생 하며
위와 같이 조건별 CSS를 선언할 수 있으면 좋겠다는 생각을 했었다.
그러나 나의 인사이트는 너무나 부족했고, 구르고 구르며 css를 습득할 수밖에 없었다.
즉 매우 구린 CSS파일과 HTML구조가 나왔다
이번에 드코엘 강의를 보면서 조건별 CSS를 줄 수 있는 방법을 얻게 되어 매우 만족한다.
'💻 개발 > HTML, CSS' 카테고리의 다른 글
부트스트랩, 테일윈드 등 CSS 파일 적용시 적용 안되는 현상 해결법 (0) | 2022.08.11 |
---|---|
(HTML, CSS) 페이지 레이아웃 구성, 아이템 나누기 (0) | 2021.10.19 |
(HTML CSS) 웹 사이트 제작 시 어떤 상황에 rem, vh, vw, px을 써야할까 (0) | 2021.04.01 |
(HTML CSS) 동영상 전체화면 구성하기, 스크롤 시 다음 section 보이게 하기 / (0) | 2021.03.28 |
(HTML CSS) SVG, PNG 파일 이미지 색 변경하기 (2) | 2021.03.25 |
- Total
- Today
- Yesterday