오늘은 반응형 레이아웃에 대해 배웠다.
미디어쿼리로 작성해 해상도 마다 스타일을 다르게 적용시켜주는 것을 의미한다.
@charset "uft-8";
html, body{
margin: 0;
padding: 0;
}
.media-menu{
list-style: none;
margin: 0;
padding: 0;
width: 700px; /*메뉴 폭*/
background-color: black;
display: flex;
justify-content: space-between;
align-items: center;
}
/* a 링크 초기값 설정 */
.media-menu a{
color: white;
text-decoration: none;
}
/* 메뉴 항목에 대한 설정 */
.media-menu li{
width: 150px;
background-color: aliceblue;
border: 5px solid red;
padding: 5px;
text-align: center;
}
/* 폭이 768이하일 때 아래 적용 */
@media (max-width:768px) {
.media-menu{
flex-direction: column;
align-items: flex-start;
width: 170px; /*content(150) + border(10)+ padding(10)*/
}
.media-menu li{
margin-bottom: 10px;
}
.media-menu li:last-child{
margin-bottom: 0;
}
}
보통은 화면크기가 제각각이라 해상도를 정하기 어렵지만, 표준으로 스마트폰과 테블릿 pc, 데스크탑. 이 세가지를 기준으로 많이 지정해 준다.
320px ~ 768px미만 : 모바일 기기
768px ~ 1024px미만 : 태블릿
1024px~ :pc
@charset "utf-8";
/* 모바일 코드 */
h1{
font-size: 20px;
background-color: blue;
}
/* 모바일 퍼스트로 작성해보자- 미디어쿼리 작성시
작은화면-> 큰 화면 ==> min-width를 사용 */
/* 최소 768px 이상일때 적용:태블릿 */
/* 미디어 쿼리 연속 사용시 max-width:1023px 이 있는 것과 마찬가지 이므로 생략가능 */
@media (min-width:768px) /*and (max-width:1023px)*/{
h1{
font-size: 40px;
background-color: pink;
}
}
/* 최소 768px 이상일때 적용:pc */
@media (min-width:1024px){
h1{
font-size: 80px;
background-color: gray;
}
}
장점과 단점으로는 아래와 같다.
장점.
1) 모든 기기에서 접속 가능
2) 가로모드에 맞춰 레이아웃 변경 가능
3) 사이트 유지 관리 용이
4) 최신 웹 표준 따름
단점.
1) 사이트 디자인이 단순
2) 하위 버전 브라우저와 호환성 문제 있을 수 있음-> 미디어쿼리는 CSS3 기술
미디어쿼리에서 최소 가로길이, 최대 가로길이를 지정해 주는것 이외에 세로에 대한 스타일도 따로 줄수 있다는 것을 새롭게 배웠다.
/* landscape : 단말기 가로 방향
portrait: 단말기 세로 방향 */
@media screen and (orientation:landscape){
body{
background-color: orange;
}
}
@media screen and (orientation:portrait){
body{
background-color: crimson;
}
}
->가로방향 스타일
->새로방향 스타일
"orientation:landscape" 과 "orientation:portrait"은 데스크탑에서 브라우저 창의 폭과 높이 중 어느게 더 큰지를 판별해 해당 스타일을 적용시켜 주는것이라 보면 된다.
미디어쿼리가 복잡해 보이면서도, 해상도의 px만 잘 적용한다면, 다양하게 활용해 볼수 있겠다는 생각이 들었다.
orientation은 익숙하지 않은 방식이라 조금 더 써본다면 기존에 썼던 min-width와 max-width보다도 휠씬 쉽게 쓸수 있을거라 생각한다.
-추가(22.05.21) 과제 링크 : https://amykim11.github.io/homework/