CSS 중앙정렬 가이드

기존에 틀린 내용을 수정해서 새로운 블로그에 다시 정리해 놓은 글이 있습니다.

참고하시면 좋을 것 같습니다

https://youtaekjung.github.io/2018/04/24/css/CSS-align-center-guide/


'개발 > CSS' 카테고리의 다른 글

CSS 중앙정렬 가이드  (3) 2018.04.24
CSS 정리  (0) 2018.04.20
CSS 변수(variables)  (0) 2017.10.13
CSS 포지션(position)  (0) 2017.10.12
CSS 디스플레이(display)  (0) 2017.10.12
CSS 박스모델(box-model)  (0) 2017.10.12
  1. BlogIcon SONYLOVE 2017.04.11 14:38 신고

    가운데 정렬에 애먹었는데 도움이 되겠네요.

  2. ㅇㅇ 2017.10.24 23:03 신고

    수평정렬이 잘 안 됐는데 flex 넣으니까 그냥 되네요.. flex 짱짱
    감사합니다.

새로운 블로그에 다시 정리해 놓은 글이 있습니다.

참고하시면 좋을 것 같습니다!

https://youtaekjung.github.io/2018/04/18/css/CSS-basic/


CSS란?

Cascading Style Sheets

HTML elements를 표시하는 방법


CSS구문

h1 { color:blue; font-size:10px; }

Selector/Property+Value=Declaration

CSS Selector - HTML Element의 name,id,class,attribute 등으로 찾음

element - 그대로 작성 ex) <p> => p { }

id - #을 작성 ex) <p id="hi"> => #p { }  (이때 id값은 고유한 값을 가지며 #다음에 숫자는 작성 불가)

class - .을 작성 ex) <p clalss="hi"> => .p { } 

grouping 가능 ex) h1, h2, p { }

CSS 내에서 주석 /* */

속성값과 단위사이에 공백x ex)20px


CSS 삽입 방법

외부 스타일 시트 - <head>태그  안에 <link>로 불러옴 ex)<link rel="stylesheet" type="text/css" href="style.css">

내부 스타일 시트 - <style> 태그 안에 작성 <style> h1 { ~} </style>

인라인 스타일 시트 - 단일 요소에 고유한 태그 적용시 사용 ex)  <h1 style="~"></h1>

외부,내부가 같이 적용되면 나중에 작성한 것으로 적용

cascading order 스타일 적용 순서

1.인라인 스타일

2.외부,내부 스타일(나중에 작성된 것이 우선)

3.기본 스타일


CSS의 배경(background)

배경색:background-color:~

배경이미지:background-image: url("~");

배경반복:background-repeat:

repeat-x 가로반복

repeat-y 세로반복

no-repeat 반복x

배경배치: position: right top 오른쪽위에 배치

고정 attachment:fixed

약식 속성 background: 속성값/ 순서(color, image, repeat, attachment, position)


CSS 테두리(border)

테두리 스타일 - border-style:속성;

dotted,dashed 점선 테두리

solid 실선 테두리

double 이중 테두리

none 테두리 없음

hidden 숨겨진 테두리 정의


테두리 폭 - border-width:속성;

10px/medium/10px 10px 10px 10px(위 오른쪽 아래 왼쪽)

테두리 색상 -  border-color:속성;

테두리 다르게 지정

border-top-style: 속성1 2 3 4

>위1 오른쪽2 아래3 왼쪽4

border-top-style: 속성1 2 3

>위3 좌우1 아래2

border-top-style: 속성1 2

>위아래2 좌우1


약식 속성

border: width style(필수) color;

둥근 테두리 border-radius:10px;

CSS Outline

outline-stsyle:속성값 border와 동일

border와 outline의 차이

border는 옵션만큼 크기증가, outline은 테두리만 생기는 것 outline은 레이아웃에 영향x


CSS 여백(margin)

margin-top(bottom right lefrt): 속성(자동, 길이, %, 상속) 음수 사용 가능

약식 속성 margin:top속성 right속성 bottom속성 left속성

자동값 margin: auto;  중앙에배치됨

상속값 margin: inherit; 부모요소에서 상속

축소 상하단에만적용


CSS 패딩(padding)

컨텐츠에 공간 생성


CSS 높이,너비

height, width

max-width: 최대너비


CSS 박스모델

margin>border>padding>content


CSS 텍스트(text)

text-align 수평정렬 속성(center, left, right)

justify 속성 - 각 라인이 동일한 폭을 가짐

text-decoration:none 텍스트의 장식 제거 주로 하이퍼링크 밑줄제거로 사용

text-transform 대문자,소문자 지정 uppercase, lowercase, capitalize

text-indent: 10px 들여쓰기

letter-spacing:3px; 문자 사이의 간격 음수가능

word-spacing: 단어 사이의 간격

line-height: 줄 사이의 공간

direction: rtl; 텍스트 방향 변경


CSS 글꼴(font)

font-family: 글꼴 조합

font-style: normal일반, italic이탤릭체, oblique기울임

font-size 절대크기10px, 상대크기100% 1em=16px

font-weight: normal, lighter, bold, 900등으로 설정

font-variant: normal, small-caps(작은 대문자)

약식: font: style variant weight size/height family


CSS 링크(link)

색상 설정

a:link 방문하지않은 링크 

a:visited 방문한 링크

a:hover 마우스오버

a:active 클릭


CSS 목록(list)

list-style-type: circle, square, upper-roman, lower-alpha

list-style-position: inside, outside 마커가 내부,외부에 표시

list-style-image: url('~~') 목록 마커 이미지

약식 list-style: type position image


CSS 테이블(table)

table을 border-collapse:collapse을 사용해 테두리를 한줄로 축소, seperate 분리

width height 특성으로 너비,높이 설정

text-align:left 수평정렬

vertical-align:bottom 수직정렬

caption-side:bottom 캡션을 테이블에 추가

empty-cells: hide 빈 캡션 숨기기

-webkit-filter: ~,filter: ~ 화상 조절


CSS 레이아웃(layout)

'개발 > CSS' 카테고리의 다른 글

CSS 중앙정렬 가이드  (3) 2018.04.24
CSS 정리  (0) 2018.04.20
CSS 변수(variables)  (0) 2017.10.13
CSS 포지션(position)  (0) 2017.10.12
CSS 디스플레이(display)  (0) 2017.10.12
CSS 박스모델(box-model)  (0) 2017.10.12

CSS 변수(variables)

SASS로는 변수를 사용해 본 적이 있는데,

CSS에서는 직접적으로 사용해 본 기억이 없어서 찾아보고 포스팅 해보려 함

사용법

자바스크립트에서는 변수를 선언할 때 ES5는 var, ES6는 let, const를 사용하는데

CSS 변수를 자바스크립트와 비교해보면 const와 비슷한 역할을 한다고 보면 된다.

굳이 한번 정한 변수의 값을 바꿀 일이 없기 때문.

예시를 통해 이해해보면,

페이지 전역에서 가져다 쓸 수 있는 #FFC600이란 색상값을 base 라는 이름으로 변수화 하고 싶다면 아래와 같이 작성하면 된다.

:root {
    --base: #FFC600;
}

:root는 HTML 요소 중 가장 상위 요소에 적용한다는 뜻이고,

--base는 base라는 CSS 변수를 생성한다는 뜻이다.

위와같이 :root에 변수를 선언하는 것은 전역변수를 생성한다는 뜻이다.

선언한 CSS 변수를 호출하기 위해서는 다음과 같이 쓴다

.h1 {
    color: var(--base);
}

위와같이 선언한 변수를 가져올때는 var(--변수명)로 호출하면 된다.

끝으로

요즘은 CSS를 그냥 쓰는 경우보다는,

SASS와 같은 CSS 전처리기를 사용해 보다 효율적으로 코드를 작성 할 수 있다.

조만간 포스팅 하지 않을까.. 싶다

오늘은 공부도 많이 못해서 너무 급하게 포스팅한 티가 팍팍난다.

내일은 열심히 해야게땅

5/159


'개발 > CSS' 카테고리의 다른 글

CSS 중앙정렬 가이드  (3) 2018.04.24
CSS 정리  (0) 2018.04.20
CSS 변수(variables)  (0) 2017.10.13
CSS 포지션(position)  (0) 2017.10.12
CSS 디스플레이(display)  (0) 2017.10.12
CSS 박스모델(box-model)  (0) 2017.10.12

CSS position

각 요소의 배치 방법

CSS에서 까다로운 부분중 하나이며 매우 중요!

position: static(기본값)

기본적인 요소의 배치순서에 따라 배치

top, bottom, left, right 를 사용 할 경우 무시

position: relative(상대위치)

기본 위치(static 기준)으로

top, bottom, left, right 를 사용해 이동

position: fixed(고정위치)

부모 요소에 관계없이 브라우저 표시영역을 기준으로

top, bottom, left, right 를 사용해 이동

스크롤을 이동해도 항상 같은 위치에 고정

보통 상단에 고정된 네비바나,

쇼핑몰같은 세로로 긴 페이지시 우측하단에 고정된 최상단 이동 버튼을 만들 때 사용한다.

position: absolute(절대위치)

가장 가까이 있는 부모 요소(static 제외)를 기준으로 top, bottom, left, right 만큼 이동한다.

즉 relative, absolute, fixed 속성이 선언되어 있는 부모 요소를 기준으로 위치가 결정된다.

만일 부모 요소가 static인 경우, body를 기준으로 하여 좌표 속성대로 위치하게 된다.

끝으로

활용할 수 있는 곳은 일반적으로 박스 위에 다른 박스를 위치시키고 싶을 때,

부모 요소에 relative, 자식 요소에 absolute를 주고 left, top으로 이동시키면 된다.

마찬가지로 직접 해보면서 익히는것이 가장 좋다.

4/159

'개발 > CSS' 카테고리의 다른 글

CSS 정리  (0) 2018.04.20
CSS 변수(variables)  (0) 2017.10.13
CSS 포지션(position)  (0) 2017.10.12
CSS 디스플레이(display)  (0) 2017.10.12
CSS 박스모델(box-model)  (0) 2017.10.12
CSS reset  (0) 2017.06.09

CSS display

layout을 설정할 때 자주 사용되는 중요한 속성!

기본적으로 HTML 요소는 block 또는 inline 속성을 가짐

block 속성?? inline 속성??

아래서 자세히 설명하겠지만, 이해를 돕기 위해 먼저 간단히 설명하면

block-level Element

내용이 있는 그 자체로 한 줄을 완전히 차지함
ex) <div>, <p>, <form>

inline-level Element

내용이 있는 만큼만 영역을 차지
ex) <span>, <a>, <button>, <input>


위에서 설명한 block-level Element는 display: block,

inline-level Element는 display: inline 속성을 기본으로 가지고 있다.

웹 사이트는 필요한 태그를 용도에 맞게 사용해야 하는데, 모든 태그는 위에서 설명한 것 처럼 display 속성을 가지고 있어, 스타일링을 하면서 변경을 해줘야 하는 순간이 있다.

display 속성의 종류

display: block

흔히 사용하는 div, p 태그를 떠올리면 된다.

특징으로는

  1. 화면 전체 가로폭을 차지
  2. 항상 새로운 라인에서 시작
  3. width, height, padding, margin 설정 가능

이 때 일반적인 경우라면 margin-left는 적용이 되지만,

margin-right는 적용이 되지 않을 것이다.

이유를 생각해보면 단순하다.

block 속성은 한줄 전체를 차지하기 때문에 margin-right가 적용되지 않는 것이다.

주의할 점은 width, height 값을 따로 주지 않았을 때

자식의 width 값은 부모의 width 값을 상속받고,

부모의 height 값은 자식의 height 값을 상속받는다.

말로는 헷갈릴 수 있지만, 머릿속으로 그려보면서 이해하면 당연한 내용이란걸 알 수 있다.

display: inline

흔히 사용하는 a, span 태그를 떠올리면 된다.

특징으로는

  1. content의 너비만큼 가로폭 차지
  2. 줄 바꿈 없이 다른 요소와 함께 배치 가능
  3. width, height 설정 불가능
  4. 상하 여백은 line-heigh, padding 속성으로 지정

별로 헷갈릴 내용이 없고, 컨텐츠의 너비만큼 길이를 가진다는게 전부이다.

display: inline-block

여기부터는 기본적으로 태그가 가진 속성이 아니다.

개인적으로 프로젝트를 하면 이 속성을 가장 많이 쓰는 것 같다.

특징으로는

  1. block과 inline의 특징을 모두 가짐
  2. inline 과같이 한 줄에 표현 가능
  3. width, height, padding, margin 설정 가능
  4. line-height 사용 가능

주의사항은 이 속성을 사용하면 좌우에 4px의 마진이 생기는데,

CSS-reset을 통해 미리 마진을 지워주고 작업하는게 좋다.

가장 많이 쓰는 부분이 컨텐츠를 div로 감쌌을 때, 너비 전체를 차지하게는 안하고 싶다면 inline-block 속성을 주면 된다.

물론 width, height, padding, margin을 잡아줘야 모양이 제대로 나온다.

display: none

그냥 화면에서 아예 안보임

visibility: hidden과의 차이는 display: none은 아예 있어야할 공간 조차 사라짐.

끝으로

CSS는 많이 코드를 쳐보면 쳐볼수록 이해가 더 잘되고, 빨리 습득 할 수 있으니, 직접 쳐보고 차이를 느껴보는게 가장 좋은 방법인 것 같다.

4/159


'개발 > CSS' 카테고리의 다른 글

CSS 변수(variables)  (0) 2017.10.13
CSS 포지션(position)  (0) 2017.10.12
CSS 디스플레이(display)  (0) 2017.10.12
CSS 박스모델(box-model)  (0) 2017.10.12
CSS reset  (0) 2017.06.09
CSS flex-box 재미있게 익히기  (0) 2017.04.24

CSS 박스모델(box-model)

box-model 이란?

CSS Box Model은 요소를 위해 생성되고 비주얼 서식 모델을 따라 배치되는 사각형 박스(패딩 및 마진 포함)를 정의하는 CSS 모듈입니다.

라고 MDN에 친절하게 적혀있고,

구글 개발자도구에서 흔히 볼 수 있는 그 모양이다.

왜 알아야 하는가?

보통 개발을 하면서 시안에 맞게 코드를 작성 하는데도,

이상하게 시안과 다른 결과물이 브라우저에 잡히게 된다.

대부분의 이유는 박스모델에 대한 이해가 부족해 생기는 일이다.

예시를 통한 이해

만약 디자이너가 박스의 너비를 800px, border 를 1px solid red로 만들어달라 했다.

그래서

.box {
    width: 800px;
    border: 1px solid red;
}

위와 같이 작성을 할 것이고,

기분좋게 새로고침을 딱 해서 너비값을 찍어보면 우리가 기대한 800px이 아닌 802px이 잡힌다.

왜일까?

기본적으로 브라우저는 width값을 content-box의 너비라고 생각하기 때문에, 브라우저에서 보는 박스의 너비는 width(800px)에 양 옆 border(1px)씩을 더한 802px이 된다.

그러면 우리는 디자이너 시안에 맞추기 위해 width를 800px이 아닌 798px로 적어줘야 하는건가?

페이지에 픽셀을 계산해야 하는 부분이 한두곳이 아니기 때문에 상당한 비효율 그 자체다.

대안

페이지 전역에 들어가는 CSS 파일에 아래와 같은 스타일을 먹여주면 된다.

* {
    box-sizing: border-box;
}

모든 태그의 박스 사이징의 기준을 border로 본다는 뜻이다.

그러면 아까와 같은 상황에서 브라우저는 width를 content-box가 아닌 border-box로 보기 때문에

양 옆의 margin 1px씩을 뺀 798px이 자동으로 content-box의 너비가 되고 총 박스의 너비는 800px이 된다.

설명 만으로는 이게 왜 중요한가 와 닿지 않을 수 있는데,

실질적으로 프로젝트를 하다 보면 필요성을 자연스럽게 느낄 것이고, 그 때 사용하면 될 것!

4/159


'개발 > CSS' 카테고리의 다른 글

CSS 포지션(position)  (0) 2017.10.12
CSS 디스플레이(display)  (0) 2017.10.12
CSS 박스모델(box-model)  (0) 2017.10.12
CSS reset  (0) 2017.06.09
CSS flex-box 재미있게 익히기  (0) 2017.04.24
CSS / float를 clear하는 방법 네가지(clearfix)  (0) 2017.04.13

CSS reset

CSS reset이란?

브라우저마다 각 태그에 대한 속성들이 약간씩 다르기 마련인데, 이를 초기화 시키고 작업해 모든 브라우저에서 동일하게 작동하도록 만드는 방법

직접 코드를 작성할 수도 있지만, 다른 사람들이 만들어 놓은 보일러 플레이트 중에 유명한 것을 가져옴

Eric Meyer’s “Reset CSS” 2.0

/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
    display: block;
}
body {
    line-height: 1;
}
ol, ul {
    list-style: none;
}
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: '';
    content: none;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}

'개발 > CSS' 카테고리의 다른 글

CSS 포지션(position)  (0) 2017.10.12
CSS 디스플레이(display)  (0) 2017.10.12
CSS 박스모델(box-model)  (0) 2017.10.12
CSS reset  (0) 2017.06.09
CSS flex-box 재미있게 익히기  (0) 2017.04.24
CSS / float를 clear하는 방법 네가지(clearfix)  (0) 2017.04.13

http://flexboxfroggy.com/


개구리를 플렉스속성으로 배치하면서 쉽게 익혀볼 수 있습니다.

마지막까지 깬다면 고수로 거듭날 수 있습니다ㅋㅎ


'개발 > CSS' 카테고리의 다른 글

CSS 포지션(position)  (0) 2017.10.12
CSS 디스플레이(display)  (0) 2017.10.12
CSS 박스모델(box-model)  (0) 2017.10.12
CSS reset  (0) 2017.06.09
CSS flex-box 재미있게 익히기  (0) 2017.04.24
CSS / float를 clear하는 방법 네가지(clearfix)  (0) 2017.04.13

float을 clear하는 방법(clearfix)

마크업 후에 CSS작업을 하다보면 가장 많이 겪는 순간이 상단 네비게이션바를 만들 때 float속성으로 원하는 곳에 배치를 하면 그 다음에 오는 태그들의 위치가 뭉개지는 경우가 허다한데
원래 float 뒤에 포지션이 뭉개지는 현상은 브라우저상의 오류로 생겨난 것이고, 이를 해결하는 clearfix는 위의 오류를 해결하기 위해 똑똑한 분들이 만들어낸 일종의 버그해결 방법이다.

clearfix의 네 가지 방법

  1. 가상 요소 ::after 사용(권장)
  2. overflow속성 사용
  3. 빈 엘리먼트로 clear속성 적용
  4. float로 대응

하지만 1번 방법만 알고 사용하면 되기 때문에 나머지는 간략하게 설명하겠음

1. 가상 요소 ::after 사용

우선 가상 선택자가 무엇인지 알아보면,
가상 클래스(class)와 가상 요소(element)를 편의상 함께 칭할 때 사용하며, 정식 명칭은 아님.

가상 클래스(Pseudo-class)는 요소에 직접적으로 클래스를 부여하지는 않았지만, 요소의 상태에 따라서 클래스를 적용한 것처럼 효과를 다르게 줄 수있다.
가장 많이 쓰는 예시는 a태그의 효과를 바꾸기 위해 a:hover, a:link 이고, 이때 a뒤에 쓰인 :hover, :link를 가상 클래스라고 한다.

가상 요소(Pseudo-elements)는 말 그대로 가상의 요소를 만들고 내용을 넣어 출력하겠다는 것이다. 보통 ::after, ::before을 자주 사용한다.

CSS2.1에서는 가상 클래스와 가상 요소 모두 싱글콜론(:)을 사용했지만, CSS3 부터는 둘을 구분하기 위해 가상 클래스는 싱글콜론(:), 가상 요소는 더블콜론(::)을 사용한다.

그럼 ::after로 어떻게 clearfix를 하는지 알아보면
float 속성을 적용한 요소의 부모요소에 ::after를 사용해주면 된다.
예시로 nav태그 안에 h1태그는 float: left, ul태그에 float: right가 적용되어 있다면, 다음과 같이 작성해주면 된다.

nav::after {
    content: '';
    dispaly: table;
    clear: both
}

무슨 뜻인지 알아보면
nav 태그 뒤에 내용이 빈(content: '') 테이블을(display: table) 만들고, float: left, float: right를 초기화 시키겠다는 뜻이다.
이렇게 작성을 해주면 nav태그 뒤에 다른 내용을 작성을 하면 위로 딸려올라가지 않고 nav태그 다음에 위치하게 된다.

여기서 display: table 대신 display: block을 쓰는 것도 가능하고,
clear: left를 쓰면 float: left를, clear: right를 쓰면 float: right를 초기화 한다는 뜻인데 항상 clear: both를 사용해도 상관이 없다.

2. overflow속성 사용

위와 마찬가지로 float를 가진 요소의 부모 요소에 overflow: hidden 또는 overflow: auto를 적용시켜주면 된다.
overflow: auto 사용시 자식의 너비가 부모의 너비보다 크다면 가로 스크롤바가 생기고,
overflow: hidden의 경우 넘치는 부분이 잘리기 때문에 사용하지 않는것이 좋음.

3. 빈 엘리먼트로clear속성 적용

1번에 설명한것과 비슷한 개념인데 위에서는 가상 요소를 사용했지만 이 방법은 빈 태그를 만들어 클래스에 clear: both; height: 0; overflow: hidden;을 적용해 높이가 0인 보이지 않는 태그를 만들어 clear: both float를 해제하는 방법인데, 의미없는 태그를 만들어 사용하는 것이므로 사용하지 않는것이 좋음.

4. float로 대응

float속성을 가진 자식요소의 부모요소에 똑같이 float를 적용해 주는 방법인데 반응형 웹에 적합하지 않으므로 사용하지 않는것이 좋음

결론

그냥 1번빼고 다른것은 ‘이런게있구나~’ 하고 넘기고 1번만 잘 사용할줄 알면 문제없이 포지셔닝의 고수가 되어있을 것이다!
그리고 이러한 모든 고민은 flex-box를 사용하면 부질없는 행동이었음을 다시한번 깨닫기 때문에, flex-box를 공부해 사용하는것을 추천!(다음에 포스팅 해보도록 하겠습니다)

'개발 > CSS' 카테고리의 다른 글

CSS 포지션(position)  (0) 2017.10.12
CSS 디스플레이(display)  (0) 2017.10.12
CSS 박스모델(box-model)  (0) 2017.10.12
CSS reset  (0) 2017.06.09
CSS flex-box 재미있게 익히기  (0) 2017.04.24
CSS / float를 clear하는 방법 네가지(clearfix)  (0) 2017.04.13

+ Recent posts