[개발일지11일차]미디어쿼리 실습
1.학습내용
<ul class="media-menu">
<li><a href="#">menu 1</a></li>
<li><a href="#">menu 2</a></li>
<li><a href="#">menu 3</a></li>
</ul>
.media-menu {
list-style: none;
margin: 0;
padding: 0;
display: flex;
justify-content: space-between;
align-items: center;
width: 700px;
background-color: black;
}
.media-menu a {
color: black;
text-decoration: none;
}
.media-menu li {
width: 150px;
background-color: yellow;
border: solid 5px red;
padding: 5px 15px;
text-align: center;
}
@media (min-width: 320px) and (max-width: 767px) {
.media-menu {
flex-direction: column;
align-items: flex-start;
width: 190px;
}
.media-menu li {
margin-bottom: 10px;
}
.media-menu li:last-child {
margin-bottom: 0px;
}
}
- pc:상단바 고정
- 모바일: 상단바 고정x
(fixed포지션 사용으로 3차원)
<header class="intro">
<h1>Logo</h1>
<nav>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
</nav>
</header>
(메인태그는 익스플러어에서 지원하지 않는 태그이기 때문에 role속성 필수)
(아무 포지션 사용안함. 즉,2차원)
*먼저 나오는 형제가 3차원일 경우 뒤에 나오는 형제는 형제 뒷쪽으로 레이어 겹침.
<main role="main"><h1>top<h1>Logo</h1><h1>Logo</h1><h1>Logo</h1><h1>Logo</h1><h1>Logo</h1><h1>Logo</h1><h1>Logo</h1><h1>Logo</h1><h1>Logo</h1><h1>Logo</h1><h1>Logo</h1><h1>Logo</h1><h1>Logo</h1>
</main>
.intro {
display: flex;
(h1과 nav태그를 x축 정렬)
position: fixed;
(상단 영역 고정)
width: 100%;
height: 80px;
background-color: #ffffff;
}
.intro h1 {
width: 50%;
height: 80px;
background-color: black;
}
.intro nav {
width: 50%;
height: 80px;
background-color: yellow;
}
.intro nav ul {
list-style: none;
padding: 0;
margin: 0;
}
.intro nav ul li{
width: 33.3333%;
height: 80px;
}
.intro nav ul {
display: flex;
}
.intro nav ul li:nth-child(1){
background-color: blue;
}
.intro nav ul li:nth-child(2){
background-color: gray;
}
.intro nav ul li:nth-child(3){
background-color: green;
}
main {
width: 100%;
height: 2000px;
background-color: gold;
padding-top: 80px;
(header와 main이 겹쳐져 컨텐츠가 안보이는 일을 대비해서 컨테츠 밑으로 내림)
}
@media(min-width: 320px) and (max-width: 767px) {
.intro {
position: static;
height: 160px;
flex-direction: column;
}
.intro h1 {
width: 100%;
}
.intro nav {
width: 100%;
}
main {
padding-top: 0;
}
}
<div class="container">
<div class="column">
<img src="http://via.placeholder.com/250x150">
<div class="image-info">
<h2>title</h2>
</div>
</div>
<div class="column">
<img src="http://via.placeholder.com/250x150">
<div class="image-info">
<h2>title</h2>
</div>
</div>
<div class="column">
<img src="http://via.placeholder.com/250x150">
<div class="image-info">
<h2>title</h2>
</div>
</div>
<div class="column">
<img src="http://via.placeholder.com/250x150">
<div class="image-info">
<h2>title</h2>
</div>
</div>
<div class="column">
<img src="http://via.placeholder.com/250x150">
<div class="image-info">
<h2>title</h2>
</div>
</div>
<div class="column">
<img src="http://via.placeholder.com/250x150">
<div class="image-info">
<h2>title</h2>
</div>
</div>
</div>
(flex형태는 https://flexbox.help/참고)
.container {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
width: 1140px;
margin: 0;
background-color: pink;
}
.column {
width: 355px;
background-color: #ffffff;
border: solid 2px red;
margin-bottom: 10px;
}
.column:nth-child(4),
.column:nth-child(5),
.column:nth-child(6) {
margin-bottom: 0;
(아래 공백 없애기 위함)
}
.column img {
width: 100%;
(이미지 크기는 252x150이지만 칸 크기에 맞게 확대)
vertical-align: middle;
}
.image-info{
padding: 20px 0;
text-align: center;
}
.image-info h2 {
margin: 0;
}
@media (min-width: 540px) and (max-width: 720px) {
.container {
width: 720px;
}
.column:nth-child(4) {
margin-bottom: 10px
}
}
@media (min-width: 320px) and (max-width: 539px) {
.container {
box-sizing: border-box;
width: 100%;
padding: 0 20px;
}
.colums {
width: 100%;
}
.column:nth-child(4),
.column:nth-child(5) {
margin-bottom: 10px
(작은 확면으로 재배열 될 경우 앞에 조정한 간격들이 안맞음. 그래서 맞춤 작업 필요했음)
}
}
미디어쿼리 사용하는 방법3가지
-
css에서
@media (min-width: 320px) and (max-width: 539px) {} 쿼리 사용 -
아예 새로운 파일 만들기
mobile.css를 만들어서 @media쿼리 사용.
그리고 index.html파일에서 <link css/style.css뿐만 아니라><link rel = "stylesheet" type="text/css" href="css/mobile.css"로 연동> -
style태그 사용. 속성은 media
<style media="(min-width: 300px) and (max-width: 700px)">
body {background-color: red;}
</style>
로 바로 삽입
2.어려웠던부분
상단바를 만드는 과정중에 검은 header와 nav부분 간격이 맞지 않았다.
3.해결방법
코드를 아무리 봐도 문제가 없어보연지만, css파일에서 문제 발견했다.
h1 {
margin: 0;
padding: 0; }
로 공간을 초기화 시켜주는 작업 필요했다.
4.학습소감
브라우저를 줄여보고 변화를 주는 미디어쿼리는 생각보다 재미있었다.
Author And Source
이 문제에 관하여([개발일지11일차]미디어쿼리 실습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@youjeongchoi0730/개발일지11일차미디어쿼리-실습저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)