프로그래밍/CSS
23 반응형 웹페이지를 만들어보자 - 1
윤지(●'◡'●)
2021. 5. 15. 23:15
반응형
반응형 웹페이지를 만들어보자
만들어 볼 예시는 바로 아래 동영상의 페이지이다
[구성]
[HTML]
<head>
<title>솔로의 식탁</title>
<link rel="stylesheet" href="./css/style.css" type="text/css">
</head>
<body>
<div id="container">
<header>
<h1>솔로의 식탁</h1>
</header>
<div id="menus">
<div id="menu1">
<h2>밥/죽</h2>
</div>
<div id="menu2">
<h2>국/찌개</h2>
</div>
<div id="menu3">
<h2>반찬</h2>
</div>
<div id="menu4">
<h2>일품요리</h2>
</div>
<div id="menu5">
<h2>음료/칵테일</h2>
</div>
</div>
<footer>
<p>솔로의 식탁</p>
</footer>
</div>
</body>
</html>
[CSS]
@font-face { /*웹폰트*/
font-family: 'GmarketSansBold';
src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_2001@1.1/GmarketSansBold.woff') format('woff');
font-weight: normal;
font-style: normal;
}
#container{ /*가장 큰 틀*/
width: 100%; /*가로 어떤 기기로 접속하든 꽉차게 설정*/
font-family: 'GmarketSansBold'; /*폰트 설정*/
}
header{ /*상호명 부분*/
width: 100%;
}
header > h1 { /*자식 선택자: header 바로 밑 h1에 스타일 적용*/
font-size: 3em; /*16px * 3배 = 48px*/
text-align: center; /*가운데 정렬*/
}
#menus{ /*메뉴 사진 부분*/
width: 100%;
}
#menus > div { /*자식 선택자 : menus 바로 밑 div에 스타일 적용*/
position: relative; /*글자에 absolute 주려고 relative 설정*/
height: 400px;
border: 1px solid black; /*테두리: 1px 직선 검정색*/
margin-bottom: 15px; /*아래쪽 margin 15px*/
}
#menu1,#menu2,#menu3,#menu4,#menu5 {
width: 100%; /*핸드폰에선 사진 하나씩 세로로 일렬이니까 모든 메뉴 가로 꽉차게*/
}
#menus h2{ /*하위선택자: menus 밑 모든 h2에 스타일 적용*/
position: absolute;
padding: 5px;
font-size: 2em;
right:3%;
bottom: 10px;
color: white;
text-shadow: 3px 3px 5px black;
}
/*배경에 이미지 깔기*/
#menu1{
background: url(../image/dish1.jpg) no-repeat center;/*반복 없음, center 기준으로 확대*/
background-size: cover; /*중요! 자주쓰임*/
/*cover: 배경을 사용하는 요소를 벗어나지 않는 최대 크기로 이미지를 확대 또는 축소*/
}
#menu2{
background: url(../image/dish2.jpg) no-repeat center;
background-size: cover;
}
#menu3{
background: url(../image/dish3.jpg) no-repeat center;
background-size: cover;
}
#menu4{
background: url(../image/dish4.jpg) no-repeat center;
background-size: cover;
}
#menu5{
background: url(../image/dish5.jpg) no-repeat center;
background-size: cover;
}
/*footer*/
footer{
width: 100%;
background-color: black;
height: 100px;
}
footer > p{/*자식 선택자: footer 바로 밑 p에만 스타일 적용*/
font-size: 1.5em;
color: white;
text-align: center; /*가운데 정렬*/
line-height: 100px; /*줄간격*/
}
@media screen and (min-width: 768px) { /*만약 최소 사이즈가 768보다 크다면 아래 스타일 적용*/
#menus{
display: flex; /*수평 구성을 위해 플렉서블 레이아웃 사용*/
flex-wrap: wrap; /*여유공간 없으면 다음줄로 넘김*/
justify-content: space-between; /*요소 사이에 여유공간을 두고 배치*/
}
#menu1,#menu2,#menu3,#menu4 { /*2/2/1 배치이니 총 가로중 49%씩 차지하도록 설정*/
width: 49%;
}
#menu5{ /*마지막 이미지는 혼자 꽉채우니까 100%로 설정*/
width: 100%;
}
}
@media screen and (min-width: 1000px) { /*만약 최소 사이즈가 1000px보다 크다면 아래스타일 적용*/
#menus{
display: flex; /*수평 구성을 위해 플렉서블 레이아웃 사용*/
flex-wrap: wrap; /*여유공간 없으면 다음줄로 넘김*/
justify-content: space-between; /*요소 사이에 여유공간을 두고 배치*/
}
#menu1,#menu2,#menu3,#menu4, #menu5{ /*3/2 배치에 2에 한 사진은 윗줄과 사이즈가 동일*/
width: 32%; /*한줄에 세개가 들어갈 수 있도록 32%로 설정*/
}
#menu5{
flex: 2 2 0;
/*flex : grow값 shrink값 basis값*/
/*0을 주면 알아서 맞추란 소리*/
margin-left: 1.8%; /*menu4 사진과의 사이 간격을 위해 마진을 줌*/
}
}
열심히 공부하고 있지만, 오류 사항이 존재 할 수 있습니다.
수정 사항이 존재 할 경우 알려주시면 감사하겠습니다 <(__)>
반응형