[HTML/CSS] Media query
Media query - 반응형 디자인
https://tjdnjs.github.io/Web-practice/mediaquery.html
1. 화면의 width가 600px일 때 배경색 지정
아래의 코드는 with가 딱 600px일 때만 배경 색이 지정되므로, 효용은 없다. 이때 width를 max-width로 바꾸면 600px 이하, min-width로 바꾸면 600px 이상의 크기에서 배경색이 지정된다.
@media (width:600px){
body{
background-color: powderblue;
}
}
2. 화면의 width를 ~600px, 601~800px, 801px~ 로 나누어 배경색 지정
이 때 주의해줘야할 점은 max-width:800px일 때와 max-width:600px일 때의 css 순서를 어떻게 배치하는가이다. 기본적으로 css는 같은 요소(이 코드에서의 body)를 선택할 때에는 나중에 오는 코드를 우선시하기 때문에, 선택 범위가 더 좁은 max-width:600px일 때의 코드를 더 뒤에 배치해야만 구상한대로 실현된다.
@media (max-width:800px){
body{
background-color: rgb(183, 230, 176);
}
}
@media (max-width:600px){
body{
background-color: powderblue;
}
}
@media (min-width:801px){
body{
background-color: rgb(196, 176, 230);
}
}
3. mobile에서도 최적화된 웹 구현
head에 viewport 설정을 포함시킨다
<meta name = "viewport" content="width = device-width, initial-scale=1.0">
Media query - holygrail 레이아웃 기반 활용
https://tjdnjs.github.io/Web-practice/mediaquery1.html
width가 550 이하일 때를 모바일 환경으로 간주하여, 이에 최적화된 화면을 구현하였다. row로 되어있던 content의 flex-direction을 column으로 수정하고, nav 태그와 aside 태그의 border을 삭제하였다. 또한, flex-basis에 할당된 값이 정렬 방향을 column으로 바꾸며 세로 크기로 할당되어 불필요한 여백이 생기므로, auto로 설정해주어 내용의 크기만큼만 공간이 할당되도록 하였다.
aside의 경우 모바일 환경에서는 불필요하다 생각하여 display를 none으로 설정해주었다. 이 때 모바일 환경에서 미디어쿼리를 사용한 코드가 무조건 우선시 되어야하므로, css 코드의 최하단에 작성해주었다.
nav, main, aside의 순서를 바꾸는 부분도 수업에서 다루었으나 nav가 상단에 있는 것이 더 마음에 들어 수정하지 않았다. 수정하고 싶을 시, order 속성을 통해 순서를 다시 부여할 수 있다.
holygrail 레이아웃의 경우 기존에 작성해둔 코드를 활용하였기에 강의 코드와 다른 부분이 있어, container의 width도 추가로 조정해주었다.
@media(max-width:550px){
.container{
width: 90%;
}
.content{
flex-direction: column;
}
.content nav, aside{
border : none;
flex-basis: auto;
}
aside{display:none;}
}