프로그래밍/CSS
24 반응형 웹페이지를 만들어보자 - 2
윤지(●'◡'●)
2021. 5. 15. 23:55
반응형
반응형 웹페이지를 만들어보자 - 2
만들어 볼 예시는 아래 동영상의 페이지이다.
[구성]
[HTML]
<head>
<title>카페소개</title>
<link rel="stylesheet" href="./css/style.css" type="text/css">
</head>
<body>
<div id="container">
<header>
<nav>
<ul>
<li><a href="#intro">카페소개</a></li>
<li><a href="#map">오시는 길</a></li>
<li><a href="#choice">이달의 추천</a></li>
</ul>
</nav>
</header>
<section id="intro">
<div class="page-title">
<h1>카페 소개</h1>
</div>
<div class="content">
<div class="photo">
<img src="./images/coffee.jpg" alt="커피">
</div>
<div class="text">
<p>영업 시간 : 오전 9시~ 밤 10시</p>
<p>휴무 : 매주 수요일<i><small>(수요일이 공휴일인 경우 수요일 영업, 다음날 휴무)</small></i></p>
</div>
</div>
</section>
<section id="map">
<div class="page-title">
<h1>오시는 길</h1>
</div>
<div class="content">
<div class="photo">
<img src="./images/map.jpg" alt="지도">
</div>
<div class="text">
<p>서귀포시 안덕면 사계리 000-000</p>
<p>제주 올레 10코스 산방산 근처</p>
</div>
</div>
</section>
<section id="choice">
<div class="page-title">
<h1>이달의 추천</h1>
</div>
<div class="content">
<div class="photo">
<img src="./images/ice.jpg" alt="아이스커피">
</div>
<div class="text">
<h2>핸드드립 아이스 커피</h2>
<ol>
<li>1인분 기준으로 서버에 각 얼음 5조각(한조각은 20cc)넣고 추출을 시작한다.</li>
<li>평상시 보다 원두의 양은 2배정도(20g)와 추출액은 얼음 포함해서 200cc까지 내린다.</li>
<li>아이스 잔에 얼음 6~7개 섞어서 시원하게 마신다.</li>
</ol>
</div>
</div>
</section>
<footer>
<p>My times with Coffee</p>
</footer>
</div>
</body>
</html>
[CSS]
/*웹폰트*/
@font-face {
font-family: 'Cafe24Oneprettynight';
src: url('https://cdn.jsdelivr.net/gh/projectnoonnu/noonfonts_twelve@1.1/Cafe24Oneprettynight.woff') format('woff');
font-weight: normal;
font-style: normal;
}
/*폰트적용*/
body{font-family: 'Cafe24Oneprettynight';}
#container{ /*젤 큰틀*/
width: 100%; /*가로 꽉차게*/
margin: 0 auto; /*가운데 정렬*/
}
nav{ /*메뉴*/
height: 50px; /*높이50px*/
background-color: black; /*배경색 검정*/
}
nav>ul{ /*자식 선택자: nav 바로 밑 ul에 스타일 적용*/
list-style: none; /*목록태그 앞 동그라미 없애기*/
margin: 0;
padding: 3px;
}
nav>ul>li{ /*자식선택자: nav 바로 밑 ul 바로밑 li에 스타일 적용*/
display: inline-block; /*목록태그가 세로가 아닌 가로로 정렬 되게 적용*/
margin: 15px 20px; /*상하: 15px 좌우:20px*/
}
a{ text-decoration: none;} /*링크 밑줄 없애기*/
a:link, a:visited{color: white;} /*방문하지않은 링크, 이미 방문한 링크 글씨 흰색*/
a:active{color: gold;} /*클릭하면*/
a:hover{color:gold} /*마우스를 올리면*/
header{ /*메뉴와 메인사진 부분*/
width: 100%;
height: 300px;
background: url(../images/header.jpg) no-repeat center;
/*배경 이미지 설정, 반복X 센터로 확대*/
background-size: cover; /*이미지 확대*/
margin: 0;
}
.photo{display: none}
/*설명란 이미지는 pc에서만 보이기 때문에 핸드폰에선 숨기기
hidden은 자리차지를 하기 때문에 자리차지를 하지않는 none으로 설정*/
section{ /*카페소개/오시는길/이달의추천 영역 설정*/
position: relative;
width: 100%;
padding: 15px 5%;
}
.page-title{ /*제목*/
position: absolute;
top: 20px;
left: 0px;
padding: 30px 50px;
}
.page-title > h1{ /*자식 선택자: id가 page-title인 요소 바로 아래 h1에 스타일 적용*/
margin-bottom: 30px;
}
.content{ /*설명란*/
margin: 80px auto 10px;
width: 90%;
padding: 20px;
box-sizing: border-box; /*width,height값에 padding과 border를 포함*/
}
#container section:nth-child(odd){
/*class명이 container인 요소 밑 모든 section중 홀수 요소에 스타일 적용*/
background-color: gold;
}
footer{
position: relative;
width: 100%;
height: 100px;
background-color: black;
}
footer>p{ /*자식선택자 : footer 바로 밑 p에 스타일 적용*/
text-align: center; /*글자 가운데 정렬*/
color: white;
line-height: 100px; /*줄간격: 100px*/
}
/*태블릿*/
@media screen and (min-width: 768px) { /*만약 최소사이즈가 768보다 크다면*/
header{height: 400px;}
#intro,#map{
/*1(메인사진)/2(카페소개&오시는길)/1(이달의추천메뉴) 이므로
#intro,#map의 가로를 50%로 설정*/
box-sizing: border-box;
width: 50%;
float: left; /*float로 intro옆에 map이 따라오도록 함*/
margin: 0;
height: 300px;
}
#choice{ /*choice는 따라 올라오면 안되므로 clear로 float 해제*/
clear: both;
}
}
/*pc*/
@media screen and (min-width: 1024px) {/*만약 최소사이즈가 1024px보다 크다면*/
#container{
width: 1000px;
margin: 0 auto;
}
header{height: 450px;}
#intro,#map, #choice{ /*1/1/1/1로 구성되므로 가로 100%로 설정*/
box-sizing: border-box;
position: relative;
width: 100%;
height: 400px;
padding: 15px 5%;
}
.photo{ /*pc 버전에선 사진이 다시 떠야하기 때문에 block으로 설정*/
display: block;
width: 40%;
margin-top: 20px;
}
.content{
margin: 80px auto 10px;
width: 90%;
padding: 20px;
}
.photo>img{/*자식 선택자: id가 photo인 요소 바로 밑 img태그에 스타일 적용*/
width: 100%;
max-width: 320px; /*최대 가로: 320px*/
height: auto;
margin-bottom: 30px;
}
#intro .photo, #map .photo{
float: left; /*카페소개와 오시는길 이미지는 왼쪽 정렬*/
margin-right:5% ;
}
.text{width: 45%;}
#intro .text, #map .text{float: right;} /*카페소개와 오시는길 설명글은 왼쪽 정렬*/
#choice .photo{ /*이달의 메뉴 이미지는 오른쪽 정렬*/
float: right;
margin-left:5% ;
}
#choice .text{float: left;} /*이달의 메뉴 설명글은 오른쪽 정렬*/
#choice .photo img { /*이달의 메뉴의 사진은 둥글게 변경*/
border: 1px solid white;
border-radius: 50%;
}
#footer{clear: both;} /*footer는 딸려올라오면 안되므로 clear로 float 해제*/
}
열심히 공부하고 있지만, 오류 사항이 존재 할 수 있습니다.
수정 사항이 존재 할 경우 알려주시면 감사하겠습니다 <(__)>
반응형