일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- const
- typescript
- CSS
- 리액트
- 스코프
- VUE
- 자바스크립트
- react
- Number
- 모던
- 타입스크립트
- 투두리스트
- let
- function
- 객체
- 컴포넌트
- 함수
- Interface
- js
- 라우터
- ES6
- 데이터 타입
- this
- todolist
- redux
- null
- 뷰
- 모던 자바스크립트
- BIND
- var
- Today
- Total
홍준혁
반응형 웹페이지란? (with 간단한 반응형 애플사이트 navBar만들기!) 본문

우리가 웹사이트를 만들 때 화면이 작아지면 구성요소가 깨지는 현상을 많이 겪어봤을 것이다.
나 또한 그랬고 이를 해결하기 위해서는 반응형 웹페이지로 만들어야 한다는 설루션이 있었다.
또, 모바일 , 테블릿 등에서 웹페이지를 접속할 때, 각기 다른 페이지를 보여줘야 하는데, 반응형을 사용하지 않는다면 각 페이지마다 새로운 파일을 만들어서 각기 다른 버전으로 관리해야 하는데, 그렇게 되면 번거로울 수 있기 때문에 한 파일에서 pc , 모바일 , 태블릿 등을 고려한 웹사이트를 만들 수 있게 반응형 웹페이지를 만드는 것이다.
우리는
미디어 쿼리
라는것을 사용해서 반응형 웹페이지를 만들어 볼 것이다.
미디어 쿼리의 개념은, 각 화면의 비율마다 각각 다른 화면을 보여주자 라는 개념이다.
스타일 시트 내에서
@media
라는 기능이 있는데 이 기능을 사용해서 미디어 쿼리를 구현할 수 있다.
간단한 nav bar을 만들어보면서 반응형 웹페이지는 어떤 식으로 만들어지는지 개념을 알아보도록 하자.
시작하기에 앞서, fontawesome이라는 웹사이트를 추천해주도록 하겠다.
다양한 icon들을 제공하며, 이 icon들의 특징은 바로 font라는 점이다.
Font Awesome
The world’s most popular and easiest to use icon set just got an upgrade. More icons. More styles. More Options.
fontawesome.com
하지만 이번 예제에서는 react-icons를 사용하려고 한다.
레이아웃을 잠시 설명하자면,

왼쪽이 기본, 오른쪽이 화면이 작아졌을 때에 레이아웃이다.
파란색 영역이 로고,
주황색 영역이 메뉴,
분홍색 영역은 facebook이나 github로 이동하는 아이콘들이 있는 곳이다.
이제 html을 짜 보도록 하자

대강 이렇게 작성을 하였고,
이제 css로 레이아웃을 구성해보도록 하겠다

똑같진 않지만 느낌을 살려서 구성해보았다.
애플 사이트에서 화면이 작아짐을 감지하면,

이렇게 화면을 바꾸고, 저 작대기 두 개를 누르면

이런 식으로 나오게 된다.
이제 이것을 구현해보도록 하겠다. 참고로 이번 예제는 리액트를 사용하였기 때문에 state를 이용한
메뉴 토글을 구현해보도록 하겠다.
.navBar {
background-color: #333333;
display: flex;
justify-content: space-around;
align-items: center;
padding: 12px;
}
.navBar_toggleBtn {
display: none;
}
.navBar_menus {
display: flex;
list-style: none;
justify-content: space-around;
width: 50%;
}
.navBar_menus_menu a {
color: #d6d6d6;
text-decoration: none;
}
@media screen and (max-width: 768px) {
.navBar {
justify-content: space-between;
}
.navBar_menus {
display: none;
}
.navBar_toggleBtn {
display: flex;
}
.navBar_icons .search {
display: none;
}
}

이렇게 간단하게 미디어 쿼리로 반응형 웹사이트를 만들어보았다.
여기서부터는 외람된 주제이므로 주의!
하지만 우리에게 남은 숙제가 하나 있는데 바로 토글 되는 버튼을 누르면 촤라락! 하게 해 주는 것이다.
그것을 리액트에서 구현하려면 state를 이용하는 방법이 있다.
const [isToggled, setIsToggled] = useState(false);
상태를 선언하고

클릭할 때마다 상태의 부정을 해주자 이제 촤르륵 거릴 것을 navBar밑에 만들어야 한다.

그다음 리액트의 조건부 렌더링을 사용해서 토글이 되는지 확인해보자.
아마 , 정상적으로 토글이 되는 모습을 볼 수 있을 것이다.
이제, 토글 되어 보이는 부분을 사용자가 꾸미는 작업을 해주어야 한다.
뿅!

그런데 apple사이트의 border를 보면 아마...

1px보다 작은 border 같다... 하지만 크롬에서는 1px보다 작은 border를 그릴 수가 없다.
그래서 이걸 어떡하지... 어떡하지 하다가

좀 더 굵긴 하지만, 색깔을 칙칙한 색으로 해서 착시! 효과를 주었다 (ㅋㅋㅋ
아무튼 구현은 여기까지이며 이제 점점 포트폴리오 사이트를 만들 수 있겠다는 자신감이 생기고 있다...!
그럼 뿅!
>> 최종 완성

'CSS' 카테고리의 다른 글
유튜브 클론코딩 후기 (0) | 2021.01.31 |
---|---|
MacOS 창 만들기 (0) | 2021.01.30 |
랜더링 애니메이션 구현하기 (0) | 2021.01.29 |
Parallax만들기 (0) | 2021.01.28 |
CSS 버튼 디자인 해보기 (0) | 2021.01.28 |