css는 사용하기 쉽고 간편한 언어이지만 제대로 구성하고 잘 사용하기는 쉽지 않습니다.

css를 작성하고 링크시킬때 보통 head테그 안에 link를 사용해서 각각 css를 연결해주는 경우가 많습니다.

 

<link href="style.css" rel="stylesheet" />

 

혼자 사용하는 개인사이트일 경우에는 위와 같이 사용해도 문제가 없지만

하지만 대형프로젝트일 경우 여러명의 사람들이 동시에 작업해서 올리게 되면 충돌이 자주 일어나고 유지보수하는 상황에서도 스타일을 바로 찾기가 힘들어 집니다. 

 

그래서 css를 모듈화 하는 경우가 많습니다. 

화면별로 css를 나누어서 협업시에도 동시에 작업할수 있도록 해줍니다.

 

그리고 css 선택자를 작성할때 bem방식이나 대시를 사용하는것도 개인적으로 비추천합니다.

그런 방식들은 클래스로 검색시에 찾을수 없는 경우가 있고 더블클릭으로 복사 붙여넣기도 어렵습니다.

 

클래스 작성은 다른선택자와 겹치지 않게 독창적으로 사용하되 직관적으로 알수 있게끔 만들어야 합니다.

사실 클래스명 정하는게 제일 어렵죠.. 이건 다음번에 다시 이야기 하도록 하고 css 구조로 돌아가봅니다.

 

보통 유지보수를 위해서 @import를 많이 사용합니다. 

화면에 link 를 하나만 걸어두고 link된 스타일은 import만을 위한 스타일로만 사용합니다. 

 

<link href="main.css" rel="stylesheet" />

 

그럼 main.css 에는 컴퍼넌트화 된 css 파일만을 불러오기위한 css파일이 완성됩니다.

 

/* mixin */

/* 믹스인등 scss함수 */


/* plugin */

/* 외부 프레임워크 */
@import url(bulma.css);
@import url(chartist.min.css);
@import url(MonthPicker.css);

/* base */

/* 리셋 폰트 타이포 등 */
@import url(reset.css);
@import url(font.css);

/* layout */

/* 메인페이지, 서브공통으로 들어가는 기본구조 */
@import url(layout.css);

/* components */

/* 버튼,인풋,모달,페이징,탭 등 컴퍼넌트 */
@import url(components.css);

/* pages */

/* 추가로 이 페이지에서만 레이아웃이 달라질때 구분해서 작성 */

/* helper */

/* 색상, 사이즈, 여백등 강제적으로 고정시켜야 할때 헬퍼클래스 사용 */

 

 

위 샘플은 제가 작업할때 나누어 놓은 것으로 각자의 프로젝트에 맞춰서 가감해서 사용하시면 됩니다.

 

위와같은 방식으로 main.css를 작성하고 각각 하위  css에 스타일을 작성하면 됩니다.

이렇게 여러파일로 나누어서 작성하는 이유는 여러사람이 동시에 작업하기 편하고 충돌을 줄일수 있으며 스타일을 찾기 쉬워서 한눈에 관리하기 쉬워집니다.

 

css 기본구조를 작성하는게 어렵지만 처음에 구조를 잘 파악하고 지금 하고 있는 프로젝트에 어떤 것이 더 필요하고 어떤것은 필요없는지 잘 생각해서 처음에 잘 짜놓으면 앞으로의 작업이 수월해 집니다.

 

 

 

가장 간단하면서도 훌륭한 방법 : CSS3를 이용한 방법 

  

html { background: url(images/bg.jpg) no-repeat center center fixed; -webkit-background-size: cover;-moz-background-size: cover;-o-background-size: cover;background-size: cover;} 

  

지원브라우저 

Safari 3+ 
Chrome Whatever+ 
IE 9+ 
Opera 10+ (Opera 9.5 supported background-size but not the keywords) 
Firefox 3.6+ 
  

애석하게도 IE9 밑으로는 반쪽짜리 코딩이다. 
해보면 알겠지만, 배경이미지 사이즈가 100% 되긴하는데, 브라우저 창의 크기에 따라 이미지가 작아지거나 커지지 않는다. 웹표준에 맞춘 브라우저들은 모두 잘 돌아간다. 

CSS를 이용하거나  jQuery 를 이용한 더 진화된 방법을 소개하는 곳이 있으니 다른 방법을 보시려면 아래 링크를 보시면 됩니다. 

http://css-tricks.com/perfect-full-page-background-image/






'웹 퍼블리싱 > Css' 카테고리의 다른 글

css 아키텍쳐 구성하기  (0) 2024.03.11
CSS 구글웹폰트 사용하기  (0) 2015.07.17
CSS에 대해 잘 알려져있지 않은 12가지 사실  (0) 2015.07.16

웹폰트를 만들어서 사용하는 것보다 웹폰트를 제공하는 사이트를 이용하는게 훨씬 편합니다. 간단한 코드 몇 줄로 바로 적용시킬 수 있습니다. 

대표적인 웹폰트 제공 사이트는 Google Fonts입니다. 600개가 넘는 웹폰트가 있으며, 누구나 무료로 사용할 수 있습니다. 
http://www.google.com/fonts 

하지만, 여기에는 영어 글꼴만 있습니다. 한글을 비롯한 영어 이외의 글꼴은 Google Fonts Early Access로 가야합니다. 
http://www.google.com/fonts/earlyaccess 

Ctrl+F로 찾기를 열고 Korean으로 검색합니다. 제일 처음 나오는 한글 웹폰트는 Hanna입니다. 



글꼴 설명과 함께 두 줄의 코드가 있습니다. 

@import url(http://fonts.googleapis.com/earlyaccess/hanna.css); 
글꼴을 사용할 수 있게 불러오는 코드입니다. CSS 코드 제일 위에 입력하면 됩니다. 

font-family: 'Hanna', serif; 
글꼴을 사용하는 예제 코드입니다. 글꼴 이름을 Hanna로 하면 글꼴을 사용할 수 있다는 뜻입니다. 

간단한 예는 다음과 같습니다. 

<!doctype html> 
<html lang="ko"> 
  <head> 
    <meta charset="utf-8"> 
    <title>CSS | Google Font</title> 
    <style> 
      @import url(http://fonts.googleapis.com/earlyaccess/hanna.css); 
      h1 {font-family: 'Hanna';} 
    </style> 
  </head> 
  <body> 
    <h1>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h1> 
  </body> 
</html> 


Google Fonts Early Access에는 현재 총 6개의 한글 글꼴이 있습니다. 위의 예제에서 사용한 하나 글꼴과 나눔고딕, 나눔고딕코딩, 나눔명조, 나눔손글씨붓, 나눔손글씨펜입니다. 

각 글꼴을 한 번에 볼 수 있는 예제는 다음과 같습니다. 

<!doctype html> 
<html lang="ko"> 
  <head> 
    <meta charset="utf-8"> 
    <title>CSS | Google Fonts</title> 
    <style> 
      @import url(http://fonts.googleapis.com/earlyaccess/hanna.css); 
      @import url(http://fonts.googleapis.com/earlyaccess/nanumbrushscript.css); 
      @import url(http://fonts.googleapis.com/earlyaccess/nanumgothic.css); 
      @import url(http://fonts.googleapis.com/earlyaccess/nanumgothiccoding.css); 
      @import url(http://fonts.googleapis.com/earlyaccess/nanummyeongjo.css); 
      @import url(http://fonts.googleapis.com/earlyaccess/nanumpenscript.css); 
      .hn {font-family: 'Hanna';} 
      .nbs {font-family: 'Nanum Brush Script';} 
      .ng {font-family: 'Nanum Gothic';} 
      .ngc {font-family: 'Nanum Gothic Coding';} 
      .nm {font-family: 'Nanum Myeongjo';} 
      .nps {font-family: 'Nanum Pen Script';} 
    </style> 
  </head> 
  <body> 
    <h1 class="hn">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h1> 
    <h1 class="nbs">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h1> 
    <h1 class="ng">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h1> 
    <h1 class="ngc">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h1> 
    <h1 class="nm">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h1> 
    <h1 class="nps">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</h1> 
  </body> 
</html>




1. color는 글자에만 적용되는 게 아니다. 
- 이미지가 없을 때의 대체 텍스트 색상 
- 기본 보더 색상 
- 목록 엘리먼트의 불릿 기호 또는 숫자 마커의 색상 
- hr 엘리먼트의 선 색상 
등으로도 적용된다고 합니다. 

2. visibility 속성에는 collapse 값도 설정할 수 있다. 
테이블 내부 요소에 한해 visibility : collapse를 설정하면 display : none과 같이 동작한다고 합니다(즉 공간을 차지하지 않는다는 얘기). 하지만 브라우저마다 동작이 다르고 특히 크롬에서는 visibility : hidden 처럼 동작합니다. 

3. background 단축 속성에 3가지 값을 더 쓸 수 있다. 
CSS3에서는 background-size, background-origin, background-clip 속성도 background 속성에 추가할 수 있습니다. 단, CSS3에 추가된 속성을 사용하려면 앞에 슬래시를 붙여야 한다고 합니다. 

4. clip 속성은 엘리먼트가 절대 좌표일 때만 동작한다. 
position: absolute 혹은 fixed 인 경우에 한해서만 적용된다고 합니다. 
5. 수직 공간(위 또는 아래)에 대한 퍼센트는 높이가 아닌 너비에 비례한다. 
margin-top/bottom, padding-top/bottom에 퍼센트를 쓰면 너비에 비례해서 값이 바뀌네요. 왜 이렇게 만든 걸까요… 
6. border는 인셉션 같다. 
border는 단축 속성인데 알고 보면 border에서 설정할 수 있는 각 속성들도 사실은 또 단축 속성이고… 

7. text-decoration은 단축 속성이 됐다. 
새로운 스펙에 따라 선 종류, 선 색상, 선 스타일을 한꺼번에 설정할 수 있다. 현재는 파이어폭스만 지원한다. 

8. border-width 속성에는 medium, thin, thick 같은 키워드도 사용할 수 있다. 

9. border-image는 아무도 안 쓴다. 
데모에서 박스 크기 바꿔보면 안 쓰는 이유를 알 것도 같네요. -_-;; 
10. empty-cells 라는 속성도 있다. 
테이블의 빈 셀을 보여줄건지 / 아닌지 설정할 수 있는 속성. 심지어 IE8부터 모든 브라우저가 다 지원하네요. 
11. font-style 속성에는 oblique라는 값도 있다. 
우리가 “이탤릭”이라고 알고 있던 기울임꼴은 사실 oblique가 맞는 거고, 원래 “이탤릭”이라고 불리는 글꼴은 따로 있네요(위키피디아 Oblique Type 참고). “진짜 이탤릭”을 지원하는 폰트가 있다면 기대했던 모양과 달라질 수 있으니 현재 사용되고 있는 이탤릭체에 적절한 값은 olbique가 더 맞다는 얘기입니다. 
12. word-wrap은 overflow-wrap과 같다. 
word-wrap이 되려면 단어 단위로 줄이 바뀌어야 되는데 지금은 그냥 정해진 영역을 넘어간 내용을 자르고 있으므로 overflow-wrap과 같이 동작한다는 뜻입니다. 용어가 혼란스럽게 잘못 만들어졌다는 얘기인데, CSS 워킹 그룹의 Incomplete List of Mistakes in the Design of CSS (CSS 설계상의 실수)라는 글을 읽어보면 같은 내용이 나옵니다. W3C에서도 word-wrap을 overflow-wrap으로 대체하기로 했다고 하네요.

'웹 퍼블리싱 > Css' 카테고리의 다른 글

css 아키텍쳐 구성하기  (0) 2024.03.11
css 배경이미지 100%로 설정하는 방법  (0) 2015.07.17
CSS 구글웹폰트 사용하기  (0) 2015.07.17

+ Recent posts