x축 정렬에서 모바일로 갈때 y축 정렬로 바꾸기
우선 메뉴
<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>
CSS
.media-menu{ list-style: none; margin: 0; padding: 0; width: 700px; background-color: black;
display: flex; flex-direction: row; flex-wrap: nowrap; justify-content: space-between; align-items: center; align-content: stretch;}
.media-menu a { color: black; text-decoration: none; display: block;}
.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; width: 190px; } .media-menu li{ margin-bottom: 10px; } .media-menu li:last-child{ margin-bottom: 0; }}
가장위에부분 따라만들어보기
<header class="intro"> <h1></h1> <nav> <ul> <li></li> <li></li> <li></li> </ul> </nav> </header> <!-- 2차원 --> <main role="main"> <h1>Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World Hello World </h1> </main>
CSS
/* PC */ .intro { display: flex; position: fixed; width: 100%; height: 80px; background-color: #ffffff;}
.intro h1 { width: 50%; height: 80px; background-color: #000000;}
.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.3333333333333333333333333333333333333333333%; 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;}
flex
를 활용해서 스크롤내려도 딸려오게 설정nth-child
는 각각 색지정을 위해서모바일부분 미디어쿼리
@media (min-width: 320px) and (max-width: 767px){ .intro{ position: static; flex-direction: column; height: 160px; } .intro h1{ width: 100%; } .intro nav{ width: 100%; } main{ padding-top: 0; }}
static
으로 바꿔주고 column
을 써서 위아래로 표현되게한다.main
겹쳐졌던 부분이 static
으로 해결됬으니 다시 0으로 바꿔줌포트폴리오 부분 따라해보기
<div class="container"> <div class="column"> <img src="https://via.placeholder.com/250x150"> <div class="image-info"> <h2>Title</h2> </div> </div> <div class="column"> <img src="https://via.placeholder.com/250x150"> <div class="image-info"> <h2>Title</h2> </div> </div> <div class="column"> <img src="https://via.placeholder.com/250x150"> <div class="image-info"> <h2>Title</h2> </div> </div> <div class="column"> <img src="https://via.placeholder.com/250x150"> <div class="image-info"> <h2>Title</h2> </div> </div> <div class="column"> <img src="https://via.placeholder.com/250x150"> <div class="image-info"> <h2>Title</h2> </div> </div> <div class="column"> <img src="https://via.placeholder.com/250x150"> <div class="image-info"> <h2>Title</h2> </div> </div> </div>
PC부분 CSS
.container { display: flex; flex-wrap: wrap; justify-content: space-between; width: 1140px; margin: 0 auto; 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%; vertical-align: middle;}
.image-info{ padding:20px 0; text-align: center;}
.image-info h2{ margin: 0;}
wrap
사용space-between
middle
h2
는 기본적인 margin
값이 있으니 0태블릿
@media (min-width: 540px) and (max-width: 720px){ .container{ width: 720px; } .column:nth-child(4) { margin-bottom: 10px; }}
margin
잡아놓은게 이상하니까모바일
@media (min-width: 320px) and (max-width: 539px){ .container{ box-sizing: border-box; width: 100%; padding: 0 20px; } .column { width: 100%; } .column:nth-child(4), .column:nth-child(5) { margin-bottom: 10px; }}
box-sizing
와 padding
으로 좌우 여백을 만들어줌media
@media (min-width: 320px) and (max-width: 539px){}
link
를 하나 더걸어버린다<link rel="stylesheet" type="text/css" href="css/mobile.css">
style
태그 사용<style media="(min-width: 300px) and (max-width: 700px)"> body{ background-color: red; } </style>