2. 스타일시트 적용

기본 레이아웃이 구성된 우베 페이지에 스타일시트를 하나씩 적용해 보겠습니다.


2.1 초기화


초기화 부분에서는 [코드 14-2]의 요소를 초기화 합니다. 종합 예제에서도 언급했듯이 태그에 적용되는 기본 스타일이 조금씩 다른 문제를 해결하려면 스타일을 강제로 지정해야 합니다.


<코드 14-2> 초기화 코드


<!-- 초기화 -->

<style>

* {

margin: 0; padding: 0;

font-family: Malgun Gotic', sans-serif;

}


a { text-decoration: none; }

img { border: 0; }

li { list-style: none; }

html { background: #f7f5f5; }

</style>



2.2 헤더 구성


헤더는 [코드 14-3]처럼 구성합니다. 7장에서 다룬 '절대 위치를 사용해 요소를 중앙에 배치'를 적용해 제목을 중간에 위치시키고, float 속성을 사용해 각 메뉴를 양쪽에 배치합니다. 부모 태그에 height 속성을 강제로 부여했으므로 overflow 속성은 별도로 입력하지 않았습니다. 또 header title 태그에 text-indent 속성을 부여해 기존의 내부 글자 Interest를 화면에서 보이지 않도록 처리합니다.(대신 그림 Interest가 보입니다.


<코드 14-3> 헤더 스타일


<!-- 헤더 -->

<style>

#main-header {

height: 40px;

background: #faf7f7;

position: relative;

}


.header-search-form { float: left; }

.header-menu { float: right; }

.heaer-title {

position: absolute;

width: 200px; height: 40px;

left: 50%; margin-left: -100px;

background: url('logo.png');

background-repeat: no-repeat;


text-indent: -9999px;

}

</style>


2.3 풀다운 메뉴 구성


이제 풀다운 메뉴를 구성합니다. 풀다운 메뉴는 [코드 14-4]처럼 작성합니다. 이전 장에서 살펴본 내용이므로 어렵지 않을 것입니다. 스타일시트에서는 스타일만 적용하고, 자바스크립트에서는 보이거나 보이지 않게 동작을 설정합니다.


<코드 14-4> 풀다운 메뉴 스타일


<!-- 풀다운 메뉴 -->

<style>

.outer-menu {

float: left;

width: 100px; height: 20px;

line-height: 20px;

padding: 10px 0;

position: relative;

text-align: center;


font-size: 13px;

font-weight: bold;


z-index: 9999;

}

.outer-menu:hover { background: #E1DFDF; }


.inner-menu {

display: none;

background: #FFFFFF;

margin-top: 10px;

width: 100%;


border-top: 1px solid #cccaca;

box-shadow: 0 2px 4px rgba(34, 25, 25, 0.5);

}


.inner-menu a{

display: block;

padding: 5px 10px;

z-index: 5000;

}

.inner-menu a:hover { background: #E1DFDF; }

</style>


2.4 네비게이션 구성


이번 예제의 네비게이션 목록은 굉장히 간단합니다. li 태그를 Inline 방식으로 지정하고 text-align 속성을 부여해서 중앙에 정렬합니다.


<코드 14-5> 내비게이션 메뉴 스타일


<!-- 내비게이션 메뉴 -->

<style>

#main-navigation {

height: 30px;

background: #faf7f7;

border-top: 1px solid #cfcaca;

box-shadow: 1px 3px 3px rbga(34, 25, 25, 0.4);

}


#main-navigation > ul {

overflow:hidden;

text-align: center;

}


#main-navigation > ul > li {

display: inline;


padding: 0 5px;


line-height: 30px;

font-size: 13px;

color: #524D4D;

text-shadow: 0 1px 1px white;

}


#main-navigation > ul > li:hover {

background: #E1DFDF;

border-radius: 2px;

}

</style>


이어서 검색 양식은 종합 예제에서 만들었던 검색 양식을 크기만 바꿔 활용합니다.


<코드 14-6>


<!-- 검색 양식 -->

<style>

.header-search-form {

height: 26px;

padding: 7px;

}


.input-search {

display: block;

float: left;


background-color: #FFFFFF;

border: 1px solid #CCCCCC;

border-radius: 15px 0 0 15px;

box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);


width: 120px; height: 24px;

padding: 0 0 0 10px;

font-size: 12px;

color: #555555;

}


.input-search:focus {

border-color: rgba(82, 168, 236, 0.8);

outline: 0;

box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);

}


.input-search-submit {

display: block;

float: left;


width: 50px; height: 26px;

border-radius: 0 15px 15px 0;

border: 1px solid #CCCCCC;


margin-left: -1px;


vertical-align: top;

display: inline-block;

}

</style>


2.5 웹 페이지 구성


이제 타임 형식으로 배치되는 각 종이 스타일을 구성합니다.  masonry 플러그인을 사용하므로 웹 페이지의 너비를 정확하게 입력하는 것이 중요합니다. .paper 태그의 width 속성을 190px로 적용하고, padding 속성을 양쪽으로 각각 15px을 적용합니다. 따라서 .paper 태그의 전체너비는 220px 입니다.


<코드 14-7> 종이 스타일


<style>

.paper {

width: 190px;

margin-top: 10px;

padding: 15px 15px 0;

font-size: 11px;

background: #FFFFFF;

box-shadow: 0 1px 3px rgba(34, 25, 25, 0.4);

}


.paper-content {

margin: 0 -15px;

margin-top: 10px;

padding: 10px 15px;

background: #F2F0F0;

overflow: hidden;

}


.paper-description {

margin: 10px 0;

}


.paper-link {

display: block;

float: left;

}


.paper-text {

float: left;

width: 150px;

margin-left: 10px;

}

</style>


.paper 태그들이 위치하는 #main-section 태그는 [코드 14-8]처럼 작성합니다. 미디어 쿼리를 지원하지 않는 웹 브라우저는 width 속성을 920px로 지정합니다. 그리고 너비마다 각각의 width 속성을 지정합니다.


<코드 14-8> 섹션 스타일


<!-- 섹션 -->

<style>

/* 미디어 쿼리르 지원하지 않는 웹 브라우저 */

#main-section {

width: 920px;

margin: 0 auto;

}


/* 세 줄 */

@media (max-width: 919px) {

#main-section { width: 690px; }

}


/* 네 줄 */

@media (min-width: 930px) and (max-width: 1149px) {

#main-section { width: 920px; }

}


/* 다섯 줄 */

@media (min-width: 1150px) and (max-width: 1379px) {

#main-section { width: 1150px; }

}


/* 여섯 줄 */

@media (min-width: 1380px) {

#main-section { width: 1380px; }

}

</style>


2.6 라이트박스 구성


이젠 마지막으로 #darken-background 태그와 #lightbox 태그를 설정해 라이트박스를 처리합니다.


<코드 14-9> 라이트박스 스타일


<!-- 라이트박스 -->

<style>

#darken-background {

position: absolute;

top: 0; left: 0; right: 0;

height: 100%;


display: none;

background: rgba(0, 0, 0, 0.9);

z-index: 10000;

overflow-y: scroll;

}


#lightbox {

width: 700px;

margin: 20px auto; padding: 15px;


border: 1px solid #333333;

border-radius: 5px;

background: white;

box-shadow: 0 5px 5px rgba(34, 25, 25, 0.4);


text-align: center;

}


.user-information { overflow: hidden; text-align: left; }

.user-information-image { float: left; width: 70px; }

.user-information-text { float: right: width: 620px; }

.lightbox-splitter { margin: 10px 0; }

</style>


NOTE_ 스크롤이 2개인 것은 자바스크립트로 해결합니다.



#darken-background 태그는 전체 화면 크기로 배경색을 검은색으로 지정하고, #lightbox 태그는 width 속성과 margin 속성을 사용해 중앙에 정렬합니다.


TAGS.

Comments