본문 바로가기

CSS

CSS Tutorial 1

CSS는 Cascading Style Sheets 약자이며 HTML 문서의 스타일을 꾸밀 때 사용한다.

뼈대인 HTML문서의 스타일을 정의할 뿐 아니라 다양한 디스플레이 화면들에 맞게 웹페이지의 스타일이 변형되게 할 수도 있다.

동시에 여러 부분에 스타일을 적용할 수 있게 하기에 웹페이지 제작을 쉽고 깔끔하게 할 수 있다.

CSS 문법

 


CSS Selector 종류

Element selector : <>안에 들어가는 element들을 위한 선택자이다

- 형식: element { }
- ex) h1 { }

 

Id selector :  #를 사용해 id를 지정하고 주어진 id값으로 요소를 선택하여 스타일을 적용한다

- 형식: #id name { }
ex) para1 { }

 

class selector :  많은 부분에 스타일을 한번에  지정할 때 사용하는 선택자이다

형식 :  .classname { }
ex)  p.center { }

 

Universal selector : 문서의 모든 요소에 스타일을 적용할시 사용하는 선택자이다

형식 : * { }

 

Grouping selector :  스타일을 적용시킬 요소들을 한번에 묶어서 적용시킬 수 있다

형식: element1, element2 ... { }
ex) h1, p { }

 


CSS Insertion

External CSS별도의 css 파일을 html문서와 연결시키는 방법.

<head> 섹션 안에 <link> 를 사용하여 별도의  .css 파일을 참조하게 할 수 있으며 그 별도의 파일에선 html 태그를 포함하지 않고 스타일만 적용하면 된다.

 

<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>

 

 

Internal CSS현재 페이지 전체에 스타일을 적용시킬 수 있다. html문서 <style> 섹션 안에 스타일을 정의하면 된다. 

 

<style>
body {
  background-color: linen;
}
</style>

 

 

Inline CSS한개의 요소에 직접 스타일을 적용시키는 방법이다.

 

<h1 style="color:blue; text-align:center;">This is a heading</h1>

 

※ 한꺼번에 많은 스타일을 적용시켰을 경우 더 나중에 정의된 스타일이 적용된다.

 

적용순서

  1. Inline style (inside an HTML element)
  2. External and internal style sheets (in the head section)
  3. Browser default

CSS Comments

CSS Coment : /* */

html Comment : < !-- ... -- >

CSS Colors

background-color : 배경색 

color : 글씨색 

border : 경계선  ex) border:2px solid DodgerBlue; (굵기, 종류,색)

 

RGB : rgb(red, green, blue) 

RGBA : rgba(red, green, blue, alpha)  

HEX :  #rrggbb

HSL : hsl(hue, saturation, lightness)

HSLA : hsla(hue, saturation, lightness, alpha)

 

 


CSS Background Color

background-color : 적용하는 부분에 배경색을 넣을 수 있다

 

opacity : 0.0 ~ 1.0  투명도를 결정하는데 글씨도 같이 투명해진다.

 

RGBA : RGBA를 이용해 투명도를 조절하면 글씨는 투명해지지 않는다.

CSS Background Image

background-image : 배경에 이미지를 넣을 수 있다.  background-image: url(" ");

background-position배경에 이미지를 넣을 곳을 선택할 수 있다

background-repeat 배경에 이미지를 반복해서 넣을 수 있다. 

  • repeat-x : 가로반복  /  repeat-y :  세로반복  /  no-repeat :  반복없음

CSS Background Attachment

backgound-attachment배경이미지가 스크롤 되야하는지, 고정되어있어야하는지 결정한다

  • scroll: 페이지를 스크롤하면서 같이 스크롤된다
  • fixed: 화면 한 쪽에 고정되어있어 스크롤해도 그림이 이동하지 않는다

CSS Background Shorthand

배경에 적용할 스타일을 하나하나 적는것이 아니라 한꺼번에 적용할 수도 있다.

 

body {
  background-color: #ffffff;
  background-image: url("img_tree.png");
  background-repeat: no-repeat;
  background-position: right top;
}

 

body {
  background: #ffffff url("img_tree.png") no-repeat right top;
}

 

다만 스타일을 한번에 적용시 순서를 잘 지켜야한다. 몇개의 스타일 값을 적용하지 않더라도 순서를 지켜줘야한다.

입력 순서는 다음과 같다. 

  • background-color
  • background-image
  • background-repeat
  • background-attachment
  • background-position

CSS Border Style

border : element의 경계선의 스타일을 정의한다.

border은 1개 부터 4개까지 값을 가질 수 있어 순서대로 위, 오른쪽, 아래, 왼쪽 면의 경계선에 다른 스타일을 적용 할 수 있다.

 

border-style : 경계선의 종류를 결정한다

 

CSS Border Width

border-width : 경계선의 너비를 결정한다. (in px, pt, cm, em, etc) 로 직접 결정하거나 thin, medium, or thick 을 사용해도 된다.

 

CSS Border Colors

border-color경계선의 색을 결정한다

  • name - specify a color name, like "red"
  • HEX - specify a HEX value, like "#ff0000"
  • RGB - specify a RGB value, like "rgb(255,0,0)"
  • HSL - specify a HSL value, like "hsl(0, 100%, 50%)"
  • transparent

CSS Border Sides

border은 1개 부터 4개까지 값을 가질 수 있어 순서대로 위, 오른쪽, 아래, 왼쪽 면의 경계선에 다른 스타일을 적용 할 수 있다.

border-style, border-width, border-color 에 모두 적용 가능하다

 

4개의 값을 가질때 : 위, 오른쪽, 아래, 왼쪽 순서대로 적용

3개의 값을 가질때 : 위, 오른쪽, 아래 순서대로 적용

2개의 값을 가질때 : 위, 오른쪽 순서대로 적용

1개의 값을 가질때 : 스타일이 모든 면에 다 적용

CSS Border Shorthand

CSS border도 경계선에 적용시킨 여러개의 스타일을 한번에 적용시켜 코드를 짧게 만들 수 있다

Background shorthand와 다르게 스타일을 입력해주는 순서는 없다

 

p {
  border-left: 6px solid red;
  background-color: lightgrey;
}

 

CSS Rounded Borders

border-radius : 경계선을 둥글게 만든다

 

 

Border property는 border-direction-property 의 형식으로 혼합해서 사용이 가능하다

ex) border-left-width: 15px;  /  p.dotted {border-bottom-style: dotted;}

 

 


CSS Margins

margin : element 바깥쪽 여백을 만들기 위해 사용한다. 

  • margin-top  /  margin-right  /  margin-bottom  /  margin-left   로 모든 면의 여백을 제어할 수 있고
  • auto  (수평 가운데로 자동여백) /  length ( px, pt, cm, etc )  /  percent %  /  inherit (상속)  으로 여백 범위를 조절할 수 있다

margin도 위, 오른쪽, 아래, 왼쪽 순서대로 값을 적어 한번에 여백관리를 할 수 있다.

 

4개의 값을 가질때 : 위, 오른쪽, 아래, 왼쪽 순서대로 적용

3개의 값을 가질때 : 위, 오른쪽, 아래 순서대로 적용

2개의 값을 가질때 : 위, 오른쪽 순서대로 적용

1개의 값을 가질때 : 스타일이 모든 면에 다 적용

 

※ margin은 음수 값이 허용된다.

 

p {
  margin: 25px 50px 75px 100px;
}

Margin Collapse

바깥쪽 여백은 서로 만났을때 둘 중 더 큰 여백을 정해서 하나의 여백으로 맞춰진다.

어느 element의 아래 여백 50px과 어느 element의 위 여백 20px이 만나면 둘은 더해져 70px이 되는것이 아니라 둘 중 큰 여백인 50px로 정해지게 된다.

 

※ 이 margin collapse는 위, 아래 margin에서만 발생한다

 


CSS Padding

padding : element 안쪽여백을 만들기 위해 사용한다. 

  • padding-top  /  padding-right  /  padding-bottom  /  padding-left   로 모든 면의 여백을 제어할 수 있고
  • length ( px, pt, cm, etc )  / percent %  /  inherit (상속)  으로 여백 범위를 조절할 수 있다

※ padding은 음수 값이 허용되지 않는다.

 

padding도 위, 오른쪽, 아래, 왼쪽 순서대로 값을 적어 한번에 여백관리를 할 수 있다.

 

4개의 값을 가질때 : 위, 오른쪽, 아래, 왼쪽 순서대로 적용

3개의 값을 가질때 : 위, 오른쪽, 아래 순서대로 적용

2개의 값을 가질때 : 위, 오른쪽 순서대로 적용

1개의 값을 가질때 : 스타일이 모든 면에 다 적용

 

div {
  padding: 25px 50px 75px 100px;
}

 

Padding and Element Width

width가 정해진 어떤 element에서 padding이 추가된다면 총 width와 padding의 길이가 합쳐져 여백을 만들어낼 것이다.

 

div.ex1 {
  width: 300px;
  background-color: lightsteelblue;
}

div.ex2 {
  width: 300px;
  padding: 25px;
  background-color: lightblue;
}

 

 

이 문제의 해결을 위해 box-sizing을 사용할 수 있다.

 box-sizing : element가 자신의 width를 유지할 수 있게 한다. padding을 늘린다면 컨텐츠가 들어갈 자리가 좁아지게 된다.

 

div.ex1 {
  width: 300px;
  background-color: yellow;
}

div.ex2 {
  width: 300px;
  padding: 25px;
  box-sizing: border-box;
  background-color: lightblue;
}

 

 


CSS Height and Width

height : 높이  width : 너비  를 결정한다

  • auto  (default) /  length ( px, pt, cm, etc )  /  percent % /  initial  / inherit (상속)  으로 길이를 조절할 수 있다
  • height와 width는 padding, borders, margins를 포함하지 않는다

Setting max, min

max-width : 최대 너비를 결정  min-width : 최소 너비를 결정  

max-height : 최대 높이를 결정  max-height : 최소 높이를 결정  

 

length value / percent (%) / none(default) 을 이용해 설정할 수 있다

 

어떤 요소의 최대를 지정하므로 요소의 값이 최대로 설정되거나 최소로 설정된 값보다 커지거나 작아지는것을 방지한다

※ max-width는 width 속성값을 무효화시킨다. (다른 property 모두 적용)

 


CSS Box Model

'Box model' 이라는 용어는 CSS의 디자인이나 레이아웃을 말할 때 사용된다.

CSS 박스 모델은 HTML의 모든 요소를 감싸며 margin, border, padding, content로 구성된다.

 

 

  • Content - The content of the box, where text and images appear
  • Padding - Clears an area around the content. The padding is transparent
  • Border - A border that goes around the padding and content
  • Margin - Clears an area outside the border. The margin is transparent

Width and Height of an Element

높이와 너비는 padding, margin, border 을 포함하지 않으며 오직 content area의 높이 와 너비를 결정하기 때문에 제대로 된 요소의 사이즈를 결정하기 위해선 모든 속성들을 합쳐서 계산해야한다.

 

div {
  width: 320px;
  padding: 10px;
  border: 5px solid gray;
  margin: 0;
}

320px (width) + 20px (left + right padding) + 10px (left + right border) + 0px (left + right margin) = 350px

 

총 너비 : width + left padding + right padding + left border + right border + left margin + right margin

총 높이 :  height + top padding + bottom padding + top border + bottom border + top margin + bottom margin

 


CSS Outline

outline요소 주변에 둘러진 선. border 바깥 쪽에 위치한다.

 

 

※ Outline은 border과 다른 것이며 다른 컨텐츠에 겹칠 수 있다. Outline은 element의 면적에 포함 되지 않는다

CSS Outline Style

outline-style : 아웃라인의 스타일을 결정한다

 

CSS Outline Width

outline-width : 아웃라인의 너비를 결정한다

  • thin (typically 1px)
  • medium (typically 3px)
  • thick (typically 5px)
  • A specific size (in px, pt, cm, em, etc)

CSS Outline Color

outline-color :  아웃라인의 색을 결정한다

  • name - specify a color name, like "red"
  • HEX - specify a HEX value, like "#ff0000"
  • RGB - specify a RGB value, like "rgb(255,0,0)"
  • HSL - specify a HSL value, like "hsl(0, 100%, 50%)"
  • invert - performs a color inversion (which ensures that the outline is visible, regardless of color background)

 

CSS Outline Shorthand

CSS outline도  여러개의 스타일을 한번에 적용시켜 코드를 짧게 만들 수 있다

  • outline-width  /  outline-style(required)  /  outline-color 가 적용되며 순서는 상관 없다
p.ex3 {outline: 5px solid yellow;}
p.ex4 {outline: thick ridge pink;}

CSS Outline Offset

outline-offset : 아웃라인과 border의 끝 사이에 공간을 주는 것이다. 공간과 아웃라인은 투명하다. 

 

p {
  margin: 30px;
  border: 1px solid black;
  outline: 1px solid red;
  outline-offset: 15px;
}

 

Offset을 늘려도 컨텐츠의 위치는 변하지 않고 아웃라인과 공백만 커진다.

 


'CSS' 카테고리의 다른 글

CSS Responsive  (0) 2020.07.27
CSS Advanced 2  (0) 2020.07.24
CSS Advanced  (0) 2020.07.24
CSS Tutorial 2  (0) 2020.07.24