본문 바로가기
안드로이드 웹앱 콘테츠 개발자 양성(국비지원)/HTML+ CSS

HTML+CSS (기초) 홈페이지 만들기 스타일 시트 적용 (media 이용, 기능 없음)

by 차누감 2019. 12. 10.
반응형

<최종 화면> 하나의 html문에 모바일, 데스크탑용 두개의 스타일 시트 적용

600px 이하는 모바일 css가 적용되고, 600px 이상일 시 데스크탑용 css 파일이 적용된다.


우선 최종 화면과 같이 만들기 위해 위에서 부터 글을 작성한다.

텝 메뉴처럼 보이는 메뉴 이름을 ul의 li로 만들자.

article요소는 각각 독립적인 내용을 담을때 사용한다.

이미지 3개를 article요소로 묶고 그안에 배치에 따라 첫 큰이미지 1개, 수평 배열이 된 이미지2개는 section요소로 묶겠다.

footer는 원래는 이미지로 하지 않는다. (브라우저가 늘어나면 깨짐 현상 발생)

예제이므로 그냥 이미지로 대체함.

이제 html에 글을 다 작성하였으면, css로 스타일을 적용하겠다. 미리 만들 company.css 파일을 링크한다.

이제 company.css 파일을 만들자.

우선 기본적으로 요소에 들어가 있는 padding과 margin을 없애자. 

(의도와 다르게 적용이 되므로 처음에 모든 요소 padding, margin = 0으로 초기화하고 시작.

header는 메뉴바처럼 생긴 것으로 보면 된다.

(.html에서 header안에 logo, top_menu, nav가 들어가 있다.) 

header가 부모 역할이기 때문에, position: relative를 주고

자식들의 position : absolute주면 부모를 기준으로 위치가 지정된다.

(만약 header의 position: absolute를 주면 웹 브라우저 좌측 상단(0,0)을 기준을 위치 지정된다.)

top_menu를 header기준으로 위, 오른쪽 정렬을 하고 20px,10px만큼 margin을 준다.

네비게이션 메뉴도 적절하게 배치하자.

이제 li요소들을 가로로 배치하기 위해 인라인 요소로 바꿔주자.

글씨가 잘 보이기 위해서, 글씨 색을 흰색으로 하겠다.

최종 화면을 보면 2개 이미지가 가로로 배치된 것을 알 수 있다. 인라인 속성으로 바꾸자.

footer의 사이즈를 헤더와 맞추고, 예제에서는 가운데 배치를 했는데 이미지 사이즈가 작아서 양 옆이 비었다..

그것을 맞추려고 배경색(이미지와 같은색 #f1f1f1)을 주었다. 

홈페이지를 보면 웹 브라우저 기준으로 왼쪽으로 딱 붙어 있다. 전체적으로 가운데로 오는 것이 보기 좋으므로 정렬해주자.

아래 사진을 보면 웹 브라우저 중간에 배치된 것을 알 수 있다.

이제 모바일용 스타일 시트를 만들어서 적용하자.

(화면이 작은 디바이스용 스타일)

차이점은 대부분 company.css와 비슷하고, li요소를 인라인으로 바꾸지 않았다. 

그리고 2개 이미지도 가로로 배치를 했는데, 모바일에서는 인라인으로 바꾸지 않아서 한줄씩 수직 배열되게 한 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
*{margin: 0; padding: 0;}
ul{list-style: none;}
a{text-decoration: none;}
 
header{
    width: 100%;
    background-color: #2d3a4b;
    position: relative;
}
 
#log{
    padding-top: 30px;
    padding-left: 30px;
 
}
 
#top_menu{
    position: absolute;
    right: 10px;
    top: 20px;
    color: white;
}
#top_menu a{color: white;font-size: 14px;}
 
nav{
    border-top: 1px solid white;
    border-bottom: 1px solid white;
    margin-top: 10px;
}
 
nav li{
    line-height: 3em;
    border-bottom: 1px solid #223344;
}
 
nav li a{
    color: white;
    display: block;
    text-align: center;
}
 
nav li a:hover{
    background-color: white;
    color: black;
}
 
#content #main img{ width: 100%; border: 1px solid gray;}
 
#content #banner li{
    border-bottom: 1px solid gray;
}
#content #banner li a{
    display: block;
    text-align: center;
}
 
footer{padding: 0px 10px;}
footer img{width: 100%;}
 
 

600px 이하는 모바일 css가 적용되고, 600px 이상일 시 데스크탑용 css 파일이 적용된다.

<최종 화면>


<복붙용 코드>

company.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Company</title>
 
    <!-- 반응형 웹 만들기 -->
    <!-- 1. 모바일용 css -->
    <link rel="stylesheet" href="./company_mobile.css" media="(max-width:600px)">
 
    <!-- 2. 데스크탑용 외부 스타일시트 적용 -->
    <link rel="stylesheet" href="./company.css" media="(min-width:600px)">
</head>
<body>
    
    <div id="page">
 
        <header>
            <div id="logo">
                <img src="./imgs_company/logo.png" alt="Logo">
            </div>
 
            <div id="top_menu">
                <a href="#">HOME</a> | 
                <a href="#">NOTICE</a> |
                <a href="#">LOGIN</a> |
                <a href="#">JOIN</a>
            </div>
 
            <nav>
                <ul>
                    <li><a href="#">COMPANY</a></li>
                    <li><a href="#">PRODUCT</a></li>
                    <li><a href="#">CUSTOMER</a></li>
                    <li><a href="#">SERVICE</a></li>
                    <li><a href="#">RECRUIT</a></li>
                </ul>
            </nav>
 
        </header>
 
        <article id="content">
            <section id="main">
                <img src="./imgs_company/main_img.png" alt="main img">
            </section>
            <section>
                <ul id="banner">
                    <li><a href="#"><img src="./imgs_company/banner1.png" alt="banner1"></a></li>
                    <li><a href="#"><img src="./imgs_company/banner2.png" alt="banner2"></a></li>
                </ul>
 
            </section>
 
        </article>
 
        <footer>
            <img src="./imgs_company/address.png" alt="address">
        </footer>
 
    </div>
</body>
</html>
 

company.css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
*{margin: 0px; padding: 0px;}
ul{list-style: none;} /* 리스트 앞에 . 같은거 제거*/
a{text-decoration: none;} /* 링크에 밑줄 같은거 제거*/
 
header{
    width: 800px; /*메인 이미지의 너비 사이즈와 같음*/
    height: 95px;
    background-color: #2d3a4b;
 
    /* header 안에 요소들을 모두 absolute 포지션으로 배치할 것이라서 */
    /* absolute 요소가 header의 좌상단을 기준으로 하려면 */
    /* header의 position이 relative 여야만 함 */
    position: relative;
}
 
/* 제목영역안에 있는 메인 로고 이미지 위치 지정 */
#logo{
    position: absolute;
    top: 30px;
    left: 30px;
 
}
 
/* 제목영역안에 오른쪽 상단에 top_menu 배치 */
#top_menu{
    position: absolute;
    top: 20px;
    right: 10px;
    color: white;
}
 
/* top_menu a의 글시 하얀색으로 */
#top_menu a{color: white;}
 
/* 헤더 영역안에 네비게이션 메뉴 배치 */
nav{
    position: absolute;
    bottom: 10px;
    left: 220px;
    font-size: 16px;
}
 
nav li{
    display: inline;
    margin-left: 30px;
}
 
nav li a{color: white;}
 
/* 콘텐츠 영역의 알래에 있는 배너 이미지 inline으로 */
#content li{
    display: inline;
    margin-left: 50px;
}
/* footer 영역 */
footer{
    width: 800px; /*헤더와 같은 사이즈*/
    height: 90px;
    margin-top: 20px;
    text-align: center;
    background-color: #f1f1f1;
}
 
/* 전체 페이지가 가운데로 오도록 */
#page{width: 820px; margin: 0px auto;}

company_mobile.css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
*{margin: 0; padding: 0;}
ul{list-style: none;}
a{text-decoration: none;}
 
header{
    width: 100%;
    background-color: #2d3a4b;
    position: relative;
}
 
#log{
    padding-top: 30px;
    padding-left: 30px;
 
}
 
#top_menu{
    position: absolute;
    right: 10px;
    top: 20px;
    color: white;
}
#top_menu a{color: white;font-size: 14px;}
 
nav{
    border-top: 1px solid white;
    border-bottom: 1px solid white;
    margin-top: 10px;
}
 
nav li{
    line-height: 3em;
    border-bottom: 1px solid #223344;
}
 
nav li a{
    color: white;
    display: block;
    text-align: center;
}
 
nav li a:hover{
    background-color: white;
    color: black;
}
 
#content #main img{ width: 100%; border: 1px solid gray;}
 
#content #banner li{
    border-bottom: 1px solid gray;
}
#content #banner li a{
    display: block;
    text-align: center;
}
 
footer{padding: 0px 10px;}
footer img{width: 100%;}
 
 

 

 

반응형

댓글