화면 구현 실습1)
▼ 전체 코드 보기 (더보기 클릭) ▼
html
<!DOCTYPE html>
<html lang="ko">
<!-- 1. head 작성 -->
<head>
<!-- meta tag : metadata(정보에 대한 정보) 제공
화면에 표시되지는 않지만 검색 엔진/브라우저에 읽힘 -->
<meta charset="UTF-8">
<!-- IE 브라우저에서 최신 표준 모드를 선택하는 문서 모드 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 뷰 포트 : 화면 상의 화상 표시 영역
데스크탑 화면과 모바일의 뷰 포트는 차이가 있음. 너비를 디바이스에 맞춤. 기본 배율 1. -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 사이트에 대한 설명 -->
<meta name="description" content="Full Screen Practice">
<title>1_full-screen실습</title>
<!-- CSS -->
<!-- 브라우저별로 디폴트로 적용된 CSS에 차이(여백, 폰트 크기 등)가 있어
CSS가 별도로 지정 되지 않은 요소는 브라우저별로 다르게 보일 수 있으므로
만들어져 있는 리셋 css 활용 -->
<!-- ress.css (https://github.com/filipelinhares/ress)-->
<link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
<!-- favicon (Real Favicon Generator 활용) -->
<link rel="icon" type="image/x-icon" href="../resources/images/khfavicon.ico">
<!-- 외부 스타일 시트 -->
<link href="../resources/css/style.css" rel="stylesheet" type="text/css">
<!--구글 웹 폰트-->
<link href="https://fonts.googleapis.com/css2?family=Syne+Tactile&display=swap" rel="stylesheet">
</head>
<body>
<!-- 화면을 꽉채우는 이미지 배치 -->
<div id="home" class="big-bg">
<!--2. header 만들기-->
<header class="page-header wrapper">
<!--로고 클릭시 다시 본인 페이지로 로드-->
<h1><a href="1_full-screen실습.html"><img class="logo" src="../resources/images/logo.jpg" alt="Home"></a></h1>
<nav>
<ul class ="main-nav">
<li><a href="2_column실습.html">News</a></li>
<li><a href="3_grid실습.html">Menu</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
<!--3. 콘텐츠 부분 만들기-->
<div class="home-content wapper">
<h2 class="page-title">Full Screen Practice</h2>
<p>
풀 스크린이란 이미지 또는 동영상을 메인으로 화면 전체에 출력하는 레이아웃입니다.
</p>
<a class="button" href="#">메뉴 보기</a>
</div>
</div>
</body>
</html>
css
@charset "UTF-8"; /* 인코딩 문자 깨짐 방지 */
html {
/* 사용자 설정 문자 크기 그대로 반영 되도록 */
font-size : 100%;
}
body {
line-height: 2.0;
color : #432;
}
a {
text-decoration: none;
}
img {
max-width: 100%;
}
/* header ---------------------------------------------- */
/* 로고 크기 및 여백 */
.logo {
width: 210px;
margin-top : 14px;
}
/* nav 메뉴 장식 */
.main-nav {
display: flex;
list-style: none;
text-transform: uppercase;
font-size: 1.25em;
margin-top: 34px;
}
.main-nav li {
margin-left : 36px;
}
.main-nav a {
color : #432;
}
.main-nav a:hover {
color : #0bd;
}
/* 로고 내비 가로 정렬 */
.page-header {
display: flex;
justify-content: space-between;
}
/* 콘텐츠의 최대 출력 너비 설정 */
.wrapper {
max-width: 1100px;
margin : 0 auto;
padding : 0 4%;
}
/* home ----------------------------------------- */
/* 배치 및 여백 설정 */
.home-content {
text-align: center;
margin-top: 10%;
}
.home-content p {
font-size: 1.125em;
margin : 10px 0 42px;
}
/* 제목 */
.page-title {
font-size: 5em;
text-transform: uppercase;
font-weight: normal;
font-family: 'Roboto Serif', sans-serif;
}
/* 버튼 */
.button {
background: #0bd;
color : white;
padding: 15px 32px;
border-radius: 5px;
font-size: 1.375em;
}
/* 큰 배경 이미지 */
.big-bg {
background-size: cover;
background-position: center top;
background-repeat: no-repeat;
}
#home {
background-image: url("../images/main-bg.jpg");
min-height: 100vh;
}
<body>
<!-- 화면을 꽉채우는 이미지 배치 -->
<div id="home" class="big-bg">
<!--2. header 만들기-->
<header class="page-header wrapper">
<!--로고 클릭시 다시 본인 페이지로 로드-->
<h1><a href="1_full-screen실습.html"><img class="logo" src="../resources/images/logo.jpg" alt="Home"></a></h1>
<nav>
<ul class ="main-nav">
<li><a href="2_column실습.html">News</a></li>
<li><a href="3_grid실습.html">Menu</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
@charset "UTF-8"; /* 인코딩 문자 깨짐 방지 */
html {
/* 사용자 설정 문자 크기 그대로 반영 되도록 */
font-size : 100%;
}
body {
line-height: 2.0;
color : #432;
}
a {
text-decoration: none;
}
img {
max-width: 100%;
}
/* header ---------------------------------------------- */
/* 로고 크기 및 여백 */
.logo {
width: 210px;
margin-top : 14px;
}
/* nav 메뉴 장식 */
.main-nav {
display: flex;
list-style: none;
text-transform: uppercase;
font-size: 1.25em;
margin-top: 34px;
}
.main-nav li {
margin-left : 36px;
}
.main-nav a {
color : #432;
}
.main-nav a:hover {
color : #0bd;
}
/* 로고 내비 가로 정렬 */
.page-header {
display: flex;
justify-content: space-between;
}
/* 콘텐츠의 최대 출력 너비 설정 */
.wrapper {
max-width: 1100px;
margin : 0 auto;
padding : 0 4%;
}
<!--3. 콘텐츠 부분 만들기-->
<div class="home-content wapper">
<h2 class="page-title">Full Screen Practice</h2>
<p>
풀 스크린이란 이미지 또는 동영상을 메인으로 화면 전체에 출력하는 레이아웃입니다.
</p>
<a class="button" href="#">메뉴 보기</a>
</div>
/* home ----------------------------------------- */
/* 배치 및 여백 설정 */
.home-content {
text-align: center;
margin-top: 10%;
}
.home-content p {
font-size: 1.125em;
margin : 10px 0 42px;
}
/* 제목 */
.page-title {
font-size: 5em;
text-transform: uppercase;
font-weight: normal;
font-family: 'Roboto Serif', sans-serif;
}
/* 버튼 */
.button {
background: #0bd;
color : white;
padding: 15px 32px;
border-radius: 5px;
font-size: 1.375em;
}
/* 큰 배경 이미지 */
.big-bg {
background-size: cover;
background-position: center top;
background-repeat: no-repeat;
}
#home {
background-image: url("../images/main-bg.jpg");
min-height: 100vh;
}
화면 구현 실습2)
▼ 전체 코드 보기 (더보기 클릭) ▼
html
<!DOCTYPE html>
<html lang="ko">
<!-- 1. head 작성 -->
<head>
<!-- meta tag : metadata(정보에 대한 정보) 제공
화면에 표시되지는 않지만 검색 엔진/브라우저에 읽힘 -->
<meta charset="UTF-8">
<!-- IE 브라우저에서 최신 표준 모드를 선택하는 문서 모드 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 뷰 포트 : 화면 상의 화상 표시 영역
데스크탑 화면과 모바일의 뷰 포트는 차이가 있음. 너비를 디바이스에 맞춤. 기본 배율 1. -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 사이트에 대한 설명 -->
<meta name="description" content="Column Practice">
<title> 2.Column 실습 </title>
<!-- CSS -->
<!-- 브라우저별로 디폴트로 적용된 CSS에 차이(여백, 폰트 크기 등)가 있어
CSS가 별도로 지정 되지 않은 요소는 브라우저별로 다르게 보일 수 있으므로
만들어져 있는 리셋 css 활용 -->
<!-- ress.css (https://github.com/filipelinhares/ress)-->
<link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
<!-- favicon (Real Favicon Generator 활용) -->
<link rel="icon" type="image/x-icon" href="../resources/images/khfavicon.ico">
<!-- 외부 스타일 시트 -->
<link href="../resources/css/style.css" rel="stylesheet" type="text/css">
<!--구글 웹 폰트-->
<link href="https://fonts.googleapis.com/css2?family=Syne+Tactile&display=swap" rel="stylesheet">
</head>
<body>
<div id="news" class="big-bg">
<!--2. header 만들기-->
<header class="page-header wrapper">
<!--로고 클릭시 다시 본인 페이지로 로드-->
<h1><a href="1_full-screen실습.html"><img class="logo" src="../resources/images/logo.jpg" alt="Home"></a></h1>
<nav>
<ul class ="main-nav">
<li><a href="2_column실습.html">News</a></li>
<li><a href="3_grid실습.html">Menu</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
<!--3. 헤더부 제목 작성-->
<div class="wrapper">
<h2 class="page-title"> News </h2>
</div>
</div>
<!-- 5. 뉴스 컨텐츠-->
<div class="news-content wrapper">
<article>
<!--세부 영역 사이사이 header를 넣을 수 있다.-->
<!-- 기사 헤더-->
<header class="post-info">
<h2 class="post-title">기사 상단에 출력될 제목입니다.</h2>
<p class="post-date">2/14 <span>2022</span></p>
<p class="post-cat">카테고리 : 기사 카테고리</p>
</header>
<!--기사 본문-->
<img src="../resources/images/tower1.PNG" alt="기사사진">
<!--6. 반응형 웹-->
<p>
<b>반응형 웹 (Responsible Web) 디자인 </b> 이란
출력 영역의 너비에 따라서 변화하게 디자인 된 웹 사이트를 의미함.
데스크탑과 모바일의 너비는 매우 다른데, 반응형 웹 디자인을 사용하면
콘텐츠를 별도로 변경하지 않고도 디바이스 크기에 따라서 CSS만으로 외관을 변경할 수 있다<div class=""></div>
</p>
<P>
<b>반응형 웹 디자인을 적용하는 방법</b> 으로는
1. 2-column, 3-cloumn 등 여러개의 컬럼이 수평적으로 정렬 되면 모바일의
작은 화면에서는 보기 힘드므로 수평으로 정렬된 칼럼을 수직으로 배치해 1-column으로
출력하는 방법
2. 네비게이션 메뉴의 경우 모바일의 작은 화면에서는 한눈에 볼 수 없으므로
처음에는 내비게이션 메뉴를 감추고 메뉴 전용 아이콘을 눌렀을때 모든 네비게이션
메뉴를 출력하여 보여주는 방법 등이 주로 사용됨.
</P>
<p>
<b>viewport란</b> 다양한 장치에서의 출력영역을 의미함
별도로 지정하지 않았을 시 모바일에서도 데스크탑과같은 너비에 맞춰서
모든 것을 출력해버리므로 글자가 너무 작아서 내용을 읽기 힘들어짐
1. viewport 너비를 전체 화면에 맞추는게 첫번째
현재 viewport는 설정이 되어있지만 레이아웃이 깨지므로 추가적인 조정이 필요함
</p>
<p>
<b>미디어 쿼리(Media Query)란</b>
웹 페이지가 출력하는 화면 크기에 따라서 다른 CSS를 적용하게 해주는 기능으로
"화면의 너비가 600px 이하 일 때 문자의 크기를 작게 만든다" 와 같이
사용자 화면 환경에 맞게 스타일 변경이 가능함
@media (max-width:600px) { p { font-size : 10px } } 와 같은 형태로 사용시
0~600px 크기의 화면에서는 p 태그의 문자 크기를 10px로 나타냄.
</p>
</article>
<!--사이드 바-->
<aside>
<h3 class="sub-title">카테고리</h3>
<ul class="sub-menu">
<li><a href="#">서브메뉴1</a></li>
<li><a href="#">서브메뉴2</a></li>
<li><a href="#">서브메뉴3</a></li>
<li><a href="#">서브메뉴4</a></li>
</ul>
<h3 class="sub-title">KH 아카데미 소개</h3>
<p>
클라우드 서버를 이용한 웹 융합 응용 SW 개발자 양성과정
클라우드 서버를 이용한 웹 융합 응용 SW 개발자 양성과정
클라우드 서버를 이용한 웹 융합 응용 SW 개발자 양성과정
클라우드 서버를 이용한 웹 융합 응용 SW 개발자 양성과정
클라우드 서버를 이용한 웹 융합 응용 SW 개발자 양성과정
</p>
</aside>
<!-- 7. 3-cloumn 레이아웃으로 변경 -->
<div class="ad">
<!--
display : flex가 지정 된 내부 박스 모두 자동으로 수평
정렬 되지만 전체 너무 조정을 위해 article 너비 수정
-->
<img src="../resources/images/banner.PNG">
</div>
</div>
<!--2. 푸터 만들기-->
<footer>
<div class="wrapper">
<p><small>© 2022 KH Academy</small></p>
</div>
</footer>
</body>
</html>
css
/* news ------------------------------------------------------- */
#news {
background-color: skyblue;
height: 270px;
margin-bottom: 40px;
}
#news .page-title {
text-align: center;
}
/* footer --------------------------------------------------- */
footer {
background: #432;
text-align: center;
padding: 26px 0;
}
footer p {
color : #fff;
}
/* news content -------------------------------------------- */
/* 기사 부분 */
article {
/* width : 74%; */
/* 2-column에서 3-column으로 변경 시 width 줄이기 */
width : 55%;
/* 컬럼 순서 변경
display : flex의 자식 요소에서 동작 */
order : 2;
}
/* 사이드바 */
aside {
width: 22%;
order : 3;
}
/* 광고 배너 */
.ad {
order : 1;
}
/* 뉴스 컨텐츠 수평 정렬 및 여백 */
.news-content {
display: flex;
justify-content: space-between;
margin-bottom: 50px;
}
/* 기사 날짜 장식 */
.post-info {
position: relative;
padding-top: 4px;
padding-bottom: 40px;
}
.post-date {
background : #0bd;
border-radius: 50%;
width : 100px;
height : 100px;
color : #fff;
font-size:1.625em;
text-align: center;
/* .post-info 기준 절대 위치 */
position: absolute;
top : 0;
padding-top : 10px;
}
.post-date span {
font-size : 1rem;
border-top : 1px rgba(255,255,255,0.5) solid;
padding-top : 6px;
display: block;
width : 60%;
margin : 0 auto;
}
.post-title {
font-family: "나눔명조", nanummyeongjo;
font-size:2rem;
font-weight: normal;
}
.post-title,
.post-cat {
margin-left: 120px;
}
article img {
margin-bottom: 20px;
}
article p {
margin-bottom: 1rem;
}
/* side bar ------------------------------------ */
.sub-title {
font-size: 1.375em;
padding : 0 8px 8px;
border-bottom: 2px #0bd solid;
font-weight: normal;
}
aside p {
padding : 12px 10px;
}
.sub-menu {
list-style: none;
margin-bottom: 60px;
}
.sub-menu li {
border-bottom : 1px #ddd solid;
}
.sub-menu a {
color : #432;
padding : 10px;
display: block;
}
.sub-menu a:hover {
color : #0bd;
}
2-1) 모바일 기준 화면 구현
/* for mobile -------------------------------------- */
/* 변경 기준이 되는 화면 크기를 브레이크 포인트라고 하며 디바이스 별로 width는 다름
450~760 정도가 기준으로 중간 정도인 600을 브레이크 포인트로 설정 */
/* 창 너비가 0~600px인 경우 */
@media (max-width:600px) {
/* 제목 문자 크기 축소 */
.page-title {
font-size : 2.5rem;
}
/* header */
/* 내비 글자 크기 및 여백 축소 */
.main-nav {
font-size : 1rem;
margin-top : 10px;
}
.main-nav li {
margin : 0 20px;
}
/* home */
/* 홈 컨텐츠의 상단 여백 증가 */
.home-content {
margin-top : 20%;
}
/* 로고와 내비 수직 정렬 */
.page-header {
/* display : flex 에서 어떤 방향으로 정렬할지 지정 */
flex-direction: column;
align-items: center;
}
/* news */
/* 뉴스 컨텐츠 수직 정렬 */
.news-content {
flex-direction: column;
}
/* 원래 2-column으로 쪼개서 차지하던 너비를 100% 차지하게 */
article,
aside {
width : 100%;
}
/* 문자 크기 및 여백 조절 */
#news .page-title {
margin-top: 30px;
}
aside {
margin-top : 60px;
}
.post-info {
margin-bottom : 30px;
}
.post-date {
width : 70px;
height : 70px;
font-size : 1rem;
}
.post-date span {
font-size : 0.875rem;
padding-top : 2px;
}
.post-title {
font-size : 1.375rem;
}
.post-cat {
font-size : 0.875rem;
margin-top : 10px;
}
.post-title,
.post-cat {
margin-left : 80px;
}
}

<body>
<div id="news" class="big-bg">
<!--2. header 만들기-->
<header class="page-header wrapper">
<!--로고 클릭시 다시 본인 페이지로 로드-->
<h1><a href="1_full-screen실습.html"><img class="logo" src="../resources/images/logo.jpg" alt="Home"></a></h1>
<nav>
<ul class ="main-nav">
<li><a href="2_column실습.html">News</a></li>
<li><a href="3_grid실습.html">Menu</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
<!--3. 헤더부 제목 작성-->
<div class="wrapper">
<h2 class="page-title"> News </h2>
</div>
</div>
/* news ------------------------------------------------------- */
#news {
background-color: skyblue;
height: 270px;
margin-bottom: 40px;
}
#news .page-title {
text-align: center;
}
/* footer --------------------------------------------------- */
footer {
background: #432;
text-align: center;
padding: 26px 0;
}
footer p {
color : #fff;
}
<!-- 5. 뉴스 컨텐츠-->
<div class="news-content wrapper">
<article>
<!--세부 영역 사이사이 header를 넣을 수 있다.-->
<!-- 기사 헤더-->
<header class="post-info">
<h2 class="post-title">기사 상단에 출력될 제목입니다.</h2>
<p class="post-date">2/14 <span>2022</span></p>
<p class="post-cat">카테고리 : 기사 카테고리</p>
</header>
<!--기사 본문-->
<img src="../resources/images/tower1.PNG" alt="기사사진">
/* 기사 부분 */
article {
/* width : 74%; */
/* 2-column에서 3-column으로 변경 시 width 줄이기 */
width : 55%;
/* 컬럼 순서 변경
display : flex의 자식 요소에서 동작 */
order : 2;
}
<!--사이드 바-->
<aside>
<h3 class="sub-title">카테고리</h3>
<ul class="sub-menu">
<li><a href="#">서브메뉴1</a></li>
<li><a href="#">서브메뉴2</a></li>
<li><a href="#">서브메뉴3</a></li>
<li><a href="#">서브메뉴4</a></li>
</ul>
<h3 class="sub-title">KH 아카데미 소개</h3>
<p>
클라우드 서버를 이용한 웹 융합 응용 SW 개발자 양성과정
클라우드 서버를 이용한 웹 융합 응용 SW 개발자 양성과정
클라우드 서버를 이용한 웹 융합 응용 SW 개발자 양성과정
클라우드 서버를 이용한 웹 융합 응용 SW 개발자 양성과정
클라우드 서버를 이용한 웹 융합 응용 SW 개발자 양성과정
</p>
</aside>
<!-- 7. 3-cloumn 레이아웃으로 변경 -->
<div class="ad">
<!--
display : flex가 지정 된 내부 박스 모두 자동으로 수평
정렬 되지만 전체 너무 조정을 위해 article 너비 수정
-->
<img src="../resources/images/banner.PNG">
</div>
/* 기사 부분 */
article {
/* width : 74%; */
/* 2-column에서 3-column으로 변경 시 width 줄이기 */
width : 55%;
/* 컬럼 순서 변경
display : flex의 자식 요소에서 동작 */
order : 2;
}
/* 사이드바 */
aside {
width: 22%;
order : 3;
}
/* 광고 배너 */
.ad {
order : 1;
}
/* 기사 날짜 장식 */
.post-info {
position: relative;
padding-top: 4px;
padding-bottom: 40px;
}
.post-date {
background : #0bd;
border-radius: 50%;
width : 100px;
height : 100px;
color : #fff;
font-size:1.625em;
text-align: center;
/* .post-info 기준 절대 위치 */
position: absolute;
top : 0;
padding-top : 10px;
}
.post-date span {
font-size : 1rem;
border-top : 1px rgba(255,255,255,0.5) solid;
padding-top : 6px;
display: block;
width : 60%;
margin : 0 auto;
}
.post-title {
font-family: "나눔명조", nanummyeongjo;
font-size:2rem;
font-weight: normal;
}
.post-title,
.post-cat {
margin-left: 120px;
}
article img {
margin-bottom: 20px;
}
article p {
margin-bottom: 1rem;
}
/* side bar ------------------------------------ */
.sub-title {
font-size: 1.375em;
padding : 0 8px 8px;
border-bottom: 2px #0bd solid;
font-weight: normal;
}
aside p {
padding : 12px 10px;
}
.sub-menu {
list-style: none;
margin-bottom: 60px;
}
.sub-menu li {
border-bottom : 1px #ddd solid;
}
.sub-menu a {
color : #432;
padding : 10px;
display: block;
}
.sub-menu a:hover {
color : #0bd;
}
/* for mobile -------------------------------------- */
/* 변경 기준이 되는 화면 크기를 브레이크 포인트라고 하며 디바이스 별로 width는 다름
450~760 정도가 기준으로 중간 정도인 600을 브레이크 포인트로 설정 */
/* 창 너비가 0~600px인 경우 */
@media (max-width:600px) {
/* 제목 문자 크기 축소 */
.page-title {
font-size : 2.5rem;
}
/* header */
/* 내비 글자 크기 및 여백 축소 */
.main-nav {
font-size : 1rem;
margin-top : 10px;
}
.main-nav li {
margin : 0 20px;
}
/* home */
/* 홈 컨텐츠의 상단 여백 증가 */
.home-content {
margin-top : 20%;
}
/* 로고와 내비 수직 정렬 */
.page-header {
/* display : flex 에서 어떤 방향으로 정렬할지 지정 */
flex-direction: column;
align-items: center;
}
/* news */
/* 뉴스 컨텐츠 수직 정렬 */
.news-content {
flex-direction: column;
}
/* 원래 2-column으로 쪼개서 차지하던 너비를 100% 차지하게 */
article,
aside {
width : 100%;
}
/* 문자 크기 및 여백 조절 */
#news .page-title {
margin-top: 30px;
}
aside {
margin-top : 60px;
}
.post-info {
margin-bottom : 30px;
}
.post-date {
width : 70px;
height : 70px;
font-size : 1rem;
}
.post-date span {
font-size : 0.875rem;
padding-top : 2px;
}
.post-title {
font-size : 1.375rem;
}
.post-cat {
font-size : 0.875rem;
margin-top : 10px;
}
.post-title,
.post-cat {
margin-left : 80px;
}
}
화면 구현 실습3)
▼ 전체 코드 보기 (더보기 클릭) ▼
html
<!DOCTYPE html>
<html lang="ko">
<!-- 1. head 작성 -->
<head>
<!-- meta tag : metadata(정보에 대한 정보) 제공
화면에 표시되지는 않지만 검색 엔진/브라우저에 읽힘 -->
<meta charset="UTF-8">
<!-- IE 브라우저에서 최신 표준 모드를 선택하는 문서 모드 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 뷰 포트 : 화면 상의 화상 표시 영역
데스크탑 화면과 모바일의 뷰 포트는 차이가 있음. 너비를 디바이스에 맞춤. 기본 배율 1. -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 사이트에 대한 설명 -->
<meta name="description" content="Grid Practice">
<title>3_grid실습</title>
<!-- CSS -->
<!-- 브라우저별로 디폴트로 적용된 CSS에 차이(여백, 폰트 크기 등)가 있어
CSS가 별도로 지정 되지 않은 요소는 브라우저별로 다르게 보일 수 있으므로
만들어져 있는 리셋 css 활용 -->
<!-- ress.css (https://github.com/filipelinhares/ress)-->
<link rel="stylesheet" href="https://unpkg.com/ress/dist/ress.min.css">
<!-- favicon (Real Favicon Generator 활용) -->
<link rel="icon" type="image/x-icon" href="../resources/images/khfavicon.ico">
<!-- 외부 스타일 시트 -->
<link href="../resources/css/style.css" rel="stylesheet" type="text/css">
<!-- 구글 웹 폰트 -->
<link href="https://fonts.googleapis.com/css2?family=Roboto+Serif&display=swap" rel="stylesheet">
</head>
<body>
<!-- 4. 화면을 꽉 채우는 배경 이미지 배치 -->
<div id="menu" class="big-bg">
<!-- 2. header 만들기 -->
<header class="page-header wrapper">
<h1><a href="1_full-screen실습.html"><img class="logo" src="../resources/images/logo.jpg" alt="HOME"></a></h1>
<nav>
<ul class="main-nav">
<li><a href="2_column실습.html">News</a></li>
<li><a href="3_grid실습.html">Menu</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
<!-- 3. 콘텐츠 부분 만들기 -->
<div class="menu-content wrapper">
<h2 class="page-title">Menu</h2>
<p>
클라우드 서버를 이용한 웹 융합 응용SW개발자 양성과정에 오신 여러분을 진심으로
환영합니다. 웹 어플리케이션 개발에 대한 기초를 다지기 위해 해당 과정에서
학습할 수 있는 하단의 메뉴를 확인해보세요.
</p>
</div>
</div>
<!-- 5. 타일형 콘텐츠 -->
<div class="grid wrapper">
<div class="item">
<img src="../resources/images/java.png" alt="Java">
<p>Java 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/oracle.jpg" alt="Oracle">
<p>Oracle 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/jdbc.png" alt="JDBC">
<p>JDBC 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/html.png" alt="HTML5">
<p>HTML5 시작하기</p>
</div>
<div class="item big-box">
<img src="../resources/images/css.png" alt="CSS3">
<p>CSS3 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/js.png" alt="JavaScript">
<p>JavaScript 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/servlets.png" alt="Servlets">
<p>Servlets & JSP 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/mybatis.png" alt="Mybatis">
<p>Mybatis 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/spring.png" alt="SpringFramework">
<p>Spring Framework 시작하기</p>
</div>
</div>
<!-- 4. 푸터 만들기 -->
<footer>
<div class="wrapper">
<p><small>© 2022 KH Academy</small></p>
</div>
</footer>
</body>
</html>
css
/* menu ----------------------------------------------------- */
#menu {
background-image: url(../images/menu-bg.jpg);
min-height: 100vh;
}
.menu-content {
max-width: 560px;
margin-top : 10%;
}
.menu-content .page-title {
text-align: center;
}
.menu-content p {
font-size: 1.125rem;
font-weight: bolder;
margin : 10px 0 0;
}
/* for mobile ----------------------------------- */
@media (max-width : 600px) {
.menu-content {
margin-top: 20%;
}
}
/* grid ----------------------------------------- */
.grid {
display: grid;
gap : 26px;
/* 처음 적용한 값 */
/* grid-template-columns: 1fr 1fr 1fr; */
/* 반응형 적용 1. 창의 너비가 작아졌을 때 이미지가 너무 작아지지 않도록 최소값 지정 */
/* grid-template-columns: repeat(3, minmax(240px, 1fr)); */
/* 반응형 적용 2. 2번째 3번째 요소가 잘려 보이므로 3열로 한정하지 않고
화면의 너비에 맞게 요소의 수 조정 */
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
margin-top: 6%;
margin-bottom: 50px;
}
.item p {
font-weight: bold;
text-align: center;
}
/* 타일형 레이아웃 변경
-> 강조하고 싶은 item에 big-box 클래스 부여 */
.big-box {
grid-column : 1/3;
grid-row : 1/3;
}
/* 큰 이미지와 작은 이미지의 높이 맞춤 */
.big-box img {
height: 94%;
/* 이미지 비율 맞춤 (자동 잘림) */
object-fit: cover;
}
/* for mobile ------------------------------- */
/* 타일형 레이아웃 변경으로 인해 폭이 좁아지면 메뉴끼리 크기가 맞지 않으므로
폭이 좁아질 경우 1-column으로 변경하기 */
@media (max-width : 600px) {
/* big-box 2개씩 자리차지하던 설정을 리셋 */
.big-box {
grid-column: auto;
grid-row : auto;
}
}
<!-- 4. 화면을 꽉 채우는 배경 이미지 배치 -->
<div id="menu" class="big-bg">
<!-- 2. header 만들기 -->
<header class="page-header wrapper">
<h1><a href="1_full-screen실습.html"><img class="logo" src="../resources/images/logo.jpg" alt="HOME"></a></h1>
<nav>
<ul class="main-nav">
<li><a href="2_column실습.html">News</a></li>
<li><a href="3_grid실습.html">Menu</a></li>
<li><a href="#">Contact</a></li>
</ul>
</nav>
</header>
<!-- 3. 콘텐츠 부분 만들기 -->
<div class="menu-content wrapper">
<h2 class="page-title">Menu</h2>
<p>
클라우드 서버를 이용한 웹 융합 응용SW개발자 양성과정에 오신 여러분을 진심으로
환영합니다. 웹 어플리케이션 개발에 대한 기초를 다지기 위해 해당 과정에서
학습할 수 있는 하단의 메뉴를 확인해보세요.
</p>
</div>
</div>
/* menu ----------------------------------------------------- */
#menu {
background-image: url(../images/menu-bg.jpg);
min-height: 100vh;
}
.menu-content {
max-width: 560px;
margin-top : 10%;
}
.menu-content .page-title {
text-align: center;
}
.menu-content p {
font-size: 1.125rem;
font-weight: bolder;
margin : 10px 0 0;
}
<!-- 5. 타일형 콘텐츠 -->
<div class="grid wrapper">
<div class="item">
<img src="../resources/images/java.png" alt="Java">
<p>Java 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/oracle.jpg" alt="Oracle">
<p>Oracle 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/jdbc.png" alt="JDBC">
<p>JDBC 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/html.png" alt="HTML5">
<p>HTML5 시작하기</p>
</div>
<div class="item big-box">
<img src="../resources/images/css.png" alt="CSS3">
<p>CSS3 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/js.png" alt="JavaScript">
<p>JavaScript 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/servlets.png" alt="Servlets">
<p>Servlets & JSP 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/mybatis.png" alt="Mybatis">
<p>Mybatis 시작하기</p>
</div>
<div class="item">
<img src="../resources/images/spring.png" alt="SpringFramework">
<p>Spring Framework 시작하기</p>
</div>
</div>
/* for mobile ----------------------------------- */
@media (max-width : 600px) {
.menu-content {
margin-top: 20%;
}
}
/* grid ----------------------------------------- */
.grid {
display: grid;
gap : 26px;
/* 처음 적용한 값 */
/* grid-template-columns: 1fr 1fr 1fr; */
/* 반응형 적용 1. 창의 너비가 작아졌을 때 이미지가 너무 작아지지 않도록 최소값 지정 */
/* grid-template-columns: repeat(3, minmax(240px, 1fr)); */
/* 반응형 적용 2. 2번째 3번째 요소가 잘려 보이므로 3열로 한정하지 않고
화면의 너비에 맞게 요소의 수 조정 */
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
margin-top: 6%;
margin-bottom: 50px;
}
.item p {
font-weight: bold;
text-align: center;
}
/* 타일형 레이아웃 변경
-> 강조하고 싶은 item에 big-box 클래스 부여 */
.big-box {
grid-column : 1/3;
grid-row : 1/3;
}
/* 큰 이미지와 작은 이미지의 높이 맞춤 */
.big-box img {
height: 94%;
/* 이미지 비율 맞춤 (자동 잘림) */
object-fit: cover;
}
/* for mobile ------------------------------- */
/* 타일형 레이아웃 변경으로 인해 폭이 좁아지면 메뉴끼리 크기가 맞지 않으므로
폭이 좁아질 경우 1-column으로 변경하기 */
@media (max-width : 600px) {
/* big-box 2개씩 자리차지하던 설정을 리셋 */
.big-box {
grid-column: auto;
grid-row : auto;
}
}
<!-- 4. 푸터 만들기 -->
<footer>
<div class="wrapper">
<p><small>© 2022 KH Academy</small></p>
</div>
</footer>
'Programming > CSS3' 카테고리의 다른 글
4. 변형/애니메이션 (0) | 2022.02.10 |
---|---|
3. 기본스타일 (0) | 2022.02.10 |
2. CSS 색상/배경 (0) | 2022.02.10 |
1. 목록/링크 스타일 (0) | 2022.02.10 |
0. CSS 기초 & 선택자 (0) | 2022.02.09 |